加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长资讯 > 动态 > 正文

2020年12月编程语言排行榜

发布时间:2021-02-03 12:50:37 所属栏目:动态 来源:互联网
导读:再去请求你应用的controller,是不是发现异常产生了?这就是猴子在努力的捣乱中... 关于上面这些配置,再简单解释下: 你会发现chaos - monkey 配置下,除了 enabled,还有两项比较大的配置项,一个是Assault,一个是Watcher。 其中Assault代表是搞什么破坏,

再去请求你应用的controller,是不是发现异常产生了?这就是猴子在努力的捣乱中...

关于上面这些配置,再简单解释下:

你会发现chaos - monkey 配置下,除了 enabled,还有两项比较大的配置项,一个是Assault,一个是Watcher。

其中Assault代表是搞什么破坏,比如破坏类型有超时、内存占用、杀死进程、抛出异常等等

  • Latency Assault
  • Exception Assault
  • AppKiller Assault
  • Memory Assault

而Watcher 表示都要在哪些地方搞破坏。一个是What,一个是Where。

Watcher支持多种类型,比如Spring 常用的组件:

  • @Controller
  • @RestController
  • @Service
  • @Repository
  • @Component

那你说都 What 和 Where 了,怎么没有When?还真有Level就是。

chaos.monkey.enabled 用来打开和关闭ChaosMonkey。对应的配置中,除了设置Assault之外,不同的Assault也可以设置攻击的频率,配置项是chaos.monkey.assaults.level比如1代表每次请求都攻击,10代表每十次请求攻击一次。

chaos.monkey.assaults.latencyRangeStart 和chaos.monkey.assaults.latencyRangeEnd 这两个配置项用来配置LatencyAssault这个攻击的延迟时间值范围。

如下图所示,实际部署之后,每个ChaosMonkey会藏身于各个服务中,出其不意进行攻击。
 

后来Netflix 开源了其关于混沌工程的实现 ChaosMonkey,以猴子的形象来代表在系统里出其不意的破坏者。

比如

  • 机器或者一个机房挂了
  • 一部分网络延迟严重
  • CPU、内存占用严重
  • 随机让某些服务异常或者响应延迟

再看Chaos 原则里提到的这些:

  • 当服务不可用时的不正确回滚设置;
  • 不当的超时设置导致的重试风暴;
  • 由于下游依赖的流量过载导致的服务中断;
  • 单点故障时的级联失败等。

我们自己在代码层面,在部署层面仅能关注应用的功能正常,但上述这些意想不到的出错,是我们在代码层面不太容易控制,也不易去测试的。

而ChaosMonkey 就是用来做这个的。所以,对于这些捣乱的猴子,我们是应该欢迎的,是不是像犀牛鸟之于犀牛?

关于ChaosMonkey,各个语言,各个公司也都有一些实现,其中Netflix的最出名。是go语言实现的。

在 Java Spring Boot 技术栈中,我发现一个容易理解和上手的实现。

 

我们一起来看下如何上手以及它是怎样实现的。

1. 上手

添加maven 依赖

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读