
1) 【一句话结论】交易系统灾备需根据业务风险设定合理RPO(如秒级数据丢失)和RTO(如分钟级恢复),采用多活热备架构(如两地三中心),通过实时数据同步(如binlog复制)实现数据一致性,结合自动化切换流程(如心跳检测+故障转移),确保系统在灾难发生时快速恢复业务。
2) 【原理/概念讲解】
首先解释关键概念:
灾备架构分为三类:
数据同步方式:
3) 【对比与适用场景】
| 架构类型 | 定义 | 数据同步方式 | RPO | RTO | 适用场景 |
|---|---|---|---|---|---|
| 热备 | 主备实时同步,故障自动切换 | 实时同步(binlog/CDC) | 低(秒级) | 低(分钟级,切换后秒级恢复) | 对数据一致性要求极高,业务不可中断(如交易所交易系统) |
| 冷备 | 主备数据定期同步,切换需恢复数据 | 定期备份(增量/全量) | 高(小时级/天级) | 高(小时级/天级,切换后需恢复数据) | 业务允许短时间中断,数据丢失可接受(如非核心系统) |
| 温备 | 主备数据定期同步,切换需少量恢复 | 增量备份(每小时) | 中(分钟级) | 中(小时级,切换后需恢复少量数据) | 介于热备与冷备之间,部分业务允许中断(如部分交易系统) |
4) 【示例】
假设采用“上海主中心-北京灾备中心”的热备架构,数据同步通过数据库binlog实时复制。
def start_binlog_replication():
while True:
binlog = get_latest_binlog_from_master() # 获取主库最新binlog
apply_binlog_to_slave() # 应用到灾备库
time.sleep(1) # 模拟实时同步
def monitor_system_health():
while True:
if is_master_down(): # 检测主库故障
trigger_failover() # 触发故障转移
break
time.sleep(5) # 心跳检测间隔
5) 【面试口播版答案】
面试官您好,关于交易系统的灾备方案,核心思路是根据业务风险设定RPO和RTO。首先,RPO(数据丢失量)我们设定为秒级,比如允许最多1秒内的数据丢失,因为交易数据每秒产生,若允许1秒丢失,业务影响可接受;RTO(恢复时间)设定为分钟级,比如30分钟内恢复系统运行。架构上采用两地三中心的热备模式,主中心(上海)与灾备中心(北京)通过数据库binlog实时同步数据,确保数据一致性。切换流程是自动化检测:通过心跳检测主中心状态,一旦检测到故障,自动触发故障转移,将流量切换到灾备中心,整个过程由自动化脚本控制,减少人工干预,保证切换效率。这样既能保证数据不丢失,又能快速恢复业务,满足交易所对系统高可用性的要求。
6) 【追问清单】
7) 【常见坑/雷区】