spring cloud hystrix使用及原理
在微服务中,若一个服务出现故障,很容易造成依然它的服务故障,引起故障的蔓延,有可能最终导致整个系统的瘫痪。为了解决这个问题,hystrix诞生了,意在通过断路器、线程隔离等一系列服务保护,提高系统的容错能力。
1、hystrix的使用
- 在启动类中开启hystrix

- 指定回调失败方法

以上配置好后,hystrix断路器就可以启作用了。
2、原理分析
我们首先看hystrix-core包下的HystrixCommand类,通过构造方法我们看到依赖这些类


- HystrixCommandProperties 断路器对应hystrixCommand实例的属性对象
- HystrixCommandMetrics 用来让hystrixCommand记录各类度量指标
接着我们进入HystrixCircuitBreaker,它的实现类HystrixCircuitBreakerImpl中的属性就用到了上图的两个类。


- isOpen():判断断路器打开或者关闭状态。如果断路器打开标识为true,则返回true,否则根据度量对象metrics获取healthCounts来判断。1、请求数在预设的范围内,则返回false,即断路器未打开,默认值为20。2、如果错误百分比在预设值范围内,则返回false,默认值为50。3、如果上面条件都不满足,则将断路器设为true,即打开状态。

- allowRequest():判读请求是否被允许。先根据配置对象的断路器强制打开是否打开,如果是则返回false,即拒绝请求。如果断路器强制关闭是true,则允许请求,同时调用isOpen()来判断断路器打开或者关闭。3、如果都不满足,则用isOpen()来判断断路器是否打开,如果打开,这返回false,拒绝请求。

- markSuccess():在半开状态是使用,通过调用markSuccess方法将打开的断路器关闭,并重置度量指标。

浙公网安备 33010602011771号