这是一篇较为详细的混沌工程调研报告,包含了背景,现状,京东混沌工程实践,希望帮助大家更好的了解到混沌工程技术,通过混沌工程实验,更好的为系统保驾护航。
一、概述
1.1 研究背景
Netflix公司最早系统化地提出了混沌工程的概念。2008年8月,Netflix公司由于数据库发生故障,导致了三天时间的停机,使得DVD在线租赁业务中断,造成了巨大的经济损失。于是Netflix公司开始尝试利用混沌工程优化稳定性保障体系。2010年,Netflix公司开发了混沌工程程序Chaos Monkey,于2012年在Simain Army项目中开源,该程序的主要功能是随机终止在生产环境中运行的虚拟机实例和容器,模拟系统基础设施遭到破坏的场景,从而检验系统服务的健壮性。2019年,阿里巴巴开源了ChaosBlade混沌工程程序,该程序可以结合阿里云进行混沌工程实验。2020年,PingCap 作为国内优秀的数据库领域开源公司,开源了其公司内部的混沌工程实践平台ChaosMesh。
基于以上开源项目,混沌工程项目在国内受到了多家公司的关注,越来越多的公司开始引入混沌工程进行系统稳定性保障工作,通过混沌工程主动注入故障的方式,避免软件系统带来的未知危机。图1.1展示了软件系统稳定性危机与对策发展时间线的对应关系,可以发现,随着软件系统规模的扩大,系统复杂度的增长及开发周期缩短,陆续爆发了多次软件危机,同时,每次的软件危机都促进了软件系统稳定性保障措施的不断完善。而当下的软件系统的规模,复杂度和开发敏捷程度再次迈入了一个新的阶段,导致系统的稳定性面临着新的挑战。此时,主动发现系统稳定性缺陷的混沌工程应运而生,再次弥补了当下系统稳定性保障方式的短板。
图1.1 软件系统稳定性危机和对策发展时间线图 [来源:中国信息通信研究院]
1.2 研究目的
塔勒布曾经在《反脆弱》一书中阐述了“系统如何在不确定性中获益”的思想,混沌工程基于这一伟大思想,提倡使用一系列实验来真实地验证系统在各类故障场景下的表现,通过频繁地进行大量实验,使得系统本身的反脆弱性持续增强。每一次故障中的获益,让系统不断进化,形成正向循环,逐步提高系统的质量,保证系统的健壮性。因此,混沌工程研究的首要目的就是主动发现系统的稳定性缺陷。表1-1列举了近几年比较严重的几个系统稳定性故障事件,从侧面反映了系统稳定性保障的重要性。
表1-1 系统稳定性故障事件
| 公司名称 | 发生时间 | 持续时长 | 影响范围 | 故障原因 |
|---|---|---|---|---|
| 哔哩哔哩 | 2021年7月 | 约1小时 | 影响了视频播放、直播等多个核心服务 | 机房故障,灾备系统失效 |
| 滴滴 | 2021年2月 | 约1小时 | 滴滴打车APP | 系统内部错误 |
| 谷歌 | 2020年12月 | 约1小时 | 谷歌旗下多个业务 | 存储超出限额 |
| 亚马逊 | 2020年11月 | 约5小时 | 部分服务器无法访问 | 不当的运维操作触发了系统漏洞 |
| 微软 | 2020年9月 | 约5小时 | Microsoft Office 36办公软件和Azure云产品 | 流量激增导致服务中断 |
当混沌工程成为常态化的系统稳定性的保障手段后,系统的整体稳定性将得到进一步提升。通过混沌工程平台,主动向系统注入故障,验证和评估系统抵抗故障并保持正常运行的能力,提前识别未知的缺陷并进行修复,保障系统更好得抵御生产环境中的失控条件,有效提升系统的整体稳定性。
1.3 研究意义
混沌工程的主要研究意义在于提高系统的稳定性,通过主动向系统中注入故障的方式,研究和提高系统的健壮性,在一定程度上弥补了系统发生故障时被动响应的短板,降低了系统应对故障的风险和成本。表1-2列举了使用混沌工程前后的系统稳定性保障方式的对比,可以发现,使用混沌工程后,系统稳定性的保障方式更加出色。
表1-2 使用混沌工程前后的系统稳定性保障方式对比

混沌工程通过模拟故障来验证系统的健壮性,主动发现稳定性缺陷。Netflix的ChaosMonkey开创了这一领域,阿里巴巴和PingCap也贡献了开源项目。京东利用混沌工程平台泰山进行故障演练,提高系统应对异常的能力,强调自动化、可视化和精准化的实践方法。未来,混沌工程可能会与AI结合,进一步提升自动化水平和量化指标。

最低0.47元/天 解锁文章
2258

被折叠的 条评论
为什么被折叠?



