大厂都会涉及异地多活,下面我详解阿里异地多活@mikechen
阿里异地多活
阿里异地多活(Multi-Site High Availability),简称”异地多活”。
异地多活,是阿里巴巴在双十一后率先落地,并在业界首发的核心高可用架构技术。
阿里在大促(双十一),中遭遇了机房容量和稳定性瓶颈,单点风险极高,因此决心做异地多活。

异地多活,它指在不同地理位置(异地,如不同城市或地域)的多个数据中心/逻辑单元同时对外提供服务。
阿里巴巴的异地多活,本质上是实现跨城市多个机房,同时对外提供服务的高可用与弹性架构方案。
本质解决:抗地域级灾难(城市级机房故障、大规模网络中断),以及解决机房容量瓶颈,通过在更多地域扩单元实现水平扩展。

其核心原理包括:
去中心化:每个站点均可独立完成业务请求的处理与响应,避免单点故障。
数据一致性与可用性平衡:通过多种复制策略(同步/异步、半同步、最终一致性),在一致性与性能之间取舍。
健康检测与自动切换,持续探测站点健康,当故障、或容量瓶颈发生时自动调整流量分配。
阿里异地多活架构
整体架构,分为接入层、服务层、数据层…等等。

用户 ↓ DNS / GSLB(全局调度) ↓ 接入层(Nginx / Gateway) ↓ 应用层(微服务集群) ↓ 数据层(数据库 / 缓存 / MQ)
流量路由层:
DNS/GTM/全球流量调度,根据地域、业务权重、单元健康度做智能路由。
发生故障单元不可用时,自动或手工调整权重,把流量切到健康单元。
接入与网关层:
SLB、API 网关、反向代理,识别单元标识并确保请求进入正确的单元集群。
实现会话保持、幂等等控制,减少跨单元跳转。
应用与服务层:

每个单元内部都是一套完整的微服务体系,服务注册发现、配置中心、限流熔断等都按单元隔离。
中间件(如消息、缓存、服务治理)通常也做单元级实例 + 必要的跨单元同步扩展。
数据与存储层:
单元级数据库实例或分片集群(如订单库、账户库),以单元维度划分写路由,尽量减少跨单元写。
利用数据同步工具(如 DTS、日志订阅、Binlog 同步等)进行跨单元/跨地域的数据复制,支持容灾切换和全局视图构建。
异地多活实践
典型的场景,就是“双十一”。

双十一单日流量是平时的数十倍,单机房容量和稳定性撑不住,同时机房选址、机架、网络都有物理瓶颈。
采用“单元化 + 异地多活”架构,把全部用户按用户 ID 或地域划分到不同单元,每个单元在不同城市部署一个完整的数据中心。
同一个用户在双十一期间的浏览、搜索、加购、下单、支付等链路。
全部在所在的单元内闭环完成,不跨机房调用。
并且,阿里把电商内部的多活能力,抽象为「业务多活容灾解决方案」对外输出。
覆盖流量路由、接入层、应用层、中间件、数据库、大数据等场景。
为政企、金融等客户提供三地五中心、多站点高可用架构模板。