阿里两地三中心最全详解(架构+原理+方案)

两地三中心是阿里金融级高可用与容灾的关键,下面我全面详解阿里两地三中心@mikechen

什么是两地三中心

“两地三中心”中的“两地”,指的是两个地理位置相隔较远的城市或区域;

阿里两地三中心最全详解(架构+原理+方案)-mikechen

例如:北京为同城双中心所在地,上海、或杭州作为异地灾备城市。

“三中心”则通常指三个数据中心,分别承担生产、同城容灾和异地灾备等职责。

A 中心:同城生产中心——通常承接主要流量、核心写请求和主数据处理。

B 中心:同城容灾中心——与 A 同城但具备物理隔离,承担同城级故障接管,常可分担流量。

C 中心:异地灾备中心——应对城市级、电力级、运营商级或大范围自然灾害,通常承载关键业务的备用能力。

其本质,是通过跨地域部署多个中心节点,降低单点故障和区域性风险带来的业务中断概率。

 

两地三中心的核心架构思路

阿里的两地三中心架构,并不是传统意义上的“主备机房”简单复制,而更接近于“分层容灾+多活协同”的模式。

以北京+上海为例,整体架构如下:

阿里两地三中心最全详解(架构+原理+方案)-mikechen

                  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 / 全局负载均衡,按就近或权重调度。

管理层:统一监控、演练平台、自动切换编排。

 

两地三中心如何切换?

两地三中心的另一个关键问题是:

阿里两地三中心最全详解(架构+原理+方案)-mikechen

故障发生以后,用户怎么从 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年+大厂架构经验,资深技术专家,就职于阿里等一线大厂。

评论交流
    说说你的看法