同城双活

同城两个机房(或两个可用区)同时承载流量,机房级故障时秒级-分钟级切换;延迟要求通常小于 2ms 才能做到真正的双活。

云与容器速查云更新于 2026-10-13

同城双活是什么

同城双活指同城两个机房或两个可用区同时承载流量,机房级故障时可以快速切换。延迟足够低才是真双活的前提,两个中心之间通常需要低延迟专线互联;数据层的写入策略则是这类架构里最难的部分。

基本信息

定义同城两个中心同时对外服务,流量可双向调度
基础设施两中心之间低延迟专线互联
流量调度智能 DNS 权重或负载均衡主备与多活
数据层单写多读热备,或业务层双写并处理冲突
容灾等级高于单可用区,低于两地三中心
演练切换必须定期演练,未演练的方案等于没有

各层次做法与风险

层次常见做法关键风险
流量入口智能 DNS 权重、负载均衡DNS 缓存导致切换慢
应用层无状态化、会话共享会话不共享导致切换后掉线
数据层主备或双写双写冲突互相覆盖
中间件集群跨中心部署脑裂与数据一致性问题
演练定期切换演练未演练的方案不可信

流量调度切换示意

流量调度切换示意
正常:DNS 权重 50/50 → 双中心按容量承接
故障:探测发现 A 中心异常 → 权重切 0/100 → B 中心全量
# 切换耗时受 DNS 缓存影响,接线用短 TTL

典型使用场景

  • 核心业务要求机房级故障时仍能对外服务
  • 两地三中心方案的中间形态,先做同城再扩异地
  • 迁移期间新旧机房并行承载流量
  • 大促前提升整体容量与可用性
数据库双写是同城双活最难的部分:多数团队实际落地为单写热备加秒级切换,而不是真正的双写,先想清楚再画架构图。
会话与本地缓存要提前改造:应用不做无状态或共享会话,切换后用户会集体掉线重新登录。
没有演练过的切换方案不可信:切换脚本、执行人、判断条件都要在真实演练中验证过一遍。

易错点

  • 应用会话没做共享存储,切换后用户全部掉线重登
  • 双写未做冲突策略,两边数据互相覆盖
  • 只考虑服务层不考虑数据层切换时间:RTO 目标落空
  • 方案设计后从不演练:真出事时切换流程走不通
  • DNS 缓存时间过长:切换后仍有大量请求打到故障中心

数据来源与参考

  • 阿里云文档:同城双活方案
  • 腾讯云文档:同城双活
  • 华为云文档:两地三中心

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌