混沌工程落地的六个阶段(下)
资深技术专家焦振清
讲述:丁婵大小:5.22M时长:03:48
在上一篇文章中,我们分享了京东资深技术专家焦振清对混沌工程前三个阶段的落地建议,即单机、单机房和依赖治理,本文继续分享故障注入、集成 CI/CD、产品化这三个阶段的落地建议。具体如下。
全链路故障注入
全链路追踪能力是故障注入的基础,需要所有的模块全部进行适配改造,否则调用链就会在某个阶段中断,进而导致不可完全追踪。同时对于一些开源软件,也需要进行适配,其成本是前四个阶段中最高的,耗时最长的,因此,故障注入往往会放在后期。
重要性说明
所谓的精准注入,只影响特定的客户 ID、地域、设备类型、接口,还可以对注入的行为和比例等进行精准控制,从而大幅缩小故障范围,将故障的风险收敛到最小。因为是精准注入,所以必须具备全链路的观测能力,才能够将上述细微的注入影响进行描述,否则,你可能很难回答,延时增加了 3s,是哪些模块的作用导致的。
传统的破坏方式,粒度只能控制在单机级别,很多影响非预期且及不可控。以 TC 命令为例,如果是按照一定比例进行破坏,你无法精准控制哪些请求会受到影响,运气足够差的情况下,也许你不希望被影响的请求会全军覆没,而你期望被影响的请求则无一命中。另外,传统的破坏方式也没有统一的标准,有些需要用 TC 命令,有些是 iptables 命令,有些是写死 /etc/hosts 文件,没有方便易用的方式,且本身存在较大的风险,很难进行大范围推广。
破坏手段
微服务化一般是基于 Istio 进行注入,或者在接入层进行注入均可。此处我们也在 Istio 的紧张改造中,后面可以给大家写专门的文章进行分享。
落地建议
对系统进行分级,首先将黄金流程进行改造,确保最核心的功能具备一定能力了,再慢慢外扩到所有功能。
CI/CD 整合
上述的四个手段,只能解决线上的存量问题,但无法阻止增量问题。因此,还需要将上述的各种能力,整合在 CI/CD 过程当中,在测试阶段进行拦截,从而彻底杜绝这类问题在线上发生的可能性。该部分目前我们也正在逐步建设和完善中,因此各种坑后续慢慢交流。
产品化
虽然通过 CI/CD 阶段的整合,可以将问题拦截在测试阶段,但这时候,每次都是测试阶段发现问题后让研发返工,对于研发就造成了极大的资源浪费。因此,需要将混沌工程形成的各种标准和规范,以产品化的形式交给研发同学使用,进而让大家都满意。
以单机起停脚本为例进行说明,每个模块的研发不同,可能存在的问题也不一样,这时候,发现问题后进行修改,不如提供一个统一的服务起停管理工具给研发使用,从而彻底解决该问题。开源软件类似 Systemd,Supervisor 和 Monit 都可以很好的解决这类问题,且对程序没有侵入性,不存在什么改造成本。
以上就是今天的内容,希望对你有所帮助。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论