在单元化部署中,当某个单元出现故障需要将流量切换到其他单元时,数据库层面的流量切换和数据支持主要通过以下方式实现:
1. RPO=0 的含义
RPO(Recovery Point Objective,恢复点目标)是指在灾难发生时,系统所能容忍的数据丢失量。RPO=0 表示在灾难发生时,系统不会丢失任何已提交的数据,即数据的完整性得到完全保障。
2. RTO<1min 的含义
RTO(Recovery Time Objective,恢复时间目标)是指从灾难发生到系统恢复服务功能所需的最短时间。RTO<1min 表示在发生故障后,系统能够在不到1分钟的时间内恢复服务。
3. 如何实现 RPO=0 和 RTO<1min
在单元化架构中,蚂蚁集团通过以下技术手段实现 RPO=0 和 RTO<1min:
数据库副本提升:当某个单元(如 RZone1)出现故障时,系统会将该单元对应的数据分片的副本提升为主副本。例如,RZone1 的数据分片副本在 RZone2 中,系统会将 RZone2 中的副本提升为主副本。
流量切换:在数据库副本提升完成后,将故障单元的流量切换到其他单元。流量切换的顺序至关重要,必须先完成数据库副本的提升,再切换流量。
多副本一致性:通过 Paxos 或 Raft 等分布式一致性协议,确保数据在多个副本之间强同步,从而实现 RPO=0。
快速故障检测与切换:系统通过实时监控和快速故障检测机制,在故障发生时迅速切换到备用副本,确保 RTO<1min。
4. 容灾能力
通过上述机制,蚂蚁集团的单元化架构能够在灾难发生时快速恢复服务,同时确保数据不丢失,满足高可用性和容灾的要求。