当前位置:网站首页>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 工具执行。
边栏推荐
- 注解@ConfigurationProperties的三种使用场景
- 为什么要选择云原生数据库
- LeetCode 715. Range module
- Appeler l'interface du moteur de création du service multimédia de jeu Huawei renvoie le Code d'erreur 1002, le message d'erreur: les paramètres sont l'erreur
- Golang etcdv3 reports an error. The attribute in grpc does not exist
- How to realize sliding operation component in fast application
- With an annual salary of 50W, Alibaba P8 will come out in person to teach you how to advance from testing
- 模拟卷Leetcode【普通】1609. 奇偶树
- ESP32-ULP协处理器低功耗模式RTC GPIO中断唤醒
- 年薪50w阿裏P8親自下場,教你如何從測試進階
猜你喜欢

Goldbach conjecture C language

Greenplum6.x常用语句

Rapid integration of authentication services - harmonyos platform
![Other 7 features of TCP [sliding window mechanism ▲]](/img/ff/c3f52a7b89804acfd0c4f3b78bc4a0.jpg)
Other 7 features of TCP [sliding window mechanism ▲]

How to integrate app linking services in harmonyos applications

调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
![[Nanjing University] - [software analysis] course learning notes (I) -introduction](/img/57/bf652b36389d2bf95388d2eb4772a1.png)
[Nanjing University] - [software analysis] course learning notes (I) -introduction

Platformization, a fulcrum of strong chain complementing chain

2022-06-30 Unity核心8——模型导入

路由信息协议——RIP
随机推荐
Skills that testers must know: Selenium's three waiting ways are interpreted clearly
Pointer advanced, string function
[Yugong series] February 2022 U3D full stack class 007 - production and setting skybox resources
为什么要选择云原生数据库
Data analysis methodology and previous experience summary 2 [notes dry goods]
Output all composite numbers between 6 and 1000
MySQL主从延迟的解决方案
You should use Google related products with caution
模拟卷Leetcode【普通】1705. 吃苹果的最大数目
平台化,强链补链的一个支点
Required String parameter ‘XXX‘ is not present
南京商品房买卖启用电子合同,君子签助力房屋交易在线网签备案
Goldbach conjecture C language
指针进阶,字符串函数
【踩坑】nacos注册一直连接localhost:8848,no available server
Analysis of using jsonp cross domain vulnerability and XSS vulnerability in honeypot
Calculation s=1+12+123+1234+12345 C language
OpenGL帧缓冲
Opencv converts 16 bit image data to 8 bits and 8 to 16
Greenplum6.x-版本变化记录-常用手册