流水单据型业务场景多活实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 多活容灾MSHA(Multi-Site High Availability)是在阿⾥巴巴电商业务环境演进出的多活容灾架构解决⽅案。本文通过一个电商业务下单链路案例,介绍典型的流水单据型业务场景,如何基于多活容灾解决方案(AHAS-MSHA)帮助业务实现多活容灾架构。

多活容灾MSHA(Multi-Site High Availability)是在阿⾥巴巴电商业务环境演进出的多活容灾架构解决⽅案。本文通过一个电商业务下单链路案例,介绍典型的流水单据型业务场景,如何基于多活容灾解决方案(AHAS-MSHA)帮助业务实现多活容灾架构。

背景信息

本文示例应用包含以下模块:

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

技术栈:

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

Demo体验地址:

  • 多活容灾控制台:
    1. 登录AHAS控制台
    2. 在控制台左侧导航栏选择多活容灾
    3. 在顶部菜单栏,命名空间选择官方示例命名空间
  • 电商业务页面:Demo

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

例如本示例的电商业务,包括导购、购物车、交易等业务场景。但在电商业务初期,很多互联网企业都没有考虑容灾问题,只在单地域进行了部署,部署的电商应用架构1.0如下图所示,只在杭州单元部署了相关业务。

电商应用架构1.0

读多写少型业务场景多活实践中,已经将导购链路进行了异地多读改造,而该业务后续在一次大促期间,遭遇了一次订单应用大面积故障,导致大促期间下单业务长时间无法使用,于是下单业务的容灾建设也提上了议程。下单业务是典型的流水单据型业务场景,相比导购,是更为复杂的读写业务,结合业务场景和业务容灾诉求,异地多活是适合此业务的容灾建设方案。

异地多活容灾架构改造

基于MSHA多活容灾解决方案,可以快速的帮助业务进行异地多活容灾建设。

说明 下单链路强依赖购物车应用,完整的多活容灾建设,后续还应将购物车应用也改造为异地多活。

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

  • 改造范围:下单应用和订单数据库进行两地域部署。
  • MSHA接入:将下单链路的应用安装上Agent,从而无侵入的实现SpringCloud RPC跨单元路由功能和数据防脏写功能。
  • 管控配置:进入MSHA控制台进行各层多活资源的配置(接入层域名、URI、SLB、数据层数据同步等)。

改造后的应用架构如下图所示。

异地多活容灾架构.png

复现故障

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

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

      演练预期如下:

      • 下单链路对订单应用是强依赖,强依赖故障会影响业务不可用。
      • 故障爆炸半径控制在单元内。
    5. 创建故障演练。
      创建北京单元下单应用故障的演练,具体操作,请参见 创建演练
  2. 故障注入。
    1. 在多活容灾的监控大盘页面异地双活区域,查看故障演练前配置的路由规则。

      本示例中UserID为0~6652之间的用户会路由到杭州中心单元,UserID为6653~9999之间的用户会路由到北京单元。

      路由规则2.png

      示例的MSHA商城下单应用链路如下图所示,当UserID为7000的用户路由到北京单元。

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

        若故障注入成功,UserID为7000的用户路由到的北京单元会受到影响,下单页访问异常,符合预期。

        访问失败2.png
      4. 可选:验证爆炸半径。
        验证爆炸半径是否控制在故障单元内:
        • 预期:UserID为2000的用户路由到杭州单元,不受北京单元故障的影响。
        • 结果:下单正常,符合预期。

切流恢复

验证故障场景下的容灾恢复能力。在北京单元发生故障的情况下,可以使用MSHA切流功能将受影响的用户流量切换到另外的单元,进行快速业务恢复。

说明 这里区别于传统的解决思路,不是去排查、处理和修复故障,而是立即使用切流进行恢复,将业务恢复和故障恢复解耦。

容灾切换预期:将UserID为7000的用户切流到杭州单元,切流后该用户将路由到杭州单元,不受北京单元故障的影响。

  1. 登录AHAS控制台
  2. 在控制台左侧导航栏中选择多活容灾
  3. 在左侧导航栏选择基础配置 > 命名空间,在顶部菜单栏选择官方示例命名空间
  4. 在多活容灾的左侧导航栏选择切流 > 异地双活切流
  5. 异地双活切流页面,单击切流
  6. 切流详情页面的规则调整区域,滑动杭州中心单元的滑块,使得UserID 7000在杭州中心单元的规则内。
  7. 单击生成预览,然后在生成区域单击执行预检查,在切流检查区域,单击确认
  8. 切流确认对话框中,单击确定
    切流任务页面的 当前状态显示 切流完成,表示切流已成功。 切流2.png
  9. 重新在MSHA商城下订单。

    MSHA商城下单正常,符合预期。

    下单成功.png

    通过查看下单请求的实际调用链路,UserID为7000的用户已路由到杭州单元,不受北京单元故障的影响,符合预期。

    查看链路4.png

功能演示

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

后续步骤

您还需要进行以下操作:

  • 终止注入故障,具体操作,请参见停止演练
  • 反馈演练结果,记录演练识别到的风险问题,具体操作,请参见反馈演练结果
  • 回切流量,将MSHA的路由规则恢复到演练前的状态,具体操作,请参见异地双活切流
  • 查看稳态业务指标已恢复,具体操作,请参见本文复现故障

相关文档

相关文章
|
9月前
|
Oracle 关系型数据库 分布式数据库
Oracle迁移PolarDB遇到的中文排序兼容
本文介绍从Oracle迁移到PolarDB过程中常遇到的中文排序问题的解决方案。
170 0
Oracle迁移PolarDB遇到的中文排序兼容
|
9月前
|
存储 SQL 监控
Lindorm:时序数据“存、算、管、用”的最佳实践
本文档介绍Lindorm时序引擎在时序数据的存储、计算、管理、应用上的最佳实践。
368 0
Lindorm:时序数据“存、算、管、用”的最佳实践
|
9月前
|
存储 监控 安全
基于日志审计服务解读网络数据时代新安全
《网络安全法》、《数据安全法》及《等保2.0》为网络时代数字化经济的安全健康发展提供了有力支撑,也对企业数字安全管理提出了更高要求。日志审计App可视、可控、可溯的日志全生命周期安全保护方案及阿里云各类云安全服务,全方位地帮助守护企业云上资产及数据安全,保障数字经济产业的健全发展。
基于日志审计服务解读网络数据时代新安全
|
9月前
|
机器学习/深度学习 数据采集 人工智能
基于Serverless架构的验证码识别功能
人工智能领域中的验证码识别与 Serverless 架构碰撞会有哪些火花呢?本文将会通过 Serverless 架构,通过卷积神经网络(CNN)算法,实现一个验证码识别功能。
2017 1
基于Serverless架构的验证码识别功能
|
9月前
|
算法 关系型数据库 分布式数据库
如何用 PolarDB 整合age算法插件, 实现图式搜索加速 - 刑侦、社交、风控、族谱、推荐等业务图谱类关系数据搜索
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB结合图式算法, 实现高效率的刑侦、社交、风控、族谱、推荐等业...
250 0
|
9月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源版 通过pgpointcloud 实现高效孪生数据存储和管理 - 支撑工厂、农业等现实世界数字化|数字孪生, 元宇宙相关业务的虚拟现实结合
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理;PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力。本文将介绍PolarDB 开源版 通过 pgpointcloud 实现高效孪生数据存储...
174 0
|
9月前
|
存储 弹性计算 5G
互联网多媒体行业存储解决方案
互联网行业是多媒体数据的重要载体和主要应用者。受到5G时代到来,移动网络提速,运营商流量资费不断下调等多个因素推动,多媒体行业一直处于快速发展的状态,体现为:内容数量持续增加,内容质量不断提升,内容类型不断丰富。当前,互联网产生的多媒体数据的管理进入了一个关键阶段,不管是个人还是组织,都已经成为多媒体数据的产生和使用者。本文档主要介绍3个典型的互联网多媒体行业的存储解决方案及最佳实践。
200 1
|
9月前
|
数据可视化 关系型数据库 MySQL
互联网电商与游戏行业实时BI分析
本文以电商行业为例,将业务数据和日志数据同步到 ADB,之后通过 Quick BI 做实时可视化分析。相对于传统的关系型数据库,阿里云分析型数据库 MySQL 版只需要几毫秒的时间,即可查询 PB 级数据并从中找到匹配信息。
互联网电商与游戏行业实时BI分析
|
9月前
|
存储
大咖与小白的日常:如何轻松构建千万级Feed流系统?
如何构建类似于微博、小蓝鸟的千万级Feed流系统?来看看大咖如何指导小白。
113 0
|
9月前
|
Kubernetes 安全 数据安全/隐私保护
ACK场景下应用程序安全访问云资源最佳实践
在实际的容器安全实践中,怎么样避免应用程序永久访问密钥。本文会介绍基于云原生的产品能力来实现无AK方案。
307 6
ACK场景下应用程序安全访问云资源最佳实践

热门文章

最新文章