一、前言
很久之前曾基于linux内核自带的TC和netem模拟一些公网中遇到的极端情况(延迟、丢包、重复、损坏和乱序等),验证了我们传输程序的健壮性!
具体细节可见这篇老博客: https://blog.csdn.net/u013128262/article/details/84784663
最近在复现kafka生产端一个timeout异常场景时,发现之前方案时因为内核和OS版本问题有些差异而无法直接使用老的命令,便把目光迅速调整到阿里开源的这款混沌工程新贵ChaosBlade(https://github.com/chaosblade-io/chaosblade
)。
二、ChaosBlade简介
ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。
ChaosBlade 不仅使用简单,而且支持丰富的实验场景,场景包括:
- 基础资源:比如 CPU、内存、网络、磁盘、进程等实验场景;
- Java 应用:比如数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景;
- C++ 应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景;
- Docker 容器:比如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景;
- 云原生平台:比如 Kubernetes 平台节点上 CPU、内存、网络、磁盘、进程实验场景,Pod 网络和 Pod 本身实验场景如杀 Pod,容器的实验场景如上述的 Docker