在分布式系统中查找故障超出了标准应用程序测试的能力。公司需要更智能的方法来持续测试微服务。一种越来越受欢迎的策略是混沌工程。使用这种主动测试实践,组织可以在故障导致代价高昂的停机之前寻找并修复故障。继续阅读以了解混沌工程如何提高大型分布式系统的可靠性。
混沌工程是一种发现分布式系统漏洞的策略。这种做法需要在生产过程中将故障和错误注入软件。一旦你故意造成错误,监控效果以查看系统如何响应压力。通过故意“破坏”,您会发现可能影响组件和最终用户的新问题。在导致数据丢失或服务影响之前解决已识别的弱点。
Netflix是第一个引入混沌工程的组织。2010年,该公司发布了一款名为ChaosMonkey的工具。使用此工具,管理员能够以随机间隔在随机位置造成故障。这种测试方法使Netflix的分布式基于云的系统对故障更具弹性。
许多科技公司采用混沌工程来提高分布式系统的弹性。Netflix继续开创这种做法,但Facebook、谷歌、微软和亚马逊等公司也有类似的测试模型。更多的传统组织也开始使用混沌测试。例如,澳大利亚国民银行应用混乱随机关闭服务器并建立系统弹性。
SunMicrosystem的PeterDeutsch和他的同事列出了程序员通常对分布式系统做出的八个错误假设:
这些谬误显示了在微服务架构中设计的分布式应用程序的动态性。这种系统有很多活动部件,管理员对云基础设施几乎没有控制权。对设置的不断更改会导致意外的系统行为。无法预测这些行为,但我们可以通过混沌工程重现和测试它们。
混沌工程与故障测试之间的区别
失败测试检查单个条件并确定属性是真还是假。这样的测试以先入为主的方式破坏了系统。结果通常是二进制的,它们不会发现有关应用程序的新信息。混沌测试的目标是生成关于系统的新知识。更广泛的范围和不可预测的结果使您能够了解系统的行为、属性和性能。您开辟了新的探索途径,并了解如何改进系统。
虽然不同,但混乱和故障测试确实在关注点和使用的工具上有一些重叠。当您使用这两个学科来测试应用程序时,您会获得最佳结果。
混沌工程中的所有测试都是通过所谓的混沌实验进行的。每个实验都从将特定故障注入系统开始,例如延迟、CPU故障或网络黑洞。然后,管理员观察并比较他们认为会发生的事情与实际发生的事情。一个实验通常涉及两组工程师。第一组控制故障注入,第二组处理效果。
以下是混沌实验的分步流程:
工程师分析系统并选择导致什么故障。混沌工程的核心步骤是预测系统遇到特定错误后的行为方式。
工程师还需要在开始测试之前确定关键指标阈值。指标通常分为两组:
在某些测试中,这两个指标可能重叠。
工程师将特定故障添加到系统中。由于无法确定应用程序的行为方式,因此始终有一个备份计划。大多数混沌工程工具都有反向选项。这样,如果出现问题,您可以安全地中止测试并返回应用程序的稳定状态。
当错误导致重大问题时,工程师会监控系统。关键指标是主要关注点,但始终监控整个系统。如果测试开始模拟中断,团队会寻找修复它的最佳方法。
第4步:验证(或反驳)你的假设
成功的混沌测试有两种结果之一。您要么验证系统的弹性,要么找到需要修复的问题。两者都是很好的结果。
虽然名称可能暗示其他情况,但混沌工程中没有任何随机性。
这种测试方法遵循严格的原则,包括以下原则:

所有实验都应反映现实和可能的情况。当您注入现实生活中的故障时,您会很好地了解哪些流程和技术需要升级。
如果将测试应用于生产环境,您只能看到中断对系统的影响。如果您的团队几乎没有混沌测试经验,让他们开始在开发环境中进行试验。准备好后测试生产环境。
始终最小化混沌测试的爆炸半径。由于这些测试发生在生产环境中,因此测试可能会影响最终用户。另一个标准预防措施是让团队为实际事件响应做好准备,以防万一。
您可以将混沌实验自动化到与CI/CD管道相同的级别。持续的混乱使您的团队能够不断改进当前和未来的系统。
混沌工程的好处跨越多个业务领域:
混沌工程通过防止长时间的中断来帮助阻止巨大的收入损失。这种做法还允许公司在不损失服务可靠性的情况下快速扩展。
来自混沌实验的见解可以减少事故,但这并不是技术优势的终点。团队对系统模式和依赖关系有了更深入的了解,从而使他们能够构建更强大的系统设计。混沌测试对于工程团队来说也是极好的随叫随到的培训。
更少的中断意味着对最终用户的干扰更少。改进的服务可用性和持久性是混沌工程的两个主要客户优势。
这些是最常见的混沌工程工具:
为了跟上新工具的步伐,请为ChaosEngineeringSlack社区创建的图表添加书签。除了工具之外,该图表还记录了从事混沌测试的已知工程师。
混沌实验没有限制。您运行的测试类型取决于您的分布式系统的架构和业务目标。
以下是最常见的混沌测试列表:
混沌工程是DevOps文化中的一种常见做法。这样的测试使DevOps能够彻底分析应用程序,同时跟上敏捷开发的节奏。DevOps团队通常使用混沌测试来定义基础设施的功能基线和容差。测试还通过阐明稳态和混沌输出来帮助创建更好的政策和流程。一些公司更喜欢将混沌工程集成到他们的软件开发生命周期中。集成混乱使公司能够确保每个新功能的可靠性。
任何大型分布式系统的必备工具
对软件的持续检查对于应用程序的安全性和功能性都至关重要。通过主动检查系统,您可以减轻运营负担、提高系统可用性和弹性。
本文来源:国外服务器--什么是混沌工程(混沌工程是什么)
本文地址:https://www.idcbaba.com/guowai/4243.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



