生产环境全链路压测建设历程 21:某快递 A 股上市公司的生产压测案例之基于测试流量的混沌工程(故障演练)
基于探测流量的全链路巡检上线后,对于D公司来说,有了全链路读写压测和全链路读写巡检的加持后,在性能确定性和接口确定性是有了质的提升。
但,墨菲定律告诉我们:“凡是可能出错的事就一定会出错”;
D公司的系统有100+核心API,运行在复杂的分布式环境里面。每隔几天,总会有一些组件出现卡顿、挂掉的情况。而应用系统在这样一些不确定的情况下,在组件挂掉后,总需要一段时间才能处理恢复完成。
这时候,大家就会想,有没有一种办法,可以让某些不重要的流量,来做各种各种的故障演练,但又不影响真实用户的使用体验。
混沌工程
Netflix工程师创建了Chaos Monkey,使用该工具可以在整个系统中在随机位置引发故障。正如GitHub上的工具维护者所说,“Chaos Monkey会随机终止在生产环境中运行的虚拟机实例和容器。”通过Chaos Monkey,工程师可以快速了解他们正在构建的服务是否健壮,是否可以弹性扩容,是否可以处理计划外的故障。
2012年,Netflix开源了Chaos Monkey。今天,许多公司(包括谷歌,亚马逊,IBM,耐克等),都采用某种形式的混沌工程来提高现代架构的可靠性。 Netflix甚至将其混沌工程工具集扩展到包括整个“Simian Army(中文可以译为猿军)”,用它攻击自己的系统。
混沌工程属于一门新兴的技术学科,行业认知和实践积累比较少,大多数IT团队对它的理解还没有上升到一个领域概念。阿里电商域在2010年左右开始尝试故障注入测试的工作,希望解决微服务架构带来的强弱依赖问题。
实施方案
1.D公司部署了数列科技的javaagent,结合压测、探测流量来做全链路压测和全链路读写巡检
2.结合探测流量,javaagent,来注入故障故障,来模拟指定组件的“故障”
3.在故障演练场景,来倒推验证应用系统的健壮性
版权声明: 本文为 InfoQ 作者【数列科技杨德华】的原创文章。
原文链接:【http://xie.infoq.cn/article/0640c3730fe5fca0c29bf52f3】。文章转载请联系作者。
评论