阿里异地多活详解(原理+架构+实践)

大厂都会涉及异地多活,下面我详解阿里异地多活@mikechen

阿里异地多活

阿里异地多活(Multi-Site High Availability),简称”异地多活”。

异地多活,是阿里巴巴在双十一后率先落地,并在业界首发的核心高可用架构技术。

阿里在大促(双十一),中遭遇了机房容量和稳定性瓶颈,单点风险极高,因此决心做异地多活。

阿里异地多活详解(原理+架构+实践)-mikechen

异地多活,它指在不同地理位置(异地,如不同城市或地域)的多个数据中心/逻辑单元同时对外提供服务。

阿里巴巴的异地多活,本质上是实现跨城市多个机房,同时对外提供服务的高可用与弹性架构方案。

本质解决:抗地域级灾难(城市级机房故障、大规模网络中断),以及解决机房容量瓶颈,通过在更多地域扩单元实现水平扩展。

阿里异地多活详解(原理+架构+实践)-mikechen

其核心原理包括:

去中心化:每个站点均可独立完成业务请求的处理与响应,避免单点故障。

数据一致性与可用性平衡:通过多种复制策略(同步/异步、半同步、最终一致性),在一致性与性能之间取舍。

健康检测与自动切换,持续探测站点健康,当故障、或容量瓶颈发生时自动调整流量分配。

 

阿里异地多活架构

整体架构,分为接入层、服务层、数据层…等等。

阿里异地多活详解(原理+架构+实践)-mikechen

用户
 ↓
DNS / GSLB(全局调度)
 ↓
接入层(Nginx / Gateway)
 ↓
应用层(微服务集群)
 ↓
数据层(数据库 / 缓存 / MQ)

流量路由层:

DNS/GTM/全球流量调度,根据地域、业务权重、单元健康度做智能路由。

发生故障单元不可用时,自动或手工调整权重,把流量切到健康单元。

接入与网关层:

SLB、API 网关、反向代理,识别单元标识并确保请求进入正确的单元集群。

实现会话保持、幂等等控制,减少跨单元跳转。

应用与服务层:

阿里异地多活详解(原理+架构+实践)-mikechen

每个单元内部都是一套完整的微服务体系,服务注册发现、配置中心、限流熔断等都按单元隔离。

中间件(如消息、缓存、服务治理)通常也做单元级实例 + 必要的跨单元同步扩展。

数据与存储层:

单元级数据库实例或分片集群(如订单库、账户库),以单元维度划分写路由,尽量减少跨单元写。

利用数据同步工具(如 DTS、日志订阅、Binlog 同步等)进行跨单元/跨地域的数据复制,支持容灾切换和全局视图构建。

 

异地多活实践

典型的场景,就是“双十一”。

阿里异地多活详解(原理+架构+实践)-mikechen

双十一单日流量是平时的数十倍,单机房容量和稳定性撑不住,同时机房选址、机架、网络都有物理瓶颈。

采用“单元化 + 异地多活”架构,把全部用户按用户 ID 或地域划分到不同单元,每个单元在不同城市部署一个完整的数据中心。

同一个用户在双十一期间的浏览、搜索、加购、下单、支付等链路。

全部在所在的单元内闭环完成,不跨机房调用。

并且,阿里把电商内部的多活能力,抽象为「业务多活容灾解决方案」对外输出。

覆盖流量路由、接入层、应用层、中间件、数据库、大数据等场景。

为政企、金融等客户提供三地五中心、多站点高可用架构模板。

评论交流
    说说你的看法