阿里同城双活架构详解(看这篇就够了)

同城双活是大型架构核心,下面我详解阿里同城双活架构@mikechen

阿里同城双活

同城双活是指:同一个城市部署两个独立机房,两套系统同时对外提供服务。

阿里同城双活架构详解(看这篇就够了)-mikechen

当任意一个机房发生故障时,业务能够自动切换到另一个机房,实现业务不中断。

它是大型互联网公司(阿里、腾讯、美团、字节、京东等)最常见的高可用架构之一。

例如:

                用户请求
                   │
          ┌────────┴────────┐
          │                 │
      IDC-A机房          IDC-B机房
      (Active)          (Active)
          │                 │
      应用集群            应用集群
          │                 │
      Redis集群         Redis集群
          │                 │
      MySQL集群         MySQL集群

两个机房:同时提供服务(Active),同时接收流量(Active)。

自动切换,因此称为:同城双活(City Active-Active)。

阿里同城双活架构

整体架构:

阿里同城双活架构详解(看这篇就够了)-mikechen

同城双活常见的架构可分为应用层、数据层和流量层三部分。

1. 流量层架构

流量接入层(全局负载均衡), 负责将用户的请求分流到不同的机房。

通常通过 IP 地理位置或轮询算法将流量均分到 A、B 机房。

应用网关(Gateway): 机房入口网关。承担关键职责:解析路由键(Route Key,如 user_id)。

网关根据哈希或分片规则,判断该请求属于哪一个“单元(Cell)”。

若发现该请求进错了机房(例如 user_id 为奇数,本应由 A 机房处理,却因为 DNS 漂移到了 B 机房),网关负责在内网将请求跨机房重定向(Redirect)到正确的机房。

2. 应用层架构

应用层通常采用无状态设计,常见做法包括:

Web/API 服务无状态化;

会话信息集中存储;

任务调度中心统一管理;

3. 数据层架构

数据层是双活成败的关键,常见模式有:

主从复制 + 自动切换:一主一备,严格意义上不算双活,但可作为基础形态。

双主架构:两个中心都可写入,但需要解决冲突与一致性问题。

分库分表 + 按业务域分活:不同业务或不同用户群分别落在不同中心,降低跨中心写冲突。

分布式数据库:通过分布式事务、共识协议或多副本机制实现一致性。

评论交流
    说说你的看法