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

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

短路器深入的工作原理


1 RequestVolumeThreshold

number of requests that must be made within a statisticalWindow before open/close decisions are made using stats

在使用统计数据进行打开/关闭决策之前必须在滑动窗口中进行的请求数

1.png

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

2.png

可能看起来是这样子的,要求在10s内,经过断路器的流量必须达到20个

然而在10s内,经过短路器的流量才10个,那么根本不会去判断要不要断路!


2 ErrorThresholdPercentage

% of ‘marks’ that must be failed to trip the circuit

必须使电路跳闸的百分比

3.png

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

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%

4.png

5.png

比如说在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秒,我们将在电路断路后再次尝试睡眠

6.png

milliseconds after tripping circuit before allowing retry

在断路后允许重试前的毫秒数

7.png

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

6 Enabled

  • 是否应启用断路器

8.png

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

9.png

7 forceOpen

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

  • a property to allow forcing the circuit open (stopping all requests)
  • 10.png

default => ignoreErrors = false

11.png

8 forceClosed

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

12.png

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

默认false

13.png

9 实战

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


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


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


目录
相关文章
服务熔断器-Hystrix
服务熔断器-Hystrix
143 2
|
Cloud Native Go 微服务
golang 微服务中的断路器 hystrix
golang 微服务中的断路器 hystrix
205 0
|
缓存 运维 监控
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
222 0
|
安全 NoSQL Java
互联网并发与安全系列教程(01) - 基于Hystrix实现服务隔离与降级
互联网并发与安全系列教程(01) - 基于Hystrix实现服务隔离与降级
200 0
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
1261 0
|
监控 Java 数据中心
微服务架构系统稳定性的神器-Hystrix
Hystrix是由Netflix开源的库,主要用于微服务架构中的熔断器模式,防止服务调用失败引发级联故障。它通过监控服务调用的成功和失败率,在失败率达到阈值时触发熔断,阻止后续调用,保护系统稳定。Hystrix具备熔断器、资源隔离、降级机制和实时监控等功能,提升系统的容错性和稳定性。然而,Hystrix也存在性能开销、配置复杂等局限,并已于2018年进入维护模式。
287 0
|
Java 微服务 Spring
微服务(九)-Hystrix(断路器)
微服务(九)-Hystrix(断路器)
软件设计与架构复杂度问题之throws new BizException("capacity over limit");”异常如何解决
软件设计与架构复杂度问题之throws new BizException("capacity over limit");”异常如何解决
|
监控 Java 数据中心
通用快照方案问题之服务雪崩问题如何解决
通用快照方案问题之服务雪崩问题如何解决
144 0
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
390 1