混沌工程Chaos

混沌工程

  • 定义:混沌工程是传统测试的补充 。测试类型包括:有功能性测试,有性能测试,还有很大一部分是各种混沌测试,模拟各种现实中可能出现的情况。故障演练、容灾演练在混沌工程范畴。
  • 业务背景:分布式系统天生有着各种相互依赖,可以出错的地方数不胜数
  • 需求:

    • 为了更方便地验证系统对于各种故障的容忍能力,打造更具弹性(弹性:系统应对故障、从故障中恢复的能力)系统
    • 在不断的同时,树立运行高可用分布式系统的信心
    • 对自身稳定性有个更全面的了解
    • 混沌工程让你有机会把问题提前/通过不断失败避免失败。
  • 操作:

    • 用于向基础设施以及业务系统中注入各类故障类型
  • 实践混沌工程示例:

    • 可以简单如在生产环境中运行 kill -9 来模拟一个服务节点的突然宕机
    • 也可以复杂到在线上挑选一小部分(但足够代表性)的流量,按一定规则或频率自动运行一系列实验
    • 精准的控制(爆炸半径、影响范围)、支持更多场景的模型
  • 通常遵循四个操作步骤
    1. 首先定义指标(自动化指标分析)(采用业务指标比技术指标更易用)
    2. 创建假设。
    3. 模拟现实世界中可能发生的事情(故障注入)。
    4. 证明或反驳你的假设。
  • 业内实践

    • 混沌工程(Chaos Engineering) 总结

    • 先驱,Netflix 的 Chaos Monkey

      • https://pingcap.com/blog-cn/c...
      • 最早系统化地提出了混沌工程的概念,并出版了混沌工程领域内的首部书籍。在本书中提出了混沌工程成熟度模型与应用度模型,并总结了五条高级原则,对于混沌工程的发展具有指导性意义。
      • 原则之一易用性

        • 易于编排实验的错误注入行为,易于查看**实验的状态和结果
      • 原则之一扩展性

        • 基于现有实现,易于扩展新的故障注入种类
    • 阿里 ChaosBlade
    • PingCap:Chaos Mesh
    • Gremlin:chaos gameday 红蓝对抗概念

你可能感兴趣的