1) 【一句话结论】
核心资产管理系统的高可用架构采用“主备+多活”双活模式,灾备方案遵循金融行业标准(RTO≤5分钟,RPO≤15分钟),采用“同城双活+异地容灾”,通过负载均衡、数据库双活、缓存集群、消息队列等实现关键组件冗余,确保7x24小时不间断服务。
2) 【原理/概念讲解】
老师讲解:高可用(HA)是指系统故障时业务不中断,灾备(DR)是指故障后快速恢复。冗余分三类:
- 硬件冗余:如双服务器、双网络卡,避免单点故障(类比医院双医生,主医生忙或生病时,副医生立刻接手,保证业务不中断);
- 软件冗余:如双进程热备,故障时自动接管(类比备用手术团队,随时待命,切换时间秒级);
- 数据冗余:如主从复制、日志同步,保证数据不丢失(类比银行账本双本,主本写,副本同步,避免账本丢失,数据一致性)。
负载均衡(如Nginx)分发请求,避免单点压力;数据库双活(主主复制)实现读写分离与故障切换;缓存集群(Redis主从+哨兵)故障自动选举;消息队列(Kafka集群)故障自动选举leader。金融行业要求RTO≤5分钟(故障后切换时间)、RPO≤15分钟(数据丢失量),需实时同步(同城)和定期备份(异地)。
3) 【对比与适用场景】
| 模式 | 定义 | 特性 | 使用场景 | 注意点 |
|---|
| 主备(Active-Standby) | 一主一备,备机不处理业务,故障时切换 | 备机空闲,切换快(秒级),资源利用率低 | 切换时间要求严格(如金融核心系统) | 备机需实时同步数据,避免数据不一致 |
| 主从(Master-Slave) | 主库写、从库读,故障时主库切换 | 读写分离,从库可扩展,数据延迟(秒级) | 读多写少场景(如查询频繁) | 从库数据延迟,需考虑一致性 |
| 多活(Active-Active) | 多节点同时处理业务,负载均衡 | 负载均衡,故障时部分节点切换,资源利用率高 | 高并发场景(如大型互联网应用) | 需分布式事务保证数据一致性(如Seata) |
4) 【示例】
请求示例:用户查询资产信息,请求被Nginx负载均衡分发到多活节点(Server1),Server1从MySQL双活主库读取数据,缓存到Redis集群,返回结果。若Server1故障,Nginx切换到备节点(Server2),Server2从MySQL双活主库读取数据,Redis集群自动同步数据。灾备方面,同城部署两套系统,数据库通过Binlog实时同步(网络带宽10Gbps),缓存通过数据同步(Redis哨兵模式),故障时负载均衡器秒级切换(RTO≤1秒);异地部署一套容灾系统,通过每日全量备份(RPO≥24小时)+实时增量备份(RPO分钟级,如使用MySQL GTID+Binlog),结合自动化恢复脚本,确保极端故障(如机房火灾)后,通过切换到容灾系统,RTO控制在5分钟内(恢复业务)。
5) 【面试口播版答案】
“面试官您好,核心资产管理系统的高可用我设计为‘主备+多活’结合模式,灾备遵循金融行业标准(RTO≤5分钟,RPO≤15分钟),采用‘同城双活+异地容灾’。具体来说,前端用Nginx负载均衡分发请求,后端数据库采用MySQL双活(主主复制),缓存用Redis集群(主从+哨兵),消息队列用Kafka集群。同城部署两套系统,通过Binlog实时同步(10Gbps带宽),故障时负载均衡器秒级切换(RTO≤1秒);异地部署一套容灾系统,通过每日全量备份+实时增量备份(RPO≤15分钟),确保极端故障后能快速恢复。关键组件都做了冗余,比如服务器双机热备,网络双链路(BGP+BFD),保证7x24小时不间断服务。”
6) 【追问清单】
- 问:如何保证同城双活的RTO≤5分钟?
回答要点:通过数据库Binlog实时同步(网络带宽10Gbps,延迟<1ms),缓存数据同步(Redis哨兵自动选举,切换时间<100ms),故障时负载均衡器秒级切换,确保RTO≤1秒。
- 问:多活架构下如何保证数据一致性?
回答要点:采用分布式事务协议(如Seata的AT模式),结合最终一致性机制(如TCC),处理分布式事务,例如用户同时操作两个资产,通过全局事务管理器协调,确保多节点数据一致。
- 问:网络冗余具体如何设计?
回答要点:采用双链路(主链路+备用链路),BGP路由协议(自动路由切换),BFD快速检测(<50ms检测故障),故障时自动切换,确保网络层高可用(切换时间<1秒)。
- 问:异地容灾的RPO如何控制在15分钟内?
回答要点:每日全量备份(RPO≥24小时,用于长期恢复),实时增量备份(RPO分钟级,如使用MySQL GTID+Binlog,增量日志实时同步),结合自动化恢复脚本,确保极端故障后数据恢复时间≤15分钟。
- 问:成本如何控制?
回答要点:硬件采用虚拟化(KVM)和共享存储(Ceph),软件用开源方案(Nginx、MySQL、Redis),灾备系统采用冷备(非实时同步,减少带宽和存储成本),实际成本控制在业务可接受范围内。
7) 【常见坑/雷区】
- 坑1:灾备方案不具体,只说“异地容灾”但未说明数据同步技术(如异步复制、同步复制)及RTO/RPO保障。
雷区:面试官会追问“如何保证RTO≤5分钟?网络延迟影响如何?”
- 坑2:多活架构下数据一致性处理不深入,未说明分布式事务方案。
雷区:面试官会问“如何处理跨节点事务?比如用户同时操作两个资产,如何保证数据一致?”
- 坑3:网络冗余设计仅提到双网络卡,未说明BGP、BFD等技术及切换机制。
雷区:面试官会问“网络故障时如何快速检测并切换?切换时间是多少?”
- 坑4:忽略金融行业标准(如RTO/RPO),回答不贴合业务场景。
雷区:面试官会问“银行核心系统要求RTO≤5分钟,你如何满足?”
- 坑5:架构复杂但不可行,比如设计多活但数据一致性难以保证,或灾备成本过高。
雷区:面试官会问“实际落地成本如何?是否考虑了业务可行性?比如多活需要复杂的分布式事务,成本高”。