
1) 【一句话结论】为满足99.99%高可用性,采用“跨地域多活部署+实时数据同步(跨地域主从复制+异步补齐)+分级备份(全量+增量+日志备份)”的容灾方案,通过模拟故障+负载压力的压力测试,验证故障切换时间(RTO≤3秒)、数据一致性(RPO≤1秒)及系统服务能力。
2) 【原理/概念讲解】高可用性(HA)指系统在故障时仍能提供服务,容灾方案核心是减少单点故障。故障类型分为数据库故障(主库宕机)、网络故障(主节点断网)、应用故障(服务崩溃)。容灾类型:
3) 【对比与适用场景】
| 容灾方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 主从热备 | 主节点处理请求,备节点实时同步数据 | 故障切换秒级,数据实时一致,需负载均衡 | 对切换时间要求高(如金融系统) | 备节点资源利用率低,成本高 |
| 多活部署 | 多节点同时处理请求,通过冲突解决机制处理数据冲突 | 无单点故障,故障切换秒级,需负载均衡+冲突解决 | 对可用性要求极高(如港口核心系统) | 需解决数据冲突(如最终一致性),成本高 |
| 冷备 | 备节点不工作,故障后恢复分钟级 | 成本低,资源利用率高 | 对可用性要求低(如非核心系统) | 恢复时间长,不适合高可用场景 |
4) 【示例】假设系统为试验检验Web应用,部署3个核心节点(大连主节点A,上海备节点B/C),数据库用TiDB(分布式数据库,支持跨地域主从复制),应用服务用Spring Boot,负载均衡用Nginx的LVS模式。故障场景:
def update_test_record(id, version, new_data):
try:
record = db.get(id, version)
if record.version != version:
raise ConflictError("数据冲突")
db.update(id, new_data, version + 1)
except ConflictError:
update_test_record(id, record.version, new_data)
备份流程:全量备份用Percona XtraBackup在凌晨执行,恢复时间约2小时;增量备份用TiDB的增量日志同步,每小时同步,恢复时间约30分钟。
5) 【面试口播版答案】面试官您好,针对试验检验系统99.99%高可用性需求,我设计的容灾方案是“跨地域多活部署+实时数据同步+分级备份”:部署大连主节点(A)和上海备节点(B、C),通过Nginx LVS负载均衡分发请求,确保无单点故障;数据库用TiDB跨地域主从复制(主节点写入后,备节点实时同步),网络故障时通过负载均衡心跳检测(1秒检测一次)快速切换(切换时间≤3秒,满足RTO);数据冲突用乐观锁(版本号)解决,避免试验数据不一致;备份方面,每天全量备份(恢复约2小时),每小时增量备份(恢复约30分钟)。压力测试方面,用JMeter模拟1000并发用户持续1小时,同时模拟主节点断网,记录响应时间(≤2秒)、错误率(≤1%),并验证数据一致性(故障切换后查询试验记录,主备节点数据一致,RPO≤1秒)。这样能验证系统在故障下的高可用性。
6) 【追问清单】
7) 【常见坑/雷区】