SpringCloud-HHystrix-服务熔断

Posted 老赖的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud-HHystrix-服务熔断相关的知识,希望对你有一定的参考价值。


服务熔断结合现实生活例子解释

如果某个服务发生了异常,那么就需要对每个请求都 要等待。就会是整个程序的并发处理能力极具下降。这种情况如何处理?就需要使用到 Hystrix 的熔断服务,直接将此服务断开以保证其他服务的高可用。

熔断(circuit breaker),例如保险丝,电路中正确安置保险丝,保险丝就会在电流异常 升高到一定的高度和热度的时候,自身熔断切断电流,保护了电路安全运行。熔断就跟保险 丝一样,当一个服务请求并发特别大,服务器已经招架不住了,调用错误率飙升,当错误率 达到一定阈值后,就将这个服务熔断了。熔断之后,后续的请求就不会再请求服务器了,以 减缓服务器的压力。而在程序中,熔断之后肯定不能一直都不调用服务了,所以还需要有个 重启的机制。

服务熔断的三种状态(close、half open、open)

在这里插入图片描述1、关闭(close):正常情况下hystrix为关闭状态,所有服务都可正常访问

2、半打开(half open):当服务接口对应的熔断状态为open的时候,所有服务调用该服务的方法都执行本地降级方法,那么什么时候才会恢复到远程调用呢?这时不得不提一下Hystrix提供了一种测试策略,即设置一个时间窗口(休眠时间窗,默认是5秒),从从熔断状态变为open状态开始的一个时间窗口内,调用该服务接口时都委托服务降级进行执行。如果时间超过了时间窗口,则把熔断状态从open转到half-open,这时候服务调用服务接口,发起的远程调用,如果发起的远程降级还是失败,则需重新设置熔断状态为open,从新记录时间窗口开始。

3、打开(open):当访问同一个接口超过设定的阈值并且错误次数超过设置错误阈值时,就会打开熔断机制,状态从close——>open(条件:最近20次请求中,有50%的请求都超时)

以上是关于SpringCloud-HHystrix-服务熔断的主要内容,如果未能解决你的问题,请参考以下文章

07.服务雪崩熔断与降级

4.SpringCloud -- 服务降级熔断 HystrixSentinel

熔断限流

SpringCloud-Hystrix-服务熔断

SpringCloud-Hystrix-服务熔断

SpringCloud-Hystrix-服务熔断