混沌工程 笔记

1. 混沌工程 笔记

混沌工程是通过故障注入的方式帮助系统寻找薄弱点, 从而提高系统的稳定性。随着微服务、云原生相关技术的发展, 分布式系统已经流行在业界各处, 但因此也带来了复杂度急剧上升、故障发生难以预测后果、难以避免与验证等挑战。而混沌工程正是通过故障注入等方式为切入点, 帮助解决以上问题。

1.1. 什么是混沌工程

在生产环境中实际运行分布式系统, 难免会有各种不可预料的突发事件发生。在复杂的分布式系统中, 无法阻止这些故障的发生, 我们应该致力于在这些异常行为被触发之前, 尽可能多地识别风险。然后, 针对性地进行加固, 防范, 从而避免故障发生时所带来的严重后果。

混沌工程正是这样一套通过在生产分布式系统上进行实验, 主动找出系统中的脆弱环节的方法学。这种通过实证的验证方法显然可以为我们打造更具弹性的系统, 同时让我们更透彻的掌握系统运行时的各种行为规律。我们能够在不断打造更具弹性(弹性: 系统应对故障、从故障中恢复的能力)系统的同时, 树立运行高可用分布式系统的信心。

实践混沌工程可以简单如在生产环境中运行 kill -9 来模拟一个服务节点的突然宕机, 也可以复杂到在线上挑选一小部分(但足够代表性)的流量, 按一定规则或频率自动运行一系列实验。

1.2. 业内实践

  • Netflix 最早系统化地提出了混沌工程的概念, 并出版了混沌工程领域内的首部书籍《混沌工程: Netflix 系统稳定性之道》[1], 在本书中提出了混沌工程成熟度模型与应用度模型, 并总结了五条高级原则, 对于混沌工程的发展具有指导性意义。另外 Netflix 开源了其混沌工程项目 - Chaos Monkey[3]。
  • 阿里巴巴是国内较早开始探索混沌工程并做出开源的公司, 其开源项目 ChaosBlade[4] 可以结合阿里云进行 chaos 实验。
  • PingCap 作为国内优秀的数据库领域开源公司, 其在混沌工程领域一直有投入, 并在最近开源了内部混沌工程实践平台 - Chaos Mesh[5]。
  • Gremlin 为一家混沌工程商业化公司, 该公司提供了一个混沌工程实验平台, 通过将其 agent 安装在云主机上触发故障。同时提出了 chaos gameday[2] 的概念。

1.3. 参考

https://mp.weixin.qq.com/s/kZ_sDdrbc-_trVLNCWXyYw

https://chaosblade.io/docs/

1.4. 参考文献

  • 《混沌工程: Netflix 系统稳定性之道》:
    https://www.oreilly.com/library/view/chaos-engineering/9781491988459/
  • 《How To Run a GameDay》:
    https://www.gremlin.com/community/tutorials/how-to-run-a-gameday/
  • Netflix 混沌工程开源项目 - Chaos Monkey:
    https://github.com/Netflix/chaosmonkey
  • 阿里巴巴 混沌工程开源项目 - ChaosBlade:
    https://github.com/chaosblade-io/chaosblade
  • PingCAP 混沌工程开源项目 - Chaos Mesh:
    https://github.com/pingcap/chaos-mesh
  • 分布式一致性测试框架 - Jepsen:
    https://jepsen.io/
  • Zhou, Xiang, et al. “Latent error prediction and fault localization for microservice applications by learning from system trace logs.” Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2019. :

猜你喜欢

转载自blog.csdn.net/wan212000/article/details/131456919