很多人对于混沌工程都比较熟悉,特别是netflix的chaos monkey。在微服务很火的这几年,开发的朋友肯定至少是知道的。然而有多少人敢把这个用到自己的公司中和项目中呢?相信很少。
很多想尝鲜的开发小伙伴可能想着如何在spring boot应用引入chaos monkey。我就是其中一员,最近发现有人已经实现了spring boot版本的chaos monkey。于是拿来尝试了一发。
好,我们开始搞事吧。
上代码
引入依赖:
这里我引入的是2.2.0。因为我用的spring boot是2.0.0.RELEASE。注意:不同的版本匹配的sb不同,可以去官网查看对应版本:https://codecentric.github.io/chaos-monkey-spring-boot/。
然后在application.properties中引入如下配置:
然后我们新建一个FirstController,如下:
然后启动项目。
在启动的时候,会画出Chaos Monkey的字样,表明你的项目已经引入了chaos monkey,看到它的口号了吗?_ready to do evil! 没错,chaos monkey的使命就是做坏事,搞事!搞事!搞事!
接下来我们看下它是如何搞事的。
以下是一个小动画,请观赏:
可以发现一个简单的hello world的controller时好时坏。一会卡顿好几秒,一会直接抛出异常,一会又秒回。这就是chaos monkey搞的鬼。
现在我们来看看chaos monkey支持的常见的搞事方式:
Assault
看源码发现目前有四种Assault(攻击):
1、Exception Assault (抛出异常攻击)
2、Kill Assault (杀进程攻击)
3、Latency Assault (延迟卡顿攻击)
4、Memory Assault (内存溢出攻击)
Watcher(攻击范围)
你可能会问,那么我可以配置他可以攻击的范围吗?我们来看看源码:
可以发现支持设置攻击的范围有:
1、Component
2、Controller
3、RestController
4、Service
5、Repository(JDBC和JPA)
配置
如何配置呢?就像上面那样配置在properties里就可以了。
本例中我们只新建了一个RestController,把chaos.monkey.watcher.restController 设置为 true 就可以看到效果了。
总结
相信通过本文你已经知道chaos monkey搞事的方式了,那么你有勇气把这样的理念运用到你的项目中,甚至放到生产吗?有人说过,你先尝试去非线上环境去跑chaos monkey,如果一切都运转良好,那么这个公司适合你长远待下去,然后把它放到线上去。另外如果让你自己实现一个chaos monkey你会怎么实现它呢?
本文分享自 ImportSource 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!