新基建下的分布式消息Chaos框架
金融通,冯嘉
讲述:初明明大小:4.78M时长:05:12
你好,欢迎收听极客视点。
近些年来,开源数字基础设施迭代不断加快,加速了企业在云上部署其数据中心、业务中心的脚步。多云、混合云架构已经越来越多地成为企业数字办公的首选方案。在这样的背景下,为了让基础设施更好地适合复杂多变的运行环境,提供大规模、超高稳定的运行效率,一种“新”的软件思潮,即“混沌工程学(Chaos Engineering)”被提升到一个很重要的高度。近日,“OpenMessaging 官微”介绍了基于混沌工程的分布式消息 Chaos 框架,值得关注。以下为重点内容。
混沌工程的引入可以让问题提前暴露、提前解决,从而在工程设计与实现上规避风险,不断提高系统弹性,持续交付高质量产品。其基本原则可以概括为:
建立一个围绕稳定状态行为的假说
多样化真实世界的事件
在生产环境中运行实验
持续自动化运行实验
最小化爆炸半径
通过蓄意制造“破坏”来确保容错机制不断运行并接受考验,从而验证系统的可靠性、可用性与弹性伸缩,提高故障自然发生时系统能正确处理的信息。
当前,业界已经存在一些基于混沌工程的框架,但却存在一些问题,比如 ChaosMonkey 提供了故障注入的手段,但无法给出针对于特定分布式基础设施的正确性、可靠性、可用性校验结果。Jepsen 能在特定故障下验证分布式系统是否满足一致性,但是 Jepsen 并未针对领域特有顺序性、故障恢复时间等检测。此外,Jepsen 测试需要用小众语言 Clojure 编写,这给分布式系统的适配带来了不小困难。
在这样的背景下,OpenMessaging Chaos 框架应运而生。作为分布式消息领域的先行者,它借鉴了混沌工程的理念,内置了丰富的、扩展良好的检测模型,通过标准化 API 暴露衡量分布式消息队列的可靠性、可用性、顺序性与可伸缩性的 Observable Entrypoint,非常利于各个 Messaging 厂商的接入。另外,作为消息领域的 Chaos 框架,它操作简单,适配容易,可以被集成到 CI/CD 框架中,持续帮助系统进行演进与迭代,提高云原生消息架构的可靠性。
Chaos 框架总体架构如上图所示,其主要由控制节点和若干个集群节点组成。控制节点由 Driver(驱动)、Model(模型)、Fault(故障)和 Checker(检测器)组件组成。
框架启动后,控制节点会以 SSH 方式远程登录到集群节点,通过自动部署或手动部署方式,使集群节点组成一个待测试的分布式集群,并会根据需要测试的分布式基础设施找到对应的 Driver 组件并载入,根据设置的并发数建立相应个数的客户端。测试开始后,控制节点根据 Model 组件定义的执行流程控制客户端对集群进行操作,测试过程中,Fault 组件会对集群节点进行故障模拟,包括网络分区、网络包延迟、随机杀死进程等。测试结束,Checker 组件对历史日志文件的自动化分析得出测试结果和可视化图表。另外,框架提供了开放 API,方便厂商对 Driver、Model、Fault、Checker 等组件进行自行扩展。
除此以外,Chaos 框架对容灾体系也设定了核心指标。
通常,容灾系统设计中,往往会主要关注两个指标:
一是 RPO(Recovery Point Objective):即数据恢复点目标,以时间为单位,即在灾难发生时,系统和数据必须恢复的时间点要求。RPO 标志系统能够容忍的最大数据丢失量。
二是 RTO(Recovery Time Objective):即恢复时间目标,以时间为单位,即在灾难发生后,信息系统或业务功能从停止到必须恢复的时间要求。
RPO 关注数据丢失,即系统可靠性;RTO 关注服务丢失,即系统可用性。Chaos 框架有内置的检测模型,天然支持针对于消息领域的可靠性和可用性检测。Chaos 框架还支持检测消息领域特有的一些核心指标:
投递语义。检测消息数据是否丢失或重复, 判断消息系统在故障下是否满足预期 At least once、At most once 、Exactly Once 投递语义,验证系统的可靠性。
故障恢复时间。检测集群故障时间段是否发生不可用,以及不可用后的故障恢复时间,即检测系统是否达到预期的 RTO,验证系统的可用性。
顺序性。检测消息系统的顺序性,比如在故障下消息是否满足预期的分区顺序性。
Chaos 框架还提供了可视化的时延图,可以帮助开发人员和测试人员进一步了解被测试的消息平台在 Chaos 框架运行过程中的表现,发现可能存在的问题。
以上就是今天的内容,你看好 Chaos 框架吗?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 小斧投递语义。检测消息数据是否丢失或重复, 判断消息系统在故障下是否满足预期 At least once、At most once 、Exactly Once 投递语义,验证系统的可靠性。 故障恢复时间。检测集群故障时间段是否发生不可用,以及不可用后的故障恢复时间,即检测系统是否达到预期的 RTO,验证系统的可用性。 顺序性。检测消息系统的顺序性,比如在故障下消息是否满足预期的分区顺序性。
- NullPointer这个概念应用的要求比较高,短期内的应用选用概率不高吧。
收起评论