当前位置:网站首页>ChaosBlade:混沌工程简介(一)
ChaosBlade:混沌工程简介(一)
2022-07-07 06:20:00 【仙女肖消乐】
简介
随着微服务的盛行以及容器技术的普及,借助 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 工具执行。
边栏推荐
- IP地址的类别
- cmake命令行使用
- NCS Chengdu New Electric interview Experience
- LeetCode 715. Range module
- Recommended by Alibaba P8, the test coverage tool - Jacobo is very practical
- OpenGL三维图形绘制
- GoLand set goproxy
- 测试人一定要会的技能:selenium的三种等待方式解读,清晰明了
- Analysis of using jsonp cross domain vulnerability and XSS vulnerability in honeypot
- Analysis of abnormal channel number information before and after AGC re signature service
猜你喜欢
Greenplum6.x搭建_环境配置
Goldbach conjecture C language
opencv之图像分割
Data analysis methodology and previous experience summary 2 [notes dry goods]
Greenplum6.x常用语句
Why choose cloud native database
指针进阶,字符串函数
调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
leetcode135. Distribute candy
Introduction to data fragmentation
随机推荐
Greenplum6.x重新初始化
Pointer advanced, string function
Tronapi wave field interface - source code without encryption - can be opened twice - interface document attached - package based on thinkphp5 - detailed guidance of the author - July 6, 2022 - Novice
Isomorphic C language
[Nanjing University] - [software analysis] course learning notes (I) -introduction
指针进阶,字符串函数
Greenplum 6.x build_ install
redis故障处理 “Can‘t save in background: fork: Cannot allocate memory“
[南京大学]-[软件分析]课程学习笔记(一)-introduction
Simple use of Xray
Frequently Asked Coding Problems
更改当前文件夹及文件夹下文件日期shell脚本
Several methods of calculating the average value of two numbers
MySQL partition explanation and operation statement
JS operation
数据分片介绍
Introduction to data fragmentation
ncs成都新电面试经验
[MySQL] detailed explanation of trigger content of database advanced
为什么要选择云原生数据库