MSHA x Chaos 容灾高可用实践

简介: 2020 年 12 月份,阿里云应用高可用产品 AHAS(Application High Availability Service)发布了新的功能模块 AHAS-MSHA,它是在阿⾥巴巴电商业务环境演进出来的多活容灾架构解决⽅案。本篇文章我们首先介绍容灾领域的几个重要概念,然后将结合一个的电商微服务案例,分享一下如何基于 AHAS 的异地多活能力(AHAS-MSHA)和混沌工程能力(AHAS-Chaos)帮助业务实现容灾架构的高可用实践。

作者 | 远跖、瀚阑
来源|阿里巴巴云原生公众号

前言
由于外部环境的复杂以及硬件的不可靠,互联网服务的高可用面临着巨大的挑战,由于断网、断电等事故导致的各大互联网公司服务不可用的案例也不在少数。业务不可用,小到带来经济损失影响企业口碑,大到微信、支付宝这些国民级应用,影响国计民生。面对难以避免的天灾人祸,容灾架构的建设就成为了数字化企业的迫切诉求。

2020 年 12 月份,阿里云应用高可用产品 AHAS(Application High Availability Service)发布了新的功能模块 AHAS-MSHA,它是在阿⾥巴巴电商业务环境演进出来的多活容灾架构解决⽅案。本篇文章我们首先介绍容灾领域的几个重要概念,然后将结合一个的电商微服务案例,分享一下如何基于 AHAS 的异地多活能力(AHAS-MSHA)和混沌工程能力(AHAS-Chaos)帮助业务实现容灾架构的高可用实践。

容灾与评价指标

  1. 什么是容灾?
    容灾(Disaster Tolerance)是指在相隔较远的异地,建立两套或多套功能相同的系统,系统之间可以相互进行健康状态监视和功能切换,当一处系统因意外(如火灾、洪水、地震、人为蓄意破坏等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

  2. 容灾能力如何评估?
    容灾系统主要为了在灾难发生时业务不发生中断,那么容灾能力如何评估和量化呢?这里需要介绍一下业界通常采用的容灾能力评价指标:

RPO(Recovery Point Objective)
即数据恢复点目标,以时间为单位,即在灾难发生时,系统和数据必须恢复的时间点要求。RPO 标志系统能够容忍的最大数据丢失量,系统容忍丢失的数据量越小,RPO 的值越小。

RTO(Recovery Time Objective)
即恢复时间目标,以时间为单位,即在灾难发生后,信息系统或业务功能从停止到必须恢复的时间要求。RTO 标志系统能够容忍的服务停止的最长时间,系统服务的紧迫性要求越高,RTO 的值越小。

AHAS-MSHA

  1. 介绍
    MSHA(Multi-Site High Availability)是一个多活容灾架构解决⽅案(解决方案=技术产品+咨询服务+生态伙伴),可以将业务恢复和故障恢复解耦,支持故障场景下业务的快速恢复,助⼒企业的容灾稳定性建设。

1)产品架构
MSHA 采用异地多活的容灾架构,核心思想是 “隔离的冗余”,我们将各个冗余的逻辑数据中心称为单元,MSHA 做到了业务流量在单元内封闭,单元之间隔离,把故障爆炸半径控制在一个单元内,不仅能解决容灾问题,提升业务连续性,并且能实现容量的扩展。

2)主流容灾架构对比

  1. 功能特性
    故障快速恢复
    秉承先恢复,再定位的原则,MSHA 提供了容灾切流能力,在数据保护的前提下让业务恢复时间和故障恢复时间解耦合,保障业务连续性。

容量异地扩展
业务⾼速发展,受限于单地有限资源,也存在数据库瓶颈等问题。使用 MSHA 可以在其它地域、机房快速扩建业务单元,实现快速水平扩容的目的。

流量分配与纠错
MSHA 提供了从接入层到应用层的层层流量纠错和校验,将不符合流量路由规则的调用重新转发,将故障爆炸半径可控制在一个单元内。

数据防脏写
多单元写数据可能造成脏写覆盖的问题,MSHA 提供流量打入错误单元时的禁写保护,以及切流数据同步延时期间的禁写/禁更新保护。

  1. 应用场景
    MSHA 可适用于以下典型业务场景的多活容灾架构建设:

读多写少型业务

业务场景:典型的业务场景就是资讯、导购类服务(如商品浏览、新闻资讯)。
数据特点:读多写少型业务,核心是读业务,能够接受写业务的暂时不可用。
流水单据型业务

业务场景:典型的业务场景就是电商交易、账单流水类服务(如订单、通话记录等)。
数据特点:数据可以按一定的维度进行分片且能接受数据的最终一致。
业务容灾实践
下面我们通过一个电商微服务案例,来介绍不同场景的容灾架构建设案例。

  1. 电商业务背景
    1)业务应用
    frontend,入口 WEB 应用,负责和用户交互
    cartservice,购物车应用。记录用户的购物车数据,使用自建的 Redis
    productservice,商品应用。提供商品、库存服务,使用 RDS MySQL
    checkoutservice,下单应用。将购物车中的商品生成购买订单,使用 RDS MySQL
    2)技术栈
    SpringBoot
    RPC 框架:SpringCloud,注册中心使用自建的 Eureka
    3)电商应用架构 1.0
    电商业务初期,跟很多互联网企业一样,没有考虑容灾问题,只在单地域进行了部署。

  2. 案例一:读多写少型业务容灾案例
    1)一次故障的发生
    电商业务初期发展迅速,小而美的单地域部署方式也一直没有变化,直到一次商品应用故障的发生,导致电商业务瘫痪,页面长时间无法访问。故障最终得以解决,但故障导致的客户流失和企业口碑影响,对快速发展的业务造成不小的打击,迫使我们开始考虑高可用能力的建设。

电商业务主要分为导购、购物车、交易等业务场景,首当其冲的就是导购。它是典型的读多写少型业务场景,核心是导购页面的展示(读链路),通常可以接受发布、上架商品服务的暂时不可用(写链路)。结合自身容灾诉求,我们先定下一个改进的小目标–“异地多读”。

2)异地多读容灾架构改造
基于 MSHA 将导购业务改造为“异地多读”。

多活改造 & MSHA 接入:

分区维度:使用 userId 来作分流标识。
改造范围:将导购链路相关的入口 WEB 应用 、 商品应用 进行两地域部署。
管控配置:进入 MSHA 控制台进行各层多活资源的配置。

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

【演练准备】
业务监控指标:基于 MSHA 流量监控或其他监控能力,确定业务稳态监控指标,以便在故障发生时判断故障影响面以及在故障恢复后判断业务的实际恢复情况。

演练预期:

导购链路对购物车应用是弱依赖(导购页会展示用户放入购物车的商品数量),弱依赖故障不影响业务。
导购链路对商品应用是强依赖,强依赖故障将导致业务不可用,故障的爆炸半径应该控制在单元内。
【故障演练】
利用 AHAS-Chaos 故障演练功能,能够方便的进行多种故障场景的演练。

第一阶段:弱依赖故障演练

故障注入:对购物车应用进行故障注入

预期:导购业务不受影响
结果:导购页能正常打开,符合预期

第二阶段:强依赖故障演练

演练前配置的路由规则如下(userId%10000 后根据如下路由范围规则进行匹配):

故障注入:对北京单元的商品应用进行故障注入

预期:userId=6000 的用户路由到北京单元,会受故障的影响
结果:导购页访问异常,符合预期

爆炸半径验证:验证保障半径是否控制在故障单元内

预期:userId=50 的用户路由到杭州单元,不受北京单元故障的影响
结果:导购页访问正常,符合预期
4)切流恢复
故障场景下,使用 MSHA 切流功能,验证容灾恢复能力。

容灾切换验证:将 userId=6000 切流到杭州单元

预期:切流后该用户将路由到杭州单元,不受北京单元故障的影响。
结果:导购页访问正常(导购请求的实际调用链参见下面动图),容灾恢复能力符合预期。

后续:故障撤销

故障注入终止
演练结果反馈,记录演练识别到的风险问题
流量回切
查看稳态业务指标是否恢复
3. 案例二:流水单据型业务容灾案例
1)新的故障
经过上述的改造,导购业务已经具备抵御地域级故障的能力。而订单应用大面积故障,成为了压死订单业务的最后一根稻草。于是,下单业务的高可用架构建设,也提上了议程。

下单是典型的流水单据型业务场景,相比导购,是更为复杂的读写结合业务,结合业务场景和业务容灾诉求,我们选取了适合业务的容灾建设方案–“异地多活”。

2)异地多活容灾架构改造
基于 MSHA 将订单业务改造为“异地多活”。

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

多活改造 & MSHA 接入:

改造范围:下单应用和订单数据库进行两地域部署。
MSHA 接入:将下单链路的应用安装上 Agent,从而无侵入的实现 SpringCloud RPC 跨单元路由功能和数据防脏写功能。
管控配置:

3)故障复现
容灾架构改造完成后,接下来我们将历史故障进行复现,通过制造真实的故障来验证容灾恢复能力。

【演练准备】
业务监控指标:基于 MSHA 流量监控或其他监控能力,确定业务稳态监控指标。

演练预期:下单链路对订单应用是强依赖,强依赖故障影响业务不可用,且故障爆炸半径控制在单元内。

【故障演练】
演练前配置的路由规则如下(userId%10000 后根据如下路由范围规则进行匹配):

故障注入:对北京单元的订单应用进行故障注入

预期:userId=6000 的用户路由到北京单元,会受到故障影响
结果:下单异常,符合预期

爆炸半径验证:验证保障半径是否控制在故障单元内

预期:userId=50的用户路由到杭州单元,不受北京单元故障的影响
结果:下单正常,符合预期
4)切流恢复
使用 MSHA 切流功能,验证故障场景下的容灾切换能力。

容灾切换验证:将 userId=6000 切流到杭州单元

预期:切流后该用户将路由到杭州单元,不受北京单元故障的影响
结果:下单正常(下单请求的实际调用链参见下面动图),容灾恢复能力符合预期。

总结
在本篇文章中,我们介绍了 AHAS 为业务容灾提供的一大利器:MSHA 多活容灾解决方案,并结合一个电商业务,介绍了读多写少型和流水单据型 2 个典型业务场景下的容灾建设案例,给出容灾架构建设实践方法,同时结合 AHAS-Chaos 故障演练功能模拟一次真实可能发生的故障,验证容灾能力是否符合预期。

公有云 MSHA 已经开始公测,并已提供文中 2 个业务场景的电商业务 Demo 体验(无需开通即可体验),欢迎大家申请体验。

最后想跟大家说的是,容灾建设是一个系统工程,不能一蹴而就也不是一锤子买卖,需要根据业务场景、容灾诉求、技术栈、容灾预算等综合来评估和制定合适的容灾架构建设方案,欢迎大家针对自身的容灾诉求和场景进行咨询和交流。

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于元学习和人机协同的端到端对话模型

Dialog Studio 是达摩院NLP-小蜜Conversational AI团队研发的面向开发者的智能对话开发平台,目前已经在云(多省市政务12345热线、中移动10086、金融、医疗等)、钉钉(通过钉钉官方智能工作助理服务几百万企业)、集团内&…

AI释放数字经济潜能!思谋科技受邀出席2021全球数字经济大会

8月2日,2021全球数字经济大会在北京举办。本次会议以“创新引领 数据驱动——建设全球数字经济标杆城市”为主题,由北京市人民政府、国家发展和改革委员会、工业和信息化部、商务部、国家互联网信息办公室共同主办。思谋科技作为承办单位参与论坛。思谋科…

ZAO 背后的深度学习算法原理浅析

ZAO最近火爆,成为现象级产品之一,引起大家的广泛关注,ATA上面已经有同学做了一些说明分析,链接如下: https://www.atatech.org/articles/148375?spmata.13269325.0.0.27ad49fa0Vr2gG 上面文章介绍了ZAO是基于deep f…

Serverless在SaaS领域的最佳实践

简介: 特别对于当下的经济环境,SaaS厂商要明白,不能再通过烧钱的方式,只关注在自己的用户数量上,而更多的要思考如何帮助客户降低成本、增加效率,所以需要将更多的精力放在自己产品的定制化能力上。 作者&a…

终于有人把大数据讲明白了。。。

大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并发处理、高可用处理、集群、实时性计算等&a…

都 2021 年了,Serverless 能取代微服务吗?

简介: 马上就要 2021 年了,Serverless 是否终将取代微服务?从微服务到 Serverless 需要经过怎样的路径?本文将对 Serverless 与微服务在优势劣势上进行深度对比。 来源 | Serverless 公众号 编译 | OrangeJ 作者 | Mariliis Rett…

Knative 快捷操作命令 Kn 介绍

简介: kn 是 Knative 命令行操作客户端。 通过 kn 可以方便的操作Knative 相关的资源。 安装 Kn 可以通过官方获取对应的 Kn 二进制 • macOS • Linux • Windows kn 会与 kubectl 使用同样的config 文件,默认使用 $HOME/.kube/config 服务管理 使用…

四大触点,教你从“用户视角”构建数据分析体系

简介: 做增长、做产品其实和谈恋爱的道理是一样的,想要把这件事情做好,需要建立一个好的用户基础,站在用户(女朋友)的角度看待问题、发现需求、建立场景、提出解决方案,这种需求大到可以是产品的…

数据中心 48 V 直流供电,Vicor 如何解决“最后一英寸”电源设计难题?

作者 | 伍杏玲出品 | CSDN云计算(ID:CSDNcloud)7 月 27 日,由 OCP 社区主办、浪潮承办的第三届 OCP China Day 2021 在北京举行。会上,笔者有幸和全球领先的电源厂商 Vicor 公司的高管进行交流,了解这个 40…

阿里云高效基因序列检索助力新冠肺炎病毒序列快速分析

简介: 阿里云高效基因序列检索助力新冠肺炎病毒序列快速分析 AnalyticDB for MySQL是云端托管的PB级高并发低延时数据仓库,通过AnalyticDB for MySQL向量检索功能构建基因检索系统,支持毫秒级针对10亿级别的向量数据进行查询分析,…

DTCC 2020 | 阿里云赵殿奎:PolarDB的Oracle平滑迁移之路

简介: Oracle兼容性是业务客户从Oracle生态迁移到PolarDB生态的第一步也是至关重要的一步,PolarDB通过不断沉淀支持大量实际业务的真实Oracle兼容性功能,确保客户业务可以真正做到平滑迁移。同时PolarDB带给Oracle生态客户的不仅仅是上的来的…

边缘计算助力云游戏成为5G时代的杀手级应用

作者:王超引言随着技术、架构以及商业模式的快速发展和完善,边缘计算作为一种成熟的计算范型已经得到广泛应用。边缘计算是为应用开发者和服务提供商在网络的边缘侧提供云服务和IT环境服务,“边缘”指的是位于管理域的边缘,尽可能…

阿里如何做好双11技术保障?大队长霜波分享4点经验

简介: 为什么说双11是阿里每年技术保障稳定性最困难的一次?50多个BU一起加入双11,怎么组织和运营?为了保障双11的顺利进行,又有哪些备战方案以及创新技术?在由阿里云CIO学院主办的【2020中国企业数字创新峰…

47 张图带你走进浏览器的世界!

作者: 零一0101来源:前端印象大家好,我是零一,每个开发者(尤其是前端工程师)或多或少会跟浏览器打交道,那么你们有没有想过去深入了解浏览器呢?无论是因为好奇还是为了面试&#xff…

一文教你轻松搞定ANR异常捕获与分析方法

简介: 选择一款有超强捕获能力的专业产品,对于开发者定位和修复稳定性问题至关重要。友盟U-APM SDK集成了UC 内核团队强大的技术及友盟超强的错误捕获能力,通过数万次捕获实践中积累了丰富经验,在产品、性能和研发能力上都极大保障…

DTCC 2020 | 阿里云梁高中:DAS之基于Workload的全局自动优化实践

简介: 第十一届中国数据库技术大会(DTCC2020),在北京隆重召开。在12.23日性能优化与SQL审计专场上,邀请了阿里巴巴数据库技术团队高级技术专家梁高中为大家介绍DAS之基于Workload的全局自动优化实践。 SQL自动优化是阿…

更便捷:阿里云DCDN离线日志转存全新升级

简介: 1月6日,阿里云CDN年度产品升级发布会中,阿里云CDN产品专家邓建伟宣布DCDN离线日志转存全新升级,并对离线日志转存方案的价值、应用及使用进行了详细解读。 1月6日,阿里云CDN年度产品升级发布会中,阿里…

20 行代码:Serverless 架构下用 Python 轻松搞定图像分类和预测

简介: 本文将会通过一个有趣的 Python 库,快速将图像分类的功能搭建在云函数上,并且和 API 网关结合,对外提供 API 功能,实现一个 Serverless 架构的“图像分类 API”。 前言 图像分类是人工智能领域的一个热门话题。…

夯实数字化转型算能基石 构建洛阳银行核心云

作者 | 李清溪 洛阳银行信息技术部副总经理 当前,以移动互联网、云计算、大数据、区块链等技术为代表的新一轮科技革新正全面渗透到经济社会各行业各领域。在推动数字经济与实体经济融合发展的同时,也不断改变和重塑着银行业的发展模式和经营理念。 根…

MaxCompute Spark 使用和常见问题

简介: 本文将就MaxCompute Spark开发环境搭建、常用配置、作业迁移注意事项以及常见问题进行深入介绍。 一. MaxCompute Spark 介绍 MaxCompute Spark是MaxCompute提供的兼容开源的Spark计算服务。它在统一的计算资源和数据集权限体系之上,提供Spark计算…