两地三中心是阿里金融级高可用与容灾的关键,下面我全面详解阿里两地三中心@mikechen
什么是两地三中心
“两地三中心”中的“两地”,指的是两个地理位置相隔较远的城市或区域;

例如:北京为同城双中心所在地,上海、或杭州作为异地灾备城市。
“三中心”则通常指三个数据中心,分别承担生产、同城容灾和异地灾备等职责。
A 中心:同城生产中心——通常承接主要流量、核心写请求和主数据处理。
B 中心:同城容灾中心——与 A 同城但具备物理隔离,承担同城级故障接管,常可分担流量。
C 中心:异地灾备中心——应对城市级、电力级、运营商级或大范围自然灾害,通常承载关键业务的备用能力。
其本质,是通过跨地域部署多个中心节点,降低单点故障和区域性风险带来的业务中断概率。
两地三中心的核心架构思路
阿里的两地三中心架构,并不是传统意义上的“主备机房”简单复制,而更接近于“分层容灾+多活协同”的模式。
以北京+上海为例,整体架构如下:

Internet
│
▼
DNS / GSLB
│
┌──────────────┴──────────────┐
│ │
▼ ▼
城市A生产中心 城市A灾备中心
Center-A1 Center-A2
│ │
┌─────┴─────┐ ┌─────┴─────┐
│ │ │ │
SLB Nginx SLB Nginx
│ │ │ │
└─────┬──────┘ └─────┬──────┘
│ │
应用集群 应用集群
│ │
Redis / MQ / RPC Redis / MQ / RPC
│ │
└──────────┬───────────────────┘
│
数据层
│
┌────────┴────────┐
▼ ▼
MySQL Redis
│ │
└───────┬─────────┘
│
异步复制
│
▼
城市B灾备中心
Center-B1
│
┌─────────┴─────────┐
│ │
应用集群 数据库
Standby Standby
同城(北京):IDC1(生产)+ IDC2(同城容灾),双活或主备,实时同步。
异地(上海):IDC3(灾备),异步或半同步备份。
数据副本常见模式(以分布式数据库为例,如OceanBase / PolarDB-X):5副本“2+2+1”:同城两个机房各2个副本,异地1个副本。
基于Paxos/Raft多数派共识(至少3副本确认即提交)。
同城强同步(低延迟),异地异步或半同步。
分层架构:网络层:环形专线 / 高速通道 / CEN(云企业网)互联,低延迟高带宽。
应用层:无状态服务双活 + 有状态服务(DB)主备或单元化。
流量层:智能DNS / GTM / 全局负载均衡,按就近或权重调度。
管理层:统一监控、演练平台、自动切换编排。
两地三中心如何切换?
两地三中心的另一个关键问题是:

故障发生以后,用户怎么从 A 城市切到 B 城市?
通常在最上层增加:
DNS / GSLB / GTM
例如:
用户
│
▼
DNS / GSLB
│
┌───────┴───────┐
▼ ▼
城市A 城市B
A1 / A2 B1
单机房故障(中心 A 崩溃): 仲裁触发同城切换,将流量秒级切至中心 B,中心 B 接管写服务,RPO=0,RTO<30s。
城市级灾害(中心 A+B 同时崩溃): 启用异地应急预案,将流量切至中心 C,中心 C 升为主库,保证业务底线可恢复。
陈睿|mikechen
10年+大厂架构经验,资深技术专家,就职于阿里等一线大厂。