直接回答:混沌工程是主动向系统注入故障(杀实例、断网络、注入延迟、打满磁盘),验证系统在真实故障下是否仍满足稳定性预期的实验方法。它源于 Netflix 的 Chaos Monkey,核心思想是:故障一定会发生,与其等它在半夜爆发,不如在工作日白天、有准备的情况下主动引爆,用受控的小爆炸换取对系统韧性的真实认知。
实验方法论(Chaos Engineering 原则):先定义稳态假设——不是"系统不挂",而是可度量的指标,如"P99 延迟 < 500ms、错误率 < 0.1%";实验围绕真实世界事件设计(可用区断网、依赖服务延迟抖升);在生产或等比预发环境运行;持续自动化,而不是一次性表演。每次实验要有明确假设:"杀掉一个缓存节点,命中率下降但延迟不超过阈值",实验证伪假设就是收获。
控制爆炸半径的手段:从小开始——先单实例、再单机架、最后可用区级;必须具备一键终止(big red button)和自动停止条件(稳态指标跌破阈值立即回滚);选业务低峰时段并通知值守团队;用按租户/流量比例的隔离方式(如只给 1% 流量或影子流量注入故障);配套熔断、降级预案验证过再动手。工具上有 Chaos Mesh(K8s 原生,支持网络/IO/时间偏移等故障)、LitmusChaos、AWS FIS 托管服务等。混沌工程的成熟标志是演练常规化、剧本化,而不是制造惊险。
追问方向:混沌演练和容灾演练、压测的边界在哪?如何为演练设计稳态指标?有状态服务(数据库)能做混沌实验吗?
(约 670 字)