两地三中心:一套高可用容灾架构的拆解

一、它解决什么问题

单机房部署的系统,故障域太大。断电、空调故障、网络中断、火灾、地震,任何一层出问题,业务直接归零。

传统的主备模式(一个生产 + 一个备份)能应对部分场景,但有两个硬伤:一是备份中心平时不承载业务,资源浪费;二是同城备份防不了城市级灾难,异地备份又因为延迟太高,日常故障切换慢、数据丢失窗口大。

两地三中心要同时解决这两个问题:既要快速切换、数据不丢,又要能扛住区域性灾难。

二、架构定义

"两地"指两个地理隔离的区域,通常是一个同城区域 + 一个异地城市,距离从几十公里到上千公里不等。

"三中心"指三个数据中心,角色和职责各不相同:

生产中心(Primary)

承载全部生产流量,处理用户的读写请求。所有数据的第一写入点。

同城灾备中心(同城 DR)

与生产中心同城部署,距离通常在几十公里内。通过高速专线与生产中心做同步复制,数据与生产中心保持一致。平时可分担部分读流量或处于热备状态。

异地灾备中心(异地 DR)

部署在几百公里外的另一城市。通过异步复制接收生产中心的数据。平时不承载生产流量,定位是区域性灾难发生后的最终兜底。

三、数据复制机制

这是整个架构的核心。三个中心之间的数据流动,决定了故障切换时的 RPO(恢复点目标)和 RTO(恢复时间目标)。

生产 → 同城:同步复制

生产中心收到写请求后,必须等同城灾备中心确认写入成功,才向客户端返回成功。这意味着两边数据强一致,RPO ≈ 0。代价是写延迟受同城网络 RTT 影响,通常在 1–5ms 量级,可接受。

生产 → 异地:异步复制

生产中心写完本地和同城后,异步将数据推送到异地灾备。异地确认与否不影响生产中心的写返回。因此异地数据存在一定延迟,RPO 通常在秒级到分钟级。这个延迟换来的是距离——几百公里的物理距离,只能用异步来覆盖。

复制链路示意:

客户端
  │
  ▼
生产中心(写成功)
  ├── 同步 ──▶ 同城灾备(写成功)──▶ 返回客户端成功
  └── 异步 ──▶ 异地灾备(最终一致)

四、故障切换逻辑

场景一:生产中心机房级故障(断电、网络中断、硬件故障)

切换到同城灾备中心。由于数据同步复制,RPO ≈ 0;同城距离近,切换可在秒级到分钟级完成,RTO 较低。业务基本无感知。

场景二:同城区域级灾难(地震、洪水、大面积停电)

生产中心和同城灾备中心同时失效,启动异地灾备中心。由于异步复制,异地数据可能落后几秒到几分钟,RPO > 0;异地中心需要从冷备或温备状态启动,RTO 通常在分钟级到小时级。

场景三:生产中心单点故障(某台服务器、某个存储节点)

不涉及中心级切换,由中心内部的高可用机制(集群、副本、负载均衡)处理,对两地三中心架构透明。

五、关键指标

RPO(Recovery Point Objective)

能容忍丢失多少数据。同城同步复制下 RPO ≈ 0;异地异步复制下 RPO 取决于复制延迟,通常秒级到分钟级。

RTO(Recovery Time Objective)

能容忍业务中断多久。同城切换通常在秒级到分钟级;异地切换取决于异地中心的就绪状态,冷备可能小时级,温备可缩短到分钟级。

这两个指标直接决定了架构的成本。RPO 和 RTO 越接近零,投入越大。

六、成本与适用场景

两地三中心的成本主要来自三块:三个数据中心的基建和硬件、跨城高速专线的带宽费用、数据同步软件和运维人力。异地中心平时不产出,纯成本项。

因此它主要适用于对数据安全和业务连续性要求极高的场景:

  • 金融核心交易系统:每笔交易不可丢,监管有明确容灾要求
  • 大型互联网平台:海量用户数据,停机损失巨大
  • 政务与关键信息基础设施:数据安全优先级最高

对于中小规模业务,同城双中心或单中心 + 异地备份可能更具性价比。架构选型取决于业务对 RPO/RTO 的实际要求,而非技术越复杂越好。

七、小结

两地三中心的核心设计思想是分级防御

  • 同城同步复制 → 解决机房级故障,RPO ≈ 0,RTO 低
  • 异地异步复制 → 解决区域级灾难,RPO > 0,RTO 较高但可接受

两个层级各司其职,用合理的成本覆盖从单点故障到城市级灾难的完整故障谱系。