前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高可用服务架构设计(14) - 深入理解hystrix的断路器执行原理以及模拟接口异常时的短路实验

高可用服务架构设计(14) - 深入理解hystrix的断路器执行原理以及模拟接口异常时的短路实验

作者头像
JavaEdge
发布2022-11-30 15:13:09
3200
发布2022-11-30 15:13:09
举报
文章被收录于专栏:JavaEdge

短路器深入的工作原理

1 RequestVolumeThreshold

  • number of requests that must be made within a statisticalWindow before open/close decisions are made using stats 在使用统计数据进行打开/关闭决策之前必须在滑动窗口中进行的请求数

如果经过断路器的流量超过了一定的阈值

可能看起来是这样子的,要求在10s内,经过断路器的流量必须达到20个 然而在10s内,经过短路器的流量才10个,那么根本不会去判断要不要断路!

2 ErrorThresholdPercentage

  • % of ‘marks’ that must be failed to trip the circuit 必须使电路跳闸的百分比

如果断路器统计到的异常调用的占比超过了一定的阈值,才会触发断路

  • default => errorThresholdPercentage = 50 = if 50%+ of requests in 10 seconds are failures or latent then we will trip the circuit default => errorThresholdPercentage = 50 =如果50%以上的请求在10秒内失败或潜伏,那么我们将跳转电路 默认值 50%

比如说在10s内,经过断路器的流量(你,只要执行一个command,这个请求就一定会经过断路器),达到了30个;同时其中异常的访问数量,占到了一定的比例,比如说60%的请求都是异常(报错,timeout,reject),会开启断路

3 状态转换

然后断路器从close状态转换到open状态

4 直接降级

断路器打开,此处请求全被断路,不调用后续服务,直接fallback降级

5 SleepWindowInMilliseconds

  • default => sleepWindow: 5000 = 5 seconds that we will sleep before trying again after tripping the circuit default => sleepWindow:5000 = 5秒,我们将在电路断路后再次尝试睡眠
  • milliseconds after tripping circuit before allowing retry 在断路后允许重试前的毫秒数

经过了一段时间之后,会half-open,让一条请求经过断路器,看能不能正常调用。如果调用成功了,那么就自动恢复,转到close状态

6 Enabled

  • 是否应启用断路器
  • 控制断路器是否允许工作,包括跟踪依赖服务调用的健康状况,以及对异常情况过多时是否允许触发短路,默认是true

7 forceOpen

如果设置为true的话,直接强迫打开短路器,相当于是手动短路了,手动降级,默认false

  • a property to allow forcing the circuit open (stopping all requests)
  • default => ignoreErrors = false

8 forceClosed

  • a property to allow ignoring errors and therefore never trip ‘open’ (ie. allow all traffic through)

如果设置为ture的话,直接强迫关闭短路器,相当于是手动停止短路了,手动升级,- - default => ignoreErrors = false 默认false

9 实战

配置一个断路器,流量要求是20,异常比例是50%,短路时间是5s

在command内加入一个判断,如果是productId=-1,那么就直接报错,触发异常执行

写一个client测试程序,写入50个请求,前20个是正常的,但是后30个是productId=-1,然后继续请求,会发现

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 RequestVolumeThreshold
  • 2 ErrorThresholdPercentage
  • 3 状态转换
  • 4 直接降级
  • 5 SleepWindowInMilliseconds
  • 6 Enabled
  • 7 forceOpen
  • 8 forceClosed
  • 9 实战
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档