产品沉思录 产品沉思录 产品沉思录 产品沉思录
Netflix 的猴子军团

Netflix 的猴子军团

Netflix 通过猴子军团的方法提升可用性和可靠性,包括 Chaos Monkey 工具随机禁用生产实例以测试系统的容错能力。该方法确保在面对故障时,系统能够持续服务客户,并通过一系列工具(如 Latency Monkey 和 Security Monkey)模拟不同类型的故障,增强云服务的安全性和高可用性。

本文推荐的是 Netflix 工程博客的一次分享,他们解决的问题几乎每个互联网公司都要遇到,他们提出的解决方法是一个很有趣的角度。这个角度不仅仅在对服务器即使的稳定性、可用性、性能的演练上可用,还在产品设计以及经营上可以考虑,一种反脆弱的方法。

在 2011 年,Netflix 转向使用 AWS 云服务之后,他们一直在关注研究如何提高 Netflix 可用性和可靠性的方法。如今的 Netflix 占北美互联网流量的 1/3 以上,而他们之所以做到在如此大的流量下的稳定和可用,靠的就是一群猴子军团的方法。

AWS 云服务是冗余和容错的。因为没有一个单独的组件可以保证100% 的正常运行时间(甚至最昂贵的硬件最终也会失败) ,所以必须设计一个架构,其中单个组件可以失败,而不影响整个系统的可用性。必须比最薄弱的环节更强大。但仅仅设计一个容错体系架构是不够的。必须不断地测试是否有能力在这些“千载难逢”的失败中存活下来。

想象一下爆胎的情景。

那么最好的方法是什么?

这里发生最有趣的事情之一是 Netflix 经常攻击自己的系统。他们有一个叫做 Chaos Monkey 的工具,可以随机地禁用他们自己的生产实例,以确保他们能够在没有任何客户影响的情况下生存下来,这就是 Netflix 构建 Chaos Monkey 时的哲学。

Chaos Monkey 的原理很简单: 通过构建一个预期故障的服务器架构,系统作为一个整体可以学习如何抵御越来越严重的障碍,即使他们不知道这些障碍在现实生活中何时或如何发生。

这个名字来源于这样一个想法,即在你的数据中心放出一只野生猴子,随机击落服务器并咬断电缆——在此期间,继续不间断地为客户服务。通过在一个工作日的中间运行 Chaos Monkey,在一个仔细监控的环境中,工程师随时准备解决任何问题,仍然可以学到关于我们系统弱点的教训,并建立自动恢复机制来处理它们。因此,下一次当一个实例在周日凌晨3点失败时,我们甚至不会注意到。

受到 Chaos Monkey 成功的启发,他们已经开始创建新的 Chaos Gorilla,这些 Chaos Gorilla 会导致各种各样的故障,或者检测异常情况,并测试在这些情况下生存的能力。一支虚拟的类人猿军队来保证 Netflix 的云安全和高可用性。

Netflix 的猴子军团

推荐