混沌工程
2025-02-10 15:52:17 0 举报
AI智能生成
混沌工程(Chaos Engineering)是一种前沿的工程实践,通过在生产环境中主动创造故障情景来验证系统弹性和故障容错能力,以确保服务的可靠性和稳定性。核心内容集中在设计旨在模拟真实世界故障的实验,如网络延迟、服务器故障等,确保系统在遇到此类情况时仍能正常运行。 文件类型可以是技术白皮书或操作手册,这些文档详细记录了混沌实验的设计、实施步骤和结果分析。使用修饰语时,可能会采用“系统性”和“有预谋的”来形容混沌工程创建失败的方式,旨在通过有组织地模拟失败来加强系统的鲁棒性,而不是在真正的灾难时刻遇到意外故障。
作者其他创作
大纲/内容
实验
故障注入测试
自动化实验以持续运行
自动执行实验
混沌工程自动化平台(CHAP)
自动创建实验
正确路径驱动的故障注入
Automating Failure Testing at Internet Scale
设计实验
选定假设
设定实验范围
识别出要监控的指标
在组织内沟通到位
执行实验
分析实验结果
扩大实验范围
自动化实验
工具
Simoorg 故障注入
Pumba
Chaos Lemur
Chaos Lambda
Blockade
Chaos-http-proxy
Monkey-ops
Chaos Dingo
Tugbot
toxiproxy
混沌工程原则
建立稳定状态的假设
稳定状态
基于期望的业务指标来描述系统的稳定状态
系统倾向于维持在一定范围或模式内的属性,如人体的体温
业务指标优于系统指标
指标的获取延迟要足够的低
描述稳定状态
通过对比现在和过去的数据
建立假设
混沌工程实验时,应该首先在心里对实验结果有个假设
用多样的现实世界事件做验证
硬件故障
功能缺陷
状态转换异常
网络延迟和分区
上行或下行输入的大幅波动以及重试风暴
资源耗尽
服务之间不正常的或预料之外的组合调用
拜占庭故障
资源竞争条件
下游依赖故障
在生产环境中进行实验
状态和服务
生产环境中的输入
第三方系统
生产环境变更
外部有效性
离生产环境越近越好
最小化爆炸半径
可以随时终止实验
成熟度模型
熟练度
入门
未在生产环境中进行实验
全人工流程
实验结果反映系统指标而不是业务指标
对实验对象注入一些简单事件,如关闭节点
简单
用复制的生产环境中的流量来运行实验
自助式创建实验,自动运行实验,手动监控和停止实验
实验结果反映聚合的业务指标
对实验对象注入较高级的事件,如网络延迟
实验结果是手动整理的
实验的定义是静态的
具有可以支持对历史实验组和控制组进行的比较工具
高级
在生产环境中运行实验
自动分析结果,自动终止实验
实验框架和持续发布工具集成
在实验组合控制组之间比较业务指标差异
对实验组引入一些事件,如服务级别的影响和组合式故障
持续收集实验结果
具有可以交互式地比对实验组和控制组的工具
熟练
在开发流程中的每个环节及所有环境中运行实验
设计、执行和终止实验完全自动化
将实验框架和A/B测试以及其他测试工具集成,以减少噪声干扰
可以注入如系统的不同使用模式,返回结果和状态更改等类型的事件
实验具有动态可调整的范围以找寻系统拐点
实验结果可以用来预测收入损失
对实验结果的分析可以用来做容量规划
实验结果可以用来区分服务实际的关键程度
应用度
暗中进行
对重要项目不采用
只覆盖少量系统
组织内部基本无感知
早期使用者偶尔进行混沌工程实验
适当投入度
实验获得正式批准
工程师兼职进行混沌工程实验
多个团队有兴趣并参与进来
一些重要服务会不定期进行混沌工程实验
正式采用
有专门的混沌工程团队
所有故障的复盘都会进入混沌工程框架来创建回归实验
定期对大多数关键服务进行混沌工程实验
偶尔进行实验性的故障复盘验证
成为文化
对所有关键服务进行高频率的混沌工程实验
对多数非关键服务进行高频率的混沌工程实验
混沌工程实验时工程师入职流程的一部分
所有系统组件都默认要参与混沌工程实验,不参与要特殊说明
实践
提升系统弹性:利用 LitmusChaos 和 Backstage 集成
0 条评论
下一页