
1) 【一句话结论】为保障资产管理系统7x24稳定运行,采用“主备+多活”混合高可用架构,结合异地灾备中心(通过专线+多路径网络)与异步数据同步(如MySQL GTID复制+CDC工具),并设计自动化故障检测与切换流程,目标是将故障恢复时间(RTO)控制在分钟级,数据丢失(RPO)控制在秒级内。
2) 【原理/概念讲解】老师:咱们先拆解核心概念,高可用架构分“主备”和“多活”,容灾靠“异地灾备”加数据同步。
3) 【对比与适用场景】
| 项目 | 主备架构 | 多活架构 | 同步数据同步 | 异步数据同步 |
|---|---|---|---|---|
| 定义 | 一主多备,主处理请求,备同步数据 | 多节点同时处理请求,负载均衡 | 数据实时同步,主备数据秒级一致 | 数据异步复制,延迟存在(如1-5分钟) |
| 特性 | 单点故障,切换快(秒级),备节点利用率低 | 负载均衡,高并发,节点间数据一致性复杂 | 保障数据一致性,但主节点CPU/I/O负载增加(约10-20%) | 性能高,延迟容忍,需定期校验一致性 |
| 使用场景 | 核心交易(如资产核销、资金划转),对实时性要求高 | 高并发查询(如用户资产查询、报表生成),高并发场景 | 本地故障需秒级恢复(如核心业务) | 灾备,延迟容忍(如备份) |
| 注意点 | 需考虑备节点成本,切换时可能丢失少量数据(异步切换) | 需解决分布式事务(如两阶段提交),避免数据不一致 | 需优化主节点性能,避免同步导致性能瓶颈 | 需定期同步校验(如每小时),避免数据丢失 |
4) 【示例】(主备切换流程伪代码):
# 心跳检测与故障切换
while True:
# 主节点向备节点发送心跳(如每秒一次)
send_heartbeat(master_node, standby_node)
time.sleep(1)
# 故障检测
if not receive_heartbeat_from_master():
# 切换为master
become_master()
# 通知负载均衡器切换
notify_load_balancer()
# 同步数据(从备节点拉取或推入)
sync_data_from_standby()
# 请求处理(负载均衡分发)
def handle_request(request):
target_node = load_balancer.get_node()
if target_node.is_master():
return target_node.process(request)
else:
# 备节点处理请求(如查询、非核心操作)
return target_node.process(request)
5) 【面试口播版答案】
面试官您好,为保障资产管理系统7x24稳定运行,我设计的高可用架构采用“主备+多活”混合模式,结合异地灾备。具体来说,系统部署多套主备节点(如主节点1+备节点1,主节点2+备节点2),通过负载均衡器分发请求。主备节点间通过异步数据同步(如MySQL GTID复制+CDC工具),延迟控制在分钟级内,确保数据一致性。当主节点故障时,备节点通过心跳检测(每秒一次)自动切换,故障恢复流程包括:1. 故障检测(心跳超时);2. 切换(备节点接管,切换时间约3秒);3. 通知(通过监控平台通知运维);4. 数据同步(从备节点拉取数据,恢复一致性)。容灾方案采用异地灾备中心(通过专线+多路径网络连接),数据同步采用异步复制,定期(每小时)进行同步校验,确保本地故障时,灾备中心能快速接管,业务无中断,故障恢复时间(RTO)控制在分钟级,数据丢失(RPO)控制在秒级内。
6) 【追问清单】
7) 【常见坑/雷区】