
1) 【一句话结论】采用“两地三中心”架构(主生产中心+同城灾备中心+异地灾备中心),结合实时CDC(秒级同步)与异步日志复制(分钟级同步),通过双活部署与补偿机制,确保7x24可用,RPO≤1分钟,RTO≤30分钟,数据一致性通过事务提交与校验保障。
2) 【原理/概念讲解】老师解释:灾备架构是为了应对生产系统故障,保证业务连续性。异地灾备分同城(低延迟,如同城灾备中心)和异地(跨城市,如异地灾备中心)。数据同步策略:
3) 【对比与适用场景】
| 特性 | 实时同步(CDC) | 异步同步(日志复制) |
|---|---|---|
| 定义 | 捕获生产库变更日志,实时推送到灾备库 | 生产库Binlog写入消息队列,灾备库消费 |
| 延迟 | 秒级(RPO接近0) | 分钟级(RPO≥1分钟) |
| 容错性 | 低(网络中断导致数据丢失) | 高(队列缓冲,故障不丢失数据) |
| 成本 | 高(需CDC工具、高带宽) | 低(仅需消息队列,成本较低) |
| 使用场景 | 实时交易系统(如支付、清算) | 跨城市同步、网络不稳定场景 |
4) 【示例】(异步同步伪代码)
生产库写入Binlog:
INSERT INTO transaction_table (id, amount, time) VALUES (1, 100, NOW());
Binlog写入Kafka:
producer.send('transaction_binlog', key='transaction_1', value=binlog_data)
灾备库消费Kafka:
def consume_binlog():
for message in consumer:
binlog_data = message.value
apply_sql(binlog_data) # 应用Binlog到灾备库
5) 【面试口播版答案】(约90秒)
“面试官您好,针对资金系统7x24灾备需求,我设计的方案核心是‘两地三中心’架构(主生产中心+同城灾备中心+异地灾备中心),结合实时CDC与异步日志复制,确保数据一致性和业务连续性。数据同步分两部分:实时同步用Debezium捕获生产库变更日志,秒级推送到同城灾备库;异步同步用Kafka+Binlog,延迟约1-5分钟。恢复流程通过心跳监控检测故障,自动切换至同城灾备库(RTO≤30分钟),若同城故障则切换至异地灾备库(RTO≤60分钟)。可用性保障:主备系统双活部署,服务器、网络、存储冗余;数据一致性通过事务提交确认(资金交易提交后实时同步)+ 补偿机制(异步延迟时补录)保障。该方案兼顾实时性、可用性与成本,满足资金系统7x24服务要求。”
6) 【追问清单】
7) 【常见坑/雷区】