混沌工程(Netflix系统稳定之道)——Aaron Blohowiak


混沌工程

存在的意义

混沌工程存在的意义在于,能让复杂系统中根深蒂固的混乱和不稳定性浮出水面,让我们可以更全面地理解这些系统中的固有现象,从而有根据地在分布式系统中实现更好的工程设计,来不断提高系统弹性。

混沌工程和故障注入得区别

混沌工程和故障注入本质上是思维方式上的不同。故障注入首先要知道会发生什么故障,然后一个一个地注入,然后在复杂分布式系统中,想要穷举所有可能的故障,本身就是奢望。混沌工程地思维方式是主动去找故障,是探索性的,你不知道摘掉一个节点、关掉一个服务会发生什么故障,虽然按计划做好了降级预案,但是关闭节点时却引发了上游服务异常,进而引发雪崩,这不是故障注入或预先计划能发现的。混沌工程是一种帮助我们获得更多的关于系统的新认知的实验方法。它和已有的功能测试、集成测试等测试已知属性的方法有本质的区别。

实施混沌工程的前提条件

  • 混沌工程非常适合用于暴露生产系统中未知的脆弱环节,但如果你很确定一个混沌工程实验会导致系统出现严重的故障,那么进行这样的实验是没有任何意义的。
  • 实施混沌工程的另一个前提条件是配套监控系统,你需要用它来判断系统当前的各项状态。

原则

  • 建立稳定状态的假设
  • 用多样的现实世界事件做验证
  • 在生产环境中进行实验
  • 自动化实验以持续运行
  • 最小化爆炸半径

文章作者: maybe
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 maybe !