+
95
-

回答

现在大型系统都是由很多子系统和硬件组成,系统越大越容易出现各式各样的问题,比如磁盘满了、断电、断网、子系统故障等等故障。

这些故障信息就是最真实的混沌工程变量。

为了能够更体感、有效率地描述故障,优先分析了P1和P2的故障,提出一些通用的故障场景并按照IaaS层、PaaS层、SaaS层的角度绘制了故障画像。


混沌工程到底是什么?

混沌工程师通过应用一些经验探索的原则,来学习观察系统是如何反应的。

这就跟科学家做实验去学习物理定律一样,混沌工程师通过做实验去了解系统。



上图就是混沌工程的典型代表 - 猴子。拜 Netflix 所赐,现在大部分的混沌工程项目都叫做 Monkey,也就是一只讨厌的猴子,在你的系统里面上蹦下窜,不停捣乱,直到搞挂你的系统。

然后,我们需要知道,为什么需要混沌工程。应用混沌工程能提升整个系统的弹性。通过设计并且进行混沌实验,我们可以了解到系统脆弱的一面,在还没出现对用户造成伤害之前,我们就能主动发现这些问题。

混沌工程其实是很重要的,但我之前一直以为混沌工程就是测试,但它们还是有区别的。虽然混沌工程跟传统测试通常都会共用很多测试工具的,譬如都会使用错误注入工具,但混沌工程是通过实践对系统有更新的认知,而传统测试则是使用特定方式对某一块进行特定测试。譬如在传统测试里面,我们可以写一个断言,我们给定特定的条件,产生一个特定的输出,如果不满足断言条件,测试就出错了,这个其实是具有很明确的特性。但混沌工程是试验,而试验会有怎样的新信息生成,我们是不确定的。譬如我们可以进行下面的这些试验:

模拟整个 IDC 当掉

选择一部分网络连连接注入特定时间的延迟

随机让一些函数抛出异常

强制 NTP 时间不同步

生成 IO 错误

榨干 CPU

这些试验到底会有什么样的结果,有些我们可以预料,但有些可能我们就不会预先知道,只有发生了,才会恍然大悟。

网友回复

我知道答案,我要回答