一、什么是混沌工程
1、什么是混沌
混沌是一种现象,在一个动力系统中,因为各种不同的参数变化导致的一系列的连锁反应。
比如:
在南美洲亚马逊河流域热带雨林中的蝴蝶,偶尔的几次振翅,可以在两周以后引起美国得克萨斯州的一场在龙卷风。
因为蝴蝶振动翅膀的行为,导致其身边的空气系统发生变化,并产生微弱的气流,而微弱的气流的产生又会引起四周空气或其他系统产生相应的变化,由此引起一个连锁反应,最终导致其他系统的极大变化。
2、什么是混沌测试
混沌测试 是一种 可试验的、基于系统 的方法来 处理大规模分布式系统中的混乱问题。
通过不断试验,观察系统的行为和反应。了解系统的实际能承受的韧性边界并建立信心,总而言之—— 以试验的方法尽早揭露系统弱点。
3、如果不做混沌测试
我们会尽可能多地编写单元测试,覆盖代码逻辑;
进行足够多的系统测试、场景覆盖测试,确保我们的系统可以与其他组件一起工作;
进行回归测试,确保新功能与老系统的兼容性等。
还会执行性能测试,用以改进处理数百万次请求的性能。
可是,这些对于分布式系统来说还远远不够。
无论我们做了多少测试,仍然无法100%保证我们的系统能够应对生产环境的各种不可预测性。
我们可能会遇到以下的应用层、数据层、中间件层、操作系统层、存储层、网络层存在的各种问题。
所以为了让我们的分布式系统更加健壮,我们需要注入各种可以控制的异常;
并进行全链路实时监控,全面掌握注入异常可能导致的系统问题;
从而 提升系统容错性,建立系统抵御生产环境中不可预知问题的信息。