
1) 【一句话结论】交易系统灾备方案需结合同城(低RPO/RTO,实时同步)和异地(高RPO/RTO,定时同步)灾备,通过数据同步、切换流程及验证机制,平衡数据一致性、系统可用性与成本,保障业务连续性。
2) 【原理/概念讲解】灾备的核心是故障时快速恢复业务。
3) 【对比与适用场景】
| 维度 | 同城灾备 | 异地灾备 |
|---|---|---|
| 定义 | 同一城市部署的灾备系统 | 跨城市部署的灾备系统 |
| RPO | 极低(0-1分钟,实时同步) | 较高(5-30分钟,定时同步) |
| RTO | 短(秒级-分钟级,实时切换) | 长(小时级-天级,定时切换) |
| 数据同步 | 实时同步(数据库binlog、消息队列) | 定时同步(全量+增量备份) |
| 适用场景 | 高频交易(如秒级响应) | 中低频交易(如分钟级响应) |
| 注意点 | 网络延迟、同步延迟可能导致数据不一致;成本较高 | 带宽、时延、数据传输成本较高;切换时间较长 |
4) 【示例】
def sync_data_from_master():
while True:
try:
with DatabaseConnection('master'):
changes = fetch_binlog_changes()
with DatabaseConnection('standby'):
apply_changes(changes)
except Exception as e:
log_error(e)
# 重试逻辑
def failover():
if not is_master_available():
if check_data_consistency():
switch_to_standby()
notify_stakeholders()
5) 【面试口播版答案】(约90秒)
“面试官您好,交易系统灾备方案需分同城和异地两部分。同城灾备采用实时数据同步(如数据库binlog复制),RPO接近0,RTO秒级,适合高频交易;异地灾备用定时同步(每日凌晨全量备份+增量),RPO分钟级,用于跨城市灾难恢复。切换流程是:主库故障时,先校验灾备库数据一致性(比对关键表数据),确认后切换应用连接,再通知各方。验证机制包括数据一致性检查(定期比对主备库)、业务压力测试(模拟高并发切换)、灾备系统可用性测试(定期演练)。核心是通过不同方案组合,平衡数据一致性和恢复速度,保障系统高可用。”
6) 【追问清单】
7) 【常见坑/雷区】