阿里两地三中心架构详解(原理+架构+步骤)

大厂都会涉及到两地三中心架构,下面我详解两地三中心架构@mikechen

什么是“两地三中心”?

两地:两个城市(例如:北京、上海)。

三中心:指三个数据中心/机房:生产中心(主中心,日常承载全部或大部分业务流量)。

同城容灾中心(同城灾备中心,距离生产中心通常几公里到几十公里)。

异地灾备中心(远程备份中心,位于另一个城市)。

阿里两地三中心架构详解(原理+架构+步骤)-mikechen

城市A:
  主中心(Active)
  同城灾备(Standby)

城市B:
  异地灾备(Disaster Recovery)

简单来说就是一个“同城双活 + 异地灾备”的组合架构。

 

两地三中心架构

两地三中心架构 的核心目标是:在城市级故障(如停电、断网、火灾)时,业务仍能快速恢复。

同时尽量保证数据不丢失(RPO 接近 0)、恢复时间较短(RTO 较短)。

阿里两地三中心架构详解(原理+架构+步骤)-mikechen

    用户请求(DNS / GSLB)
             ↓
┌─────────────────────┐
│     城市A(主中心)   │
│  SLB → Nginx → 应用  │
│        ↓            │
│      主数据库        │
└─────────────────────┘
          ↓(同步复制)
┌─────────────────────┐
│   城市A(同城备)    │
│      从数据库        │
└─────────────────────┘
          ↓(异步复制)
┌─────────────────────┐
│   城市B(异地中心)  │
│    灾备数据库        │
└─────────────────────┘

本质:当一个城市整体不可用时,系统仍然能继续运行。

 

先实现同城双活

同城两个机房部署完整应用集群,网络专线低延迟连通。

数据库同城内采用同步复制,保证数据一致,例如:

MySQL:MGR、PXC、或主从 + 半同步;

阿里两地三中心架构详解(原理+架构+步骤)-mikechen

云数据库:PolarDB 两地三中心副本、OceanBase 等多副本架构。

业务流量按用户分区(如按用户 ID、区域分片)绑定到固定机房,尽量同城闭环,避免跨机房写。

这一步完成后,就达到了“同城双活”级别,可防御单机房故障。

 

增加异地灾备中心

在异地城市部署一个灾备机房,应用可先以“冷备”或“热备”模式运行:

冷备:平时不对外服务,仅同步数据;

热备:可以跑读流量或部分只读服务,但写流量仍由主中心承担。

阿里两地三中心架构详解(原理+架构+步骤)-mikechen

数据从同城主中心异步或延迟复制到异地:

保证 RPO 很小(如几十秒级别),但避免阻塞写入。

配置灾备中心监控与演练流程,确保切换时可快速拉起业务。

 

建设统一容灾与演练流程

制定容灾预案:

单机房故障 → 自动切到同城另一机房;

阿里两地三中心架构详解(原理+架构+步骤)-mikechen

同城整体故障 → 人工或半自动切换到异地灾备中心。

定期做“机房级切换演练”:

模拟停电、断网、数据库故障,验证 RTO 与 RPO 是否达标。

评论交流
    说说你的看法