一句话定义: 多区域容灾(Multi-Region Failover)是指把同一套服务同时部署在物理上相隔较远的多个数据中心(区域,Region),当某个区域整体不可用时,把流量切换到另一个区域,让服务接着跑。
打个比方:连锁餐厅在城东城西各开一家,菜单、后厨流程完全一样。城东店因为停电关门,门口贴张告示把客人引导到城西店——客人多走两步,但饭还是能吃上。多区域容灾要解决的,就是这张“告示”贴得多快、客人转移过去时手上那盘菜会不会洒。
真正难的是三件事,不是“多买几台机器”
第一是状态。模型权重本身是只读的,复制到几个区域不难;难的是有状态的东西——用户会话历史、向量库、缓存、正在写入的数据库。只读的推理服务好办,一旦涉及写入,就得决定是同步复制(切换不丢数据,但平时延迟高)还是异步复制(平时快,切换时可能丢掉最后几秒的写入)。
第二是流量怎么切。常见做法是 DNS 解析加全局负载均衡(GSLB)配合健康探测。这里有个容易踩的坑:DNS 记录有 TTL 缓存,而部分客户端和运营商并不严格遵守 TTL,光靠改 DNS 切换,可能拖上几分钟甚至更久。所以成熟的架构会在接入层做全局调度,让流量绕开坏掉的区域,而不是只等 DNS 生效。
第三是客户端行为。切换瞬间,所有还在等结果的请求都断了——尤其是流式输出的场景,用户正看着字一个个蹦出来,突然停住,就是切换在发生。客户端要能识别“断流”并重试,而且重试必须带退避和抖动(jitter),否则所有客户端同时重试,会把备用区域一拳打爆,业内叫重试风暴(Retry Storm)。
切换要丢多少请求,取决于部署形态:
| 形态 | 备用区域平时在干嘛 | 切换耗时 | 丢什么 |
|---|---|---|---|
| 冷备 | 关机或只留空壳 | 需要拉起,通常几十分钟起 | 整个恢复窗口内的全部请求 |
| 温备 | 小规模常驻,随时扩容 | 分钟级 | 探测窗口 + 扩容期间的请求 |
| 双活(Active-Active) | 一直在正常接流量 | 秒级到几十秒 | 探测延迟内的请求 + 所有在途请求 |
两个通用指标:RTO(恢复时间目标,多久能恢复服务)和 RPO(恢复点目标,最多能丢多少数据)。容灾方案吹得再好,也要看这两个数落在哪。
跟相邻概念的区别: 备份(Backup)防的是数据被误删,恢复以小时计;同区域多可用区(Multi-AZ)防的是单个机房或机架故障,延迟几乎无损但扛不住区域级事故;多区域容灾防的是地震、区域性电力或网络故障这类“一整个区域都没了”的情况。三者是叠加关系,不是替代关系。
对从业者的意义: 容灾不是配置项,是演练项。没跑过故障演练(Chaos Engineering / Game Day)的容灾,约等于没有。还要记住切换往往是单向的,切回来(Failback)通常比切过去更难,数据回灌、缓存重建都得另做方案。
对普通人的意义: 某天你发现“只有某个区域的 API 挂了”而上游产品毫无感觉,那是容灾生效了;如果全站一起挂,那说明它只是把鸡蛋放在了一个篮子里。具体各家云厂商的区域划分和 SLA,以官方页面为准。
