dbaplus社群 2024年10月03日
每年宕机不超10分钟,Netflix如何使用混沌工程创建弹性系统
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

文章以Netflix的混沌工程实践为例,讲述其面对业务增长带来的挑战,进行混沌工程实践的方法、原则及用例,强调测试对确保复杂系统稳定运行的关键作用。

🎯Netflix曾通过邮件提供DVD租赁服务,后创建流媒体服务并建立技术栈,但业务增长使IT基础设施拓展面临挑战,微服务带来通信失败风险及弹性问题。

💻Netflix进行混沌工程实践,方法包括实施无停机时间系统并自动修复故障,创建Chaos Monkey工具关闭服务器并检查流量路由,以及采用系统方法进行测试与修复。

📜混沌工程原则包括自动化测试、在生产中测试、根据潜在影响和频率运行事件测试、关注可测量输出、控制并最小化爆炸半径。

📈混沌工程用例包括减少故障次数、提高系统可用性、查找潜在故障并自动修复等,Netflix通过该实践每年停机时间仅几分钟。

原创 Neo Kim 2024-10-03 08:02 广东

案例研究表明,测试对确保复杂系统稳定运行至关重要。



前言:在复杂系统中,从不同微服务之间的交互到现实世界的破坏性事件,不可预测的结果随时笼罩着生产环境,混沌工程的初衷就是让工程师建立应对复杂系统中未知问题的信心。作为混沌工程的鼻祖 Netflix,在混沌工程的探索上,有着丰富的经验, 接下来让我们Netflix 的混沌工程实践。




背景


曾经有一段时间,Netflix 通过邮件提供 DVD 租赁服务,但由于增长率有限,因此他们转而创建流媒体服务,并建立一个整体技术栈。


随着业务的爆炸性增长,IT基础设施拓展也迎来了挑战。



继而Netflix 团队建立了微服务,但这也带来了一些新挑战:


1. 可靠的网络


计算机网络受到以下影响:



因此服务之间存在通信失败的风险。


2. 弹性


分布式系统的弹性能力取决于其最薄弱的组件,而最薄弱的组件通常等到发生故障影响服务后才会被发现。


混沌工程


为了更好地管理分布式系统,Netflix 团队进行了混沌工程实践。方法如下:


1. 实施


不存在停机时间为0的系统,但可以通过自动化来最大限度地减少停机时间。


因此,Netflix 团队会在办公时间主动发现潜在故障,然后自动修复。


这意味着如果故障再次发生,可以通过自动化快速修复,这种在受控实验中观察分布式系统的行为称为混沌工程,有助于在潜在问题导致生产中断之前发现它。


Chaos Monkey 关闭主数据库的流量


Netflix 团队创建了一个随机关闭服务器的工具,并将其命名为Chaos Monkey:



然后他们检查流量是否被路由到另一台服务器而不会影响用户。


混沌工程的系统方法


他们进行混沌工程的方法如下:



然后重新运行测试以检查自动修复是否按预期工作,并在生产中运行混沌工程以确保准确性,但爆炸半径必须加以控制,以免影响用户。方法如下:



此外,他们适当测量测试影响以防止不必要的损坏。


2. 原则


混沌工程原理


Netflix 团队围绕以下原则创建了混沌工程:



3.用例


混沌工程用例


以下是Netflix 团队利用混沌工程所做的事情:



此外,他们还创建了Chaos Monkey变体来处理更多用例。


结语


他们用 Go 编写了 Chaos Monkey,并将其开源。


目前, Netflix 每年的停机时间仅有几分钟,并且仍然是全球最大的流媒体服务平台。


这个案例研究表明,测试对确保复杂系统稳定运行至关重要。


作者丨Neo Kim   编译丨Rio

来源丨https://substack.com/@systemdesignone/p-146865156


*本文为dbaplus社群编译整理,如需转载请取得授权并标明出处!欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn


跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Netflix 混沌工程 系统稳定 测试
相关文章