首页/数据/备份与容灾速查/双活模式(Active-Active)

双活模式(Active-Active)

两个站点同时承载流量:常见于接入层与无状态服务;有状态数据双活需要双向同步或分片写入,复杂度和冲突处理是主要难点。

备份与容灾速查数据更新于 2026-10-13

双活模式是什么

双活(Active-Active)指两个站点同时对外提供服务,任一站点故障时另一个继续承接流量,通常配合 DNS/GSLB 或全局负载均衡做分流。无状态部分做双活相对成熟;一旦涉及有状态数据,就要在双向同步与分片写入之间做取舍,冲突处理和一致性是主要难点。

基本信息

适合双活无状态应用、读多写少、可按用户或地域分片的服务
主要难点数据双向同步的冲突解决、会话保持、跨站读写一致性
常见折中应用双活 + 数据主备(写单边),即『双活接入、单边写』
流量调度DNS/GSLB、全局负载均衡、Anycast,配合健康探测摘除故障站点

典型使用场景

  • 前端与 API 层双活:两端都跑无状态集群,就近接入降低时延
  • 读双活写单边:两地都能读,写只落主站点,避免冲突与回环
  • 按用户分片双活:按用户 ID 哈希固定归属站点,区内单写、跨区只同步汇总数据
  • 同城双活做机房级容灾:时延低时可考虑更激进的一致策略
  • 异地双活 + 异步复制:牺牲少量 RPO 换取跨城写性能

分层组合思路(示意)

分层组合思路(示意)
接入层:DNS/GSLB 按地域与健康状态分流 → 站点 A / 站点 B
应用层:无状态集群,会话外置(Redis/JWT),两端可互换
数据层方案一:双向复制 + 冲突策略(后写胜出需时钟同步,否则数据分叉)
数据层方案二:按用户分片单边写,跨站交换机密数据走异步链路
数据层方案三:读双活写单边,写只在主站点,备站点只承接读流量

三种落地形态对照

形态数据一致性复杂度适用判断
应用双活 + 数据主备主备一致,备侧只读低多数业务的首选,投入产出比最高
分片双活(单边写)区内强一致,跨区最终一致中用户可按维度切分且跨区分片数据少
全量双向同步最终一致,需冲突合并高仅在有明确冲突策略与校验手段时采用
『双活』在厂商语境里范围不一:有的只指接入层双活,有的包含有状态双活。评估方案时先把有状态数据怎么处理问清楚,再谈切换指标。
双活不等于免演练:切流、回切、单向降级三种动作都要有预案与实测记录,尤其是回切时如何把两端数据对齐,否则演练结束反而留下数据分叉。

易错点

  • 对同一行记录双向写入且无冲突策略:两端各写一半,数据分叉后需要人工对账合并
  • 忽略跨站时延直接上双向同步写:往返延迟进入事务耗时,核心链路吞吐明显下降
  • 会话未外置:分流后用户请求落到另一端,登录态丢失、购物车清空等体验故障
  • 只演练切流不演练回切:回切缺少数据对齐步骤,把两端不一致的数据带进生产

数据来源与参考

  • AWS Well-Architected Framework(多站点高可用设计讨论)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌