混沌工程是在系统上进行实验的学科,目的是建立对系统承受生产中动荡条件的能力的信心。
大规模分布式软件系统的进步正在改变软件工程的游戏规则。作为一个行业,我们迅速采用提高开发灵活性和部署速度的做法。紧随这些好处之后的一个紧迫问题是:我们对投入生产的复杂系统有多少信心/p>
即使分布式系统中的所有单个服务都正常运行,这些服务之间的交互也会导致不可预测的结果。不可预测的结果,加上影响生产环境的罕见但具有破坏性的现实世界事件,使这些分布式系统本质上是混乱的。
我们需要在弱点出现在系统范围的异常行为中之前识别它们。系统性弱点可能表现为: 服务不可用时不正确的回退设置;从调整不当的超时重试风暴;当下游依赖收到过多流量时中断;单点故障崩溃时的级联故障;等等。我们必须在最重要的弱点影响生产中的客户之前主动解决它们。我们需要一种方法来管理这些系统中固有的混乱,利用不断提高的灵活性和速度,并对我们的生产部署充满信心,尽管它们代表着复杂性。
一种基于经验的、基于系统的方法可以大规模解决分布式系统中的混乱问题,并建立对这些系统承受现实条件的能力的信心。我们通过在受控实验中观察分布式系统的行为来了解它。我们称之为混沌工程。
实践中的混乱
为了专门解决大规模分布式系统的不确定性,混沌工程可以被认为是促进实验以发现系统弱点。这些实验遵循四个步骤:
-
首先将“稳态”定义为系统的一些可测量的输出,表明正常行为。
-
假设这种稳定状态将在对照组和实验组中继续存在。
-
引入反映现实世界事件的变量,例如服务器崩溃、硬盘驱动器故障、 络连接中断等。
-
尝试通过寻找对照组和实验组之间的稳态差异来反驳该假设。
破坏稳定状态越难,我们对系统行为的信心就越大。如果发现了一个弱点,我们现在就有了一个改进目标,以便在该行为在整个系统中显现之前进行改进。
高级原理
以下原理描述了混沌工程的理想应用,应用于上述实验过程。遵循这些原则的程度与我们对大规模分布式系统的信心密切相关。
围绕稳态行为建立假设
关注系统的可测量输出,而不是系统的内部属性。在短时间内对该输出的测量构成了系统稳定状态的代表。整个系统的吞吐量、错误率、延迟百分位数等都可以是代表稳态行为的感兴趣的指标。通过在实验期间关注系统行为模式,Chaos 验证系统确实有效,而不是试图验证它是如何工作的。
改变现实世界的事件
混沌变量反映了现实世界的事件。通过潜在影响或估计频率对事件进行优先级排序。考虑与硬件故障(如服务器死亡)、软件故障(如格式错误的响应)以及非故障事件(如流量激增或扩展事件)相对应的事件。任何能够破坏稳态的事件都是混沌实验中的潜在变量。
在生产环境中运行实验
系统的行为因环境和流量模式而异。由于利用率的行为随时可能发生变化,因此对真实流量进行采样是可靠捕获请求路径的唯一方法。为了保证系统运行方式的真实性以及与当前部署系统的相关性,Chaos 强烈倾向于直接在生产流量上进行试验。
自动化实验以连续运行
手动运行实验是劳动密集型的,最终是不可持续的。自动化实验并连续运行它们。混沌工程将自动化构建到系统中,以驱动编排和分析。
最小化爆炸半径
在生产中进行试验有可能导致不必要的客户痛苦。虽然必须考虑一些短期的负面影响,但混沌工程师有责任和义务确保将实验的后果最小化并加以控制。
混沌工程是一种强大的实践,它已经改变了世界上一些最大规模运营中软件的设计和工程方式。在其他实践涉及速度和灵活性的地方,Chaos 专门解决了这些分布式系统中的系统性不确定性。混沌原则为大规模快速创新提供信心,并为客户提供他们应得的高质量体验。
https://www.jiagoushi.pro/principles-chaos-engineering | ||
讨论:知识星球【首席架构师圈】或者加微信小 【ca_cto】或者加QQ群【792862318】 | ||
【jiagoushipro】 【超级架构师】 精彩图文详解架构方法论,架构实践,技术原理,技术趋势。 我们在等你,赶快扫描关注吧。 |
||
QQ群 | 【792862318】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联 ,人工智能等各种新兴技术。 加QQ群,有珍贵的 告和干货资料分享。 |
|
知识星球 | 【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。 | |
抖音 | 【cea_cio】超级架构师 | |
小红书 | 【cea_csa_cto】超级架构师 |
![]() |
站 | CIO(首席信息官) | https://cio.ceo |
CIO,CTO和CDO | https://cioctocdo.com | |
应用开发和开发平台 | https://apaas.dev | |
开发信息 | https://xinxi.dev | |
首席架构师 区 | https://jiagoushi.pro | |
超级架构师 | https://jiagou.dev | |
企业技术培训 | https://peixun.dev |
谢谢大家关注,转发,点赞和点在看。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92347 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!