前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >再三犹豫后,我决定引入chaos monkey

再三犹豫后,我决定引入chaos monkey

作者头像
ImportSource
发布2020-06-18 15:40:50
5.3K0
发布2020-06-18 15:40:50
举报
文章被收录于专栏:ImportSource

很多人对于混沌工程都比较熟悉,特别是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你会怎么实现它呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ImportSource 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
混沌演练平台
混沌演练平台(Chaotic Fault Generator)提供高效便捷、安全可靠的故障演习服务,除可视化故障注入服务外,还提供行业经验模板,监控护栏等核心功能,致力于帮助用户及时发现业务容灾隐患、验证高可用预案的有效性,从而提高系统的可用性和韧性。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档