混沌工程

大型分布式系统跑在云上,一旦出错,错误难以预测,并且损失巨大,这就是引入混沌工程的原因

故障演练是属于混沌工程的一环,目的还是借事修人

混沌工程是在模块局部内确切的可控制的混乱

stateDiagram-v2  稳态假设 --> 真实事件注入  真实事件注入 --> 影响检测  影响检测 --> 恢复  恢复 --> 稳态假设

先决条件

稳态定义与测量

可以从场景化、现象化、指标化来定义出系统的稳定状态

根据现有的稳态,定义相关基线,明确系统正常状态的技术和业务指标,通过监控这些指标来判断系统是否正常运行

系统稳态的维持:

事件

混沌工程的事件定义:

理解分布式系统的8个谬误

基础设施事件

中间件事件

应用事件

数据事件

持续的自动化实验

通过自动化工具定期执行实验,降低成本并确保实验的持续性

最小化爆炸半径

事件的注入要不在线下的系统尽情搞

要不就在线上尽小的可控范围内进行注入,将实验的影响控制在较小范围,避免对用户体验产生大的影响,通常通过灰度实验等方式进行

演练

目标:

执行

场景

模式

角色

范围

观察

恢复

过程结果分析

时间分析

表现分析

维度\能力容灾能力发现能力快速恢复能力
时间维度 是否快速及时
定量维度 问题数量是否可控
变化维度 变化幅度是否满足预期

异常分析

演练过程中出现的异常和其特征分析

改进分析

稳定性提升

预案体系能力

定位止血能力

stateDiagram-v2  问题定位: 问题定位:问题表象 链路排查 日志分析  问题定位 --> 问题原因,止血方案  问题原因,止血方案 --> 经验沉淀,排查工具  经验沉淀,排查工具 --> 运维支撑  运维支撑 --> 问题原因,止血方案  运维支撑 --> 问题定位

风险管控

需要明确的风险:

对抗风险: