同城多活架构实践

简介: 多活容灾MSHA(Multi-Site High Availability)是一个云原生的多活容灾架构解决⽅案。本文介绍同城多活容灾架构的建设原则和难点,并通过一个电商业务案例,介绍如何基于MSHA来快速、无侵入的帮助业务实现同城多活容灾架构。

多活容灾MSHA(Multi-Site High Availability)是一个云原生的多活容灾架构解决⽅案。本文介绍同城多活容灾架构的建设原则和难点,并通过一个电商业务案例,介绍如何基于MSHA来快速、无侵入的帮助业务实现同城多活容灾架构。

同城多活架构介绍

同城多活(DB主备)的架构图如下:

同城多活架构1.png

同城多活架构包含以下主要特征:

  • 应用可用区级多活。
  • 数据库跨可用区主备。
  • RPO:分钟级(AZ级故障)。
  • RTO:分钟级(AZ级故障)。

应用场景:

  • 针对可用区级的故障、灾难,期望业务具备分钟级恢复能力的场景。
  • 应用多可用区部署的情况下,期望RPC调用可用区内封闭,以避免跨可用区网络请求带来的RT增长。

建设原则:

  • 保证冗余。
  • 保持对等。
  • 保持封闭。

建设难点:

  • 流量管理难度高。
    • 当发生可用区级故障、灾难时:
      • 需具备HTTP、HTTPS流量的可用区级动态调配分流能力。
      • 需具备对故障AZ的RPC、MQ、任务调度流量切零能力。
    • 如果业务RT敏感,需具备可用区内流量封闭的能力以避免跨可用区的网络传输带来的RT增长。
  • 统一管控难度大。
    • 需对接支持众多的云产品和开源框架。
    • 切零规则、流量可用区内封闭规则、环境隔离规则、甚至异地多活路由规则共存的情况下,需保证规则的优先级、兼容性和冲突解决策略。
  • 业务无侵入难度大:要实现HTTP、RPC、MQ、任务调度等流量管控能力,通常需要业务应用配合改造,对业务代码侵入大。

业务背景信息

电商业务.png

本示例的电商业务包含以下应用:

  • frontend:入口Web应用,负责和用户交互。
  • cartservice:购物车应用。记录用户的购物车数据,使用自建的Redis。
  • productservice:商品应用。提供商品、库存服务,使用RDS MySQL。

技术栈:

  • SpringBoot。
  • RPC框架:SpringCloud,注册中心使用自建的Eureka。

案例背景:一次故障的发生

本示例的电商业务已自行进行了同城容灾能力建设,在杭州的多个可用区进行应用的对等部署,并自行实现了可用区级粒度的入口流量控制。但因为一次线上可用区级故障,才发现将故障可用区的HTTP流量切换到其他可用区后,下游的RPC、MQ调用仍然有概率访问到故障可用区内的机器,业务仍然无法使用,导致电商页面长时间无法访问,甚至电商业务瘫痪。

虽然故障最终得以解决,但故障导致的客户流失和企业口碑影响,对快速发展的业务造成不小的打击,迫使企业开始重视同城多活容灾能力的建设,以及定期做故障演练确保故障恢复能力的有效性。

同城多活架构改造

基于MSHA多活容灾解决方案,您可以快速地对业务进行同城多活容灾架构建设。

多活改造和MSHA接入包括以下方面:

  1. 开通并配置MSHA需要启用的多活模块。具体操作,请参见开通并配置MSHA
  2. 创建同城多活的命名空间,选择容灾架构类型为同城多活,将应用部署所在的2个可用区定义为2个单元格。具体操作,请参见新建命名空间
  3. 安装MSHA探针。具体操作,请参见为Java应用手动安装探针
  4. 配置接入层MSFE。具体操作,请参见配置MSFE
    改造后的应用架构如下图所示: 同城多活架构改造后.png

复现故障

基于MSHA完成同城多活架构建设后,还需验证容灾能力是否符合预期。接下来将历史故障进行复现,通过制造真实的故障来验证容灾恢复能力。

  1. 演练准备。
    1. 登录AHAS控制台
    2. 在控制台左侧导航栏单击多活容灾
    3. 在左侧导航栏单击监控大盘,在顶部菜单栏,选择命名空间官方示例命名空间
    4. 同城多活区域,查看业务监控指标。
      说明 基于MSHA流量监控或其他监控能力,确定业务稳态的监控指标,以便在故障发生时判断故障影响面以及在故障恢复后判断业务的实际恢复情况。
      监控大盘.png

      演练预期:电商首页展示的查询链路对商品应用是强依赖,强依赖故障将导致业务不可用,且故障的爆炸半径应该控制在单元格内。

    5. 创建故障演练。

      创建杭州单元格B下的商品应用故障演练(例如网络丢包)。具体操作,请参见创建演练

  2. 故障注入。
    1. 在多活容灾的监控大盘页面同城多活区域,查看故障演练前配置的路由规则。

      本示例中杭州地域的各个单元格流量比例为50%。

      路由规则1.png

      示例的MSHA商城商品应用链路如下图所示,UserID为1000的用户路由到单元格B。

      查看链路1.png
    2. 对杭州域单元格B下的商品应用注入故障。
      1. AHAS控制台的左侧导航栏选择故障演练 > 我的空间
      2. 我的空间单击演练准备中创建的演练,然后单击演练
      3. 开始执行演练对话框中,单击确认故障注入2.png

        若故障注入成功,打开电商首页,有概率出现访问异常,符合预期。

        访问失败.png

切流恢复

接下来将验证故障场景下的容灾恢复能力。在杭州单元格B的商品应用发生故障的情况下,可使用MSHA切流功能将流量全部切换到另外的单元格,进行快速业务恢复(这里区别于传统的思路,不是去排查、处理和修复故障,而是立即使用切流进行恢复,将业务恢复和故障恢复解耦)。

容灾切换预期:将100%的流量比例都切换到单元格I,切流后业务完全恢复,不受单元格B的故障影响。

  1. 登录AHAS控制台
  2. 在控制台左侧导航栏中选择多活容灾
  3. 在左侧导航栏选择基础配置 > 命名空间,在顶部菜单栏选择官方示例命名空间
  4. 在多活容灾的左侧导航栏选择切流 > 同城多活切流
  5. 同城多活切流页面,单击切流
  6. 切流详情页面的规则调整区域,选择切流方式比例切流,从单元下拉列表中选择杭州中心单元,单击杭州中心单元-单元格B的一键切零
    同城切流.png
  7. 单击确定。在切流检查区域检查完成后,单击切流
  8. 切流任务页面,查看工单状态切流完成。表示切流已成功。
    切流完成.png
    验证结果
    1. 刷新MSHA商城首页,多次访问均能正常展示,符合预期。
    2. 通过查看实际调用链路,首页的流量始终访问到杭州单元格I中,不受单元格B故障的影响,符合预期。查看链路2.png

功能演示

故障注入和切流恢复的功能演示如下。

后续步骤

您还需要进行以下操作:

  • 终止注入故障。具体操作,请参见停止演练
  • 反馈演练结果,记录演练识别到的风险问题。具体操作,请参见反馈演练结果
  • 回切流量,将单元格B和单元格I的流量比例,通过再次切流恢复到各50%(演练前的状态)。具体操作,请参见同城多活切流
  • 在控制台的监控大盘,查看业务的稳态指标已恢复。
相关文章
|
5月前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
381 54
|
5月前
|
存储 运维 分布式计算
零售数据湖的进化之路:滔搏从Lambda架构到阿里云Flink+Paimon统一架构的实战实践
在数字化浪潮席卷全球的今天,传统零售企业面临着前所未有的技术挑战和转型压力。本文整理自 Flink Forward Asia 2025 城市巡回上海站,滔搏技术负责人分享了滔搏从传统 Lambda 架构向阿里云实时计算 Flink 版+Paimon 统一架构转型的完整实战历程。这不仅是一次技术架构的重大升级,更是中国零售企业拥抱实时数据湖仓一体化的典型案例。
429 0
|
6月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
6月前
|
数据采集 存储 运维
MyEMS:技术架构深度剖析与用户实践支持体系
MyEMS 是一款开源能源管理系统,采用分层架构设计,涵盖数据采集、传输、处理与应用全流程,支持多协议设备接入与多样化能源场景。系统具备高扩展性与易用性,结合完善的文档、社区、培训与定制服务,助力不同技术背景用户高效实现能源数字化管理,降低使用门槛与运维成本,广泛适用于工业、商业及公共机构等场景。
298 0
|
8月前
|
算法 物联网 定位技术
蓝牙室内定位技术解决方案:核心技术架构与优化实践
本文探讨了蓝牙iBeacon与Lora结合的室内定位技术,分析其在复杂室内环境中的优势与挑战。通过三层架构实现高精度定位,并提出硬件、算法与部署优化方向,助力智慧仓储、医疗等场景智能化升级。
472 0
蓝牙室内定位技术解决方案:核心技术架构与优化实践
|
5月前
|
存储 SQL 消息中间件
从 ClickHouse 到 StarRocks 存算分离: 携程 UBT 架构升级实践
查询性能实现从秒级到毫秒级的跨越式提升
|
8月前
|
数据采集 人工智能 安全
开源赋能双碳:MyEMS 能源管理系统的架构与实践价值
在全球碳中和趋势与“双碳”目标推动下,能源管理趋向精细化与智能化。MyEMS是一款基于Python开发的开源能源管理系统,具备灵活适配、功能全面的优势,覆盖工厂、建筑、数据中心等多元场景。系统支持能源数据采集、分析、可视化及设备管理、故障诊断、AI优化控制等功能,提供“监测-分析-优化”闭环解决方案。遵循“国家+省级+接入端”三级架构,MyEMS在重点用能单位能耗监测中发挥关键作用,助力实现能源效率提升与政策合规。开源模式降低了技术门槛,推动“双碳”目标落地。
300 0
|
6月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
6月前
|
前端开发 Java 开发者
MVC 架构模式技术详解与实践
本文档旨在全面解析软件工程中经典且至关重要的 MVC(Model-View-Controller) 架构模式。内容将深入探讨 MVC 的核心思想、三大组件的职责与交互关系、其优势与劣势,并重点分析其在现代 Web 开发中的具体实现,特别是以 Spring MVC 框架为例,详解其请求处理流程、核心组件及基本开发实践。通过本文档,读者将能够深刻理解 MVC 的设计哲学,并掌握基于该模式进行 Web 应用开发的能力。
1457 1
|
7月前
|
存储 自然语言处理 前端开发
百亿级知识库解决方案:从零带你构建高并发RAG架构(附实践代码)
本文详解构建高效RAG系统的关键技术,涵盖基础架构、高级查询转换、智能路由、索引优化、噪声控制与端到端评估,助你打造稳定、精准的检索增强生成系统。
1680 2

热门文章

最新文章