简介

随着微服务的盛行以及容器技术的普及,借助 Kubernetes
的容器编排能力,部署一套分布式系统的难度也越来越低。但随之而来的是越来越复杂的系统,以及越来越难的系统可靠性测试,有时仅仅是一个接口的故障,就可能导致整个系统的雪崩。在雪崩中,找到那个最初故障的接口也十分困难,因为到处都在报错。

为了解决这些问题,除了不断减少服务的耦合,建立强大的监控系统以及设置熔断、限流等策略等方式,这时混沌工程就出现了

什么是混沌工程

根据混沌工程原则(PRINCIPLES OF CHAOS ENGINEERING)[1]:混沌工程是在分布式系统上进行实验的学科,
目的是建立对系统抵御生产环境中失控条件的能力以及信心。

大规模分布式软件系统的发展正在改变软件工程。作为一个行业,我们很快就采用了提高开发灵活性和部署速度的实践。但伴随着这些优点,一个迫切问题出现了,那就是:我们对投入生产的复杂系统有多少信心?

即使分布式系统中的所有单个服务都正常运行, 但这些服务之间的交互也会导致不可预知的结果。这些不可预知的结果,
由影响生产环境的罕见且具有破坏性的事件复合而成,令这些分布式系统存在内在的混沌。

需要在异常行为出现之前,在整个系统内找出这些弱点。这些弱点包括以下形式:
当服务不可用时的不正确回滚设置 不当的超时设置导致的重试风暴 由于下游依赖的流量过载导致的服务中断 单点故障时的级联失败等
在这些弱点通过生产环境暴露给用户之前,必须主动的发现这些重要的弱点。并需要一种方法来管理这些系统固有的混沌,
通过增加的灵活性和速率以提升我们对生产环境部署的信心, 尽管系统的复杂性是由这些部署所导致的。

采用基于经验和系统的方法解决了分布式系统在规模增长时引发的问题,
并以此建立对系统抵御这些事件的能力和信心。通过在受控实验中观察分布式系统的行为来了解它的特性,我们称之为混沌工程。

ChaosBlade[2] 中文名混沌之刃,是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,是内部项目
MonkeyKing
对外开源的项目,其建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。旨在帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性提供保障。

目前支持的场景有:基础资源、Java 应用、C++ 应用、Docker 容器以及 Kubernetes
平台。该项目将场景按领域实现封装成单独的项目,不仅可以使领域内场景标准化实现,而且非常方便场景水平和垂直扩展,通过遵循混沌实验模型,实现chaosblade cli 统一调用。

该项目体验极好,仅需一个可执行文件 blade,就可完成多种场景的实验(一些复杂场景如 Java
应用实验,则需要相关工具包),同时如果不想下载 chaosblade 工具包,快速体验 chaosblade,可以拉取 docker
镜像并运行,在容器内体验。

该项目于 2020 年 5 月 27 日发布了最新了 v0.6.0[3] 版本,本系列文章的全部实践也将基于这个版本以及该版本的修复版本
v0.6.x 进行。

ChaosBlade-Operator

ChaosBlade-Operator 是 ChaosBlade 的 Kubernetes
平台实验场景实现,也是本系列文章主要使用的工具。其将混沌实验通过 Kubernetes 标准的 CRD 方式定义,很方便的使用
Kubernetes 资源操作的方式来创建、更新、删除实验场景,包括使用 kubectl、client-go
等方式执行,而且还可以使用上述的 chaosblade cli 工具执行。

ChaosBlade:混沌工程简介(一)相关推荐

  1. ChaosBlade混沌工程工具

    目录 ChaosBlade介绍 使用步骤 blade命令介绍 适用的场景 基础资源类故障 网络类故障 进程类故障 java语言类故障 shell脚本类故障 HTTP类故障 RPC类故障 servlet ...

  2. China .NET Conf 2019-.NET技术架构下的混沌工程实践

    这个月的8号.9号,个人很荣幸参加了China.NET Conf 2019 , 中国.NET开发者峰会,同时分享了技术专题<.NET技术架构下的混沌工程实践>,给广大的.NET开发小伙伴介 ...

  3. 如何设计一个混沌工程实验?

    文章目录 1 什么是混沌工程? 2 为什么需要混沌工程? 3 混沌工程和测试有什么区别? 4 混沌工程的先决条件是什么? 4.1 先解决确定会导致问题的弱点 4.2 监控系统来确定系统的状态 5 混沌 ...

  4. Netflix混沌工程手册Part 2:混沌工程原则

    本文翻译自Netflix工程师合著的 *Chaos Engineering*一书.这本书介绍了混沌工程的主要概念,以及如何在组织中实践这些概念和经验.也许我们开发的相关工具只适用于Netflix自身的 ...

  5. 混沌工程——各大厂实践分享汇总(上篇)

    混沌工程在创业公司的实践(酷家乐) 会议介绍 主讲人:陆蓉蓉(小眠)- 酷家乐测试开发技术专家 以混沌工程实施顺序为主线,介绍了酷家乐混沌工程从开始到落地的实践.实践顺序:故障场景抽象->调研开 ...

  6. 都2021年了,你还不知道混沌工程( Chaos Engineering)?

    混沌工程是什么 混沌工程是一门新兴的技术学科,初衷是通过实验性的方法,让人们建立对于复杂分布式系统在生产中抵御突发事件能力的信心. 混沌工程是一门相对高级的系统稳定性治理方法论,它提倡采用探索式的研究 ...

  7. 线上故障分析-故障分级,原因,分类,混沌工程,排除方法

    线上故障分析 1 生产故障分级规范概要 1.1 开篇 1.2 事故等级定义 1.2.1 故障等级定义 1.2.2 故障报告模板示例 1.2.3 故障响应处理机制 1.2.4 思考 2 生产故障原因和分 ...

  8. 浩鲸科技基于ChaosBlade的混沌工程实践

    简介:浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化.平台化和工具化的形式,帮助内部产品研发部 ...

  9. ChaosBlade:从混沌工程实验工具到混沌工程平台

    简介:ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,已加入到 CNCF Sandbox 中.起初包含面向多环境.多语言的混沌工程实验工具 chaosblade,到现在发展到面向多集 ...

最新文章

  1. 成功解决Ignoring invalid distribution -yqt5
  2. Qt 清空QPixMap
  3. Qt Creator部署到设备
  4. Nacos的服务注册表结构是怎样的?
  5. 兔子--百度地图所需的jar+so下载地址
  6. 搭建Cent OS7服务器时需要注意的一些问题
  7. SAP License:新总账的表结构
  8. 数据结构 5-3-3 二叉树的线索化
  9. python pandas库用法_Python使用Pandas库常见操作详解
  10. 写好一份属于自己的简历
  11. php获取openid提示错误40163,微信网页授权 40163 code已被使用过
  12. 没错,我是高端吃瓜玩家(搞懂摩斯密码)
  13. html5播放器声音小,页面声音播放(HTML5 embed标签)
  14. 触动精灵--点击函数封装--一些特殊情况的使用--狂暴传奇
  15. 值得学习的言语 | 对话技巧 | 开场白
  16. 上课作业(5)——#576. 饥饿的牛(hunger)
  17. 7-2 求奇数和 (5 分)
  18. HP-EVA4400故障导致的oracle数据库丢失的恢复过程
  19. 5G和MEC在工业互联网中的应用探讨
  20. 亚马逊抄作业,股票打折安排上

热门文章

  1. 在windows下使用docker做本机linux环境系统测试
  2. chrome访问淘宝和京东崩溃,解决方法
  3. Spring MVC 数据类型转换器
  4. 杀戮间服务器未响应,杀戮间2打不开怎么办,游戏没反应的解决办法
  5. 怎样使用ApowerMirror实现将手机屏幕投屏到电脑
  6. php:获取字符串的长度
  7. 竟有比双十一更令人发指的福利……
  8. MT7628平台编程设计指南资料
  9. MTK MT8735射频设计资料参考
  10. 冬季药膳食疗强烈推荐