当前位置: 首页 > news >正文

混沌工程——从捣乱的视角看系统稳定性

概念

混沌工程是通过捣乱实验探究系统稳定性的实践过程,其作战武器是风险因子,即在健康的运行环境中引入风险变量来验证系统对风险的抵抗能力,它的作用是推动系统容错能力建设、验证监控告警及时性、提升研发问题排查能力。

混沌工程的工作内容

  1. 推动基础设施建设:DevOps系统建设、监控告警系统建设、日志系统建设。
  2. 推动系统容错能力建设:业务系统需要针对特定故障做好必要的保障措施,比如数据库连不上时如何保障业务操作能够继续而不被终止。
  3. 提升研发的事故处理能力:系统预案建设、系统事故快速响应建设。
  4. 实施混沌实验:实验中引入风险变量验证以上建设是否有效,比如kill实例进程后实例是否能够自动重启以保障继续提供服务。

混沌实验与测试的区别

它与测试方法不同的是专注点不同,其它测试方法关注的是功能正确性,混沌实验关注的是系统稳定性。

混沌实验实施条件

混沌实验以破坏系统运行环境来探究系统稳定性,因此,如果系统本身没有应对异常的基本能力,就没有必要实施混沌实验。团队中要实施混沌实验,则必须具备一下连个条件:

  1. 完善的监控体系:接口监控、实例监控、服务器监控等
  2. 系统具备对异常的处理能力

如何降低实验带来的风险?

团队为系统稳定性安全性做了很多保障性措施,那如何验证这些措施的有效性呢,如果直接实施混沌工程,可能会引发系统宕机、业务数据不一致等生产事故,而如果不进行混沌实验,就没法验证这些保障性措施是否可靠,这就像埋了一颗定时炸弹在身边,混沌实验就好比拆解炸弹,在拆解炸弹的过程中随时都可能发生爆炸。
既然存在炸弹,就必须得进行拆除,那如何降低拆除时炸弹爆炸带来的风险?这里就要引入混沌实验的实施原则——把影响范围控制在最小爆炸半径内,即

  1. 最短时间: 故障发生能够短时间内恢复。
  2. 最小流量: 受影响的请求尽量最少,比如流量低峰期在集群中某个实例上实施混沌实验。
  3. 最小上下游系统: 尽量使事故只影响上游或下游系统。
  4. 最小实验环境: 可以先在测试环境实施混沌实验,最后才在生产环境实施实验。

开源工具

Chaosblade:是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。

Chaos Mesh : Chaos Mesh是云原生计算基金会(CNCF)的孵化项目,是一个云原生混沌工程平台,它提供了各种类型的故障模拟,并具有编排故障场景的巨大能力。

Awesome Chaos Engineering:这个github仓库中收集了许多混沌工程相关的资源文档。

http://www.lryc.cn/news/387309.html

相关文章:

  • Windows宝塔面板部署ThinkPHP8.0创建Vue项目案例
  • 5G频段简介
  • 【python学习】bytearray 数组
  • Labview_Occurrencel(事件发生)
  • 天气网站爬虫及可视化
  • 【python - 数据】
  • 几种热管的构造
  • 【GitOps】使用Google工具JIB实现本地无需安装容器推送镜像,加速SpringCloud项目开发
  • 【proteus经典实战】16X192点阵程序
  • 小白上手AIGC-基于FC部署stable-diffusion
  • 一些指标的学习
  • dledger原理源码分析系列(三)-选主
  • 如何修改PDF文档的作者名称?
  • 从笔灵到AI去痕:全方位提升内容创作与学术诚信
  • 考试如果出现汉诺塔问题怎么办?
  • 导出word模板开发记录
  • PHP爬虫类的并发与多线程处理技巧
  • 用Python将PowerPoint演示文稿转换到图片和SVG
  • 机电公司管理小程序的设计
  • SQL中的子查询和CTE(with ....as..)
  • Cesium 基本概念:创建实体和相机控制
  • vue使用scrollreveal和animejs实现页面滑动到指定位置后再开始执行动画效果
  • 在Ubuntu 16.04上安装和配置GitLab的方法
  • STM32的SPI通信
  • 机器学习引领教育革命:智能教育的新时代
  • 6月29日,每日信息差
  • SpringCloud中复制模块然后粘贴,文件图标缺少蓝色方块
  • JS乌龟吃鸡游戏
  • 第十节:学习ConfigurationProperties类来配置pojo实体类参数(自学Spring boot 3.x的第二天)
  • 如何学习Node.js