文档

应用容灾

更新时间:
一键部署

“应用多活”是“应用容灾”技术的一种高级形态,指在同城或异地机房建立一套与本地生产系统部分或全部对应的生产系统,所有机房内的应用同时对外提供服务。当灾难发生时,多活系统可以分钟级内实现业务流量切换,用户甚至感受不到灾难发生。“同城多活架构”和“异地多活架构”(代号“单元化”)都是典型的应用多活实现技术。

image.png

应用多活的优势

  • 分钟级RTO:恢复时间快,阿里内部生产级别恢复时间平均在30s以内,外部客户生产系统恢复时间平均在 1 分钟。

  • 资源充分利用:资源不存在闲置的问题,多机房多资源充分利用,避免资源浪费。

  • 切换成功率高:依托于成熟的多活技术架构和可视化运维平台,相较于现有容灾架构,切换成功率高,阿里内部年切流数千次的成功率高达 99.9%以上。

  • 流量精准控制:应用多活支持流量自顶到底封闭,依托精准引流能力将特定业务流量打入对应机房,企业可基于此优势能力孵化全域灰度、重点流量保障等特性。

应用多活的设计标准

应用多活定位是一套支持跨地域、跨平台的通用多活架构方案。应用多活架构的标准架构,需要满足以下 4 个设计标准:

  • 业务流量多活(BFA,BusinessFlowActive):应用多活的最终呈现是业务,多活容灾系统具备按照业务特征进行生产流量的精细化调配。

  • 同城多活(LRA,LocalRegionActive):应用是分布式系统的最小服务集合,当主中心出现问题进入容灾态时,要具备全局或局部应用的多活切换能力。

  • 异地多活(UDA,UltraDistanceActive):在超远距离(机房间距超过300公里)时,业务系统仍具备较好的访问性能。进入容灾态时,RTO、RPO 在分钟级。

  • 混合云多活(HCA,HybridCloudActive):向上对业务屏蔽容灾细节,提供统一的多活编程范式。 向下对云平台技术保持兼容,支持公有云、私有云、托管私有云、边缘计算节点等不同部署模式的多活场景。

image.png

应用多活的典型架构

同城场景的应用多活

同城应用多活,顾名思义就是分布在同城多个机房内的应用同时对外提供服务。同城机房物理距离较小 (物理距离小于 100 公里)。同城场景下多机房的网络、服务互通,某机房局部故障会影响到全局,爆炸半径不可控。应用多活架构的难点,在于机房之间的流量路由和隔离。当某机房出现故障,可以做到机房级的快速切换。更精细化的场景,如果是某中心内某应用的故障,还需要做到应用级的切换。

为了实现机房间的流量调度,同城应用多活架构下,建立多个服务部署的逻辑区,这个逻辑区称之为“单元格(Cell)”。每个单元格内的业务流量尽可能的在本区域内调用优先。由于同城跨机房 RT 较小,因此多个单元格的云服务采用单集群模式,从而可以避免数据一致性上的复杂度。同城应用多活的架构如下图所示:

image.png

同城应用多活对应用系统的代码侵入较小,基于灵活的流量调度和单元格间的流量路由,能做到故障场景下的业务快速恢复,实现业务恢复与故障恢复的解耦。

异地场景的应用多活

同城近距离的容灾建设难以抵御地域级别的灾难,参考银行业的容灾标准,灾备中心建设都要求满足“三不原则”(即灾备中心与生产中心不应设立在同一地震带,同一江河流域,同一电网),因此异地灾备中心一般距离生产中心 300 公里以上。

异地应用多活,顾名思义就是分布在异地多个机房内的应用同时对外提供服务。在异地超远距离的场景下建设应用多活,最大的挑战在于超远距离带来的网络延迟。由于网络延迟大,云服务很难跨地域的以单集群的模式提供服务,而多集群模式下会带来数据一致性的复杂度。

为了解决单集群无法突破物理距离限制的问题,阿里提出了“单元化”方案。核心思路是对数据进行分片,通过自上而下的流量路由,让特定分片的数据到特定中心完成读写,以此解决数据一致性的问题,并在此基础上解决了业务的容灾和水平扩展问题。这个可以水平扩展的逻辑中心称为“单元(Unit)”。

单元分为两种类型,中心单元与普通单元。单元内部署的业务分为三种类型,全局业务、核心业务、共享业务。中心单元只有一个,部署全局业务、核心业务、共享业务。普通单元部署核心业务、共享业务,普通单元具备水平的扩展能力,可以任意复制。

  • 全局业务:强一致性的业务,在中心单元写,在中心单元读。

  • 核心业务:做单元化拆分的业务,在普通单元写,在普通单元读。

  • 共享业务:被核心业务高频依赖的全局业务读服务,在中心单元写,在普通单元读。

image.png

混合云场景的应用多活

混合云融合了公有云、私有云、托管私有云、边缘计算节点等不同部署模式,面向企业云上基础架构、中间件、开发全生命周期和/或应用平台的各种能力需求,为云上开发、构建、运维、运营、管控等各种技术与业务实践提供支持。IDC 报告中显示 2021 年有 14% 的客户会单独选择公共云,86% 企业采用多云混合云架构。

混合云应用多活,顾名思义就是分布在混合云环境的应用均对外提供服务。混合云应用多活架构是在多云和异构场景衍生的容灾架构方案,将业务恢复和云基础架构、云服务解耦。混合云多活管理产品对开发者和上层用户屏蔽混合云容灾的复杂度,提供一致的开发、运维、运营体验。

混合云应用多活,最大的挑战在于多云独立和多云异构,做到多云集成和数据互通。多云集成,即集成多云的账号、权限、资源、数据,在此基础上构建统一的多云操作界面。数据互通,即多云的基础架构、异构的中间件体系,需要做到互相发现、互相同步,在此基础上实现数据的容灾。

为了实现多云集成与数据互通,混合云多活管理需要有多云适配来屏蔽底层的差异,主要依靠三大核心功能:

  • 云服务接口适配,对下通过插件化支持多云适配,对上提供统一的云服务接口。

  • 数据模型适配,对云的账号、权限、资源、数据进行抽象,屏蔽多云的数据差异。

  • 统一容灾接口,提供标准化的容灾定义和接口,利于异构云异构技术栈的快速接入。

image.png

应用多活的技术方案

应用多活的技术方案一般分为三部分,分别为应用层、数据层和云平台。三部分组件遵循应用多活的设计标准,支撑应用构建应用多活架构能力。应用层是业务应用流量主经的链路,基本构成可分为三部分:

  • 接入网关:接入网关作为业务流量打入机房的第一跳,负责应用多活入口流量的识别和分发,具备机房路由和应用路由两个核心能力。

  • 微服务:业务流量在机房内部和跨机房的同步调用方式,一般有 Consumer、Provider、注册中心等角色,具备流量路由、流量保护、故障隔离三个核心能力。

  • 消息:业务流量在机房内部和跨机房的异步调用方式,基于消息削峰填谷,一般有 Producer、 Consumer、Broker 等角色。

数据层涵盖业务应用数据读写、数据存储和数据同步,其具备流量路由、数据一致性保护、数据同步三个核心能力。

云平台是支撑业务应用运行的核心基石,基本构成覆盖单云、单机房、多云、混合云等形态。

image.png