第12章 实验选择问题(及解决方案 实验选择问题(及解决方案)
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
很难想象现实世界中的大型系统不涉及人与机器的交互。当我们设计这样一个系统时,最困难(也是最重要)的部分往往是如何最好地利用这两种不同的资源。在本章中,我将提出抗灾社区应重新思考如何将人类和计算机作为资源加以利用。具体来说,我认为,利用可观测性基础设施开发有关系统故障模式的直觉,并最终以混沌实验的形式释放这些直觉,是计算机比人类更适合扮演的角色。最后,我将提供一些证据,证明社会各界已准备好朝这个方向迈进。
选择实验
与本书其余部分所讨论的方法论独立 (并与之互补)的是实验选择问题:选择向哪些系统执行注入哪些故障。正如我们所看到的,选择正确的实验意味着可以比用户更早地发现错误,也意味着可以大规模地学习分布式系统行为的新知识。不幸的是,由于此类系统固有的复杂性,我们可能运行的不同实验的数量是天文数字--与通信实例的数量成指数关系。例如,假设我们想详尽测试一个涉及 20 个不同服务的应用程序中每种可能的节点崩溃组合的影响。即使是这个规模不大的分布式系统,也有220种--超过100 万种--可能仅仅受到节点崩溃的影响!
在这个巨大的组合空间中,我们该如何选择需要花费时间和资源的实验呢?穷尽式搜索是不可行的--即使是一个规模不大的分布式系统,在我们完成所有可能的实验之前,太阳就已经熄灭了。目前的技术水平提供了两个合理的答案,尽管并不令人满意,我们在本书中已经考虑过这两个答案。
随机搜索
早期的 混沌方法(例如,该学科借用其名称的猴子)随机搜索故障空间(见图 12-1)。随机方法有很多优点。首先,它易于实现:一旦我们列举了故障空间(例如,实例崩溃的所有可能组合,使用混沌猴子开始时使用的简单示例),我们就可以简单地从中均匀随机抽样选择实验。随机方法的运行也不需要任何领域知识:它在任何分布式系统上的表现都一样好。