
1) 【一句话结论】针对干部培训系统考试/直播高峰期(假设并发量百万级,数据量TB级),设计容灾方案,核心指标RTO≤5分钟(恢复时间目标)、RPO≤10分钟(恢复点目标),通过“多级数据备份(全量+增量+日志)、动态负载均衡(Nginx+会话保持)、自动化故障转移(集群自愈)”实现服务连续性,确保高峰期故障时快速恢复。
2) 【原理/概念讲解】
首先明确容灾的核心指标:RTO(恢复时间目标)是故障后系统恢复时间,RPO(恢复点目标)是数据丢失时间。
3) 【对比与适用场景】
| 方式 | 定义 | RTO(恢复时间) | 使用场景 | 注意点 |
|---|---|---|---|---|
| 全量备份 | 定期完整备份系统数据 | 30-60分钟(非高峰期) | 非高峰期或数据量小 | 占用存储空间大,备份时间长 |
| 增量备份 | 仅备份自上次备份以来新增/修改的数据 | 5-15分钟(高频更新) | 考试答题、直播互动(高频写) | 恢复需结合全量+增量 |
| 日志备份 | 基于数据库事务日志,记录所有变更 | 1-5分钟(精确到事务点) | 高并发写操作(如考试系统) | 需数据库支持事务日志,成本较高 |
| LVS | Linux虚拟服务器,基于IP/端口/协议 | <1秒(集群模式) | 千万级用户 | 配置复杂,需内核支持 |
| Nginx | 反向代理,支持轮询、权重、IP哈希(会话保持) | 1-3秒(健康检查后) | 中小规模,会话保持 | 需定期维护,配置错误导致故障 |
| HAProxy | 高性能代理,支持会话保持、健康检查 | 1-2秒 | 需会话保持(如登录状态) | 配置复杂,需监控状态 |
4) 【示例】
upstream exam_cluster {
server 192.168.1.10:80 weight=3; # 主服务器,权重高
server 192.168.1.11:80 weight=2; # 备用服务器
server 192.168.1.12:80 weight=1; # 第三台
# 健康检查(每秒检查一次)
server 192.168.1.10:80 fall_back=1;
server 192.168.1.11:80 fall_back=1;
server 192.168.1.12:80 fall_back=1;
# 会话保持(IP哈希)
hash $remote_addr;
hash_key 1m;
sticky on;
}
server {
listen 80;
server_name exam.system.com;
location / {
proxy_pass http://exam_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 会话保持
proxy_cookie_name JSESSIONID;
proxy_cookie_path / /;
proxy_set_header Cookie $http_cookie;
}
}
function check_health(server_ip):
return is_server_up(server_ip) and is_response_ok(server_ip)
function failover():
# 检查主服务器健康
if not check_health("192.168.1.10"):
# 切换到备用服务器
switch_to("192.168.1.11")
log("主服务器故障,已切换到备用服务器,时间:当前时间")
send_alert("故障转移成功")
else:
continue
# 主循环
while true:
failover()
sleep(1) # 每秒检查一次
5) 【面试口播版答案】
“面试官您好,针对干部培训系统在考试或直播高峰期(假设并发量百万级,数据量TB级)可能出现服务中断,我设计的容灾方案核心是确保RTO≤5分钟、RPO≤10分钟,通过“多级数据备份(全量+增量+日志)、动态负载均衡(Nginx+会话保持)、自动化故障转移(集群自愈)”实现服务连续性。首先,数据备份:采用全量备份(非高峰期完整数据保护)、增量备份(高频数据变更同步,如考试答题)、日志备份(精确恢复到事务点,应对高并发写操作);然后,负载均衡:用Nginx作为反向代理,配置轮询+权重+IP哈希(会话保持),将请求分发到多台服务器,避免单点过载;最后,故障转移:采用集群自愈机制,主服务器故障时自动切换到备用服务器,触发健康检查,确保切换后服务正常。这样,高峰期即使主服务器故障,也能通过负载均衡分散压力,故障转移快速恢复,保障用户体验。”
6) 【追问清单】
7) 【常见坑/雷区】