Springcloud--Hystrix

一、Hystrix介绍

Hystrix是Netfix公司出品的一款组件,其功能是为了让我们的应用不受个别服务的错误影响而导致整个系统的级联异常。
Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助我们控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止级联失败和提供回退等来实现这一点,这些都可以提高系统的整体弹性。

二、级联异常–雪崩

在微服务之间进行服务调用时,由于某个服务出现故障,而导致级联服务故障的现象成为雪崩效应。
例如:一个请求需要依赖4个服务,如果其中一个服务出现故障,那么会导致用户的请求失败;如果是在高流量的情况下,一个服务的延迟可能导致整个服务器资源在数秒之内达到饱和,从而无法为用户访问提供访问。

三、线程隔离

当使用Hystrix来包装每个依赖服务时,会将每个依赖服务相互隔离,如果有某个服务发生异常或延迟时,它会被限制在某个范围内。
Hystrix为每一个依赖服务的调用分配一个小线程池,如果线程池已满,那么调用将立即被拒绝,而不会采用排队处理,这样可以加快失败的判定时间。
当某个服务被阻塞,即线程池已满,不会一直让它阻塞下去,那么这时候会采用服务降级或服务熔断来处理。

四、服务降级

服务降级是当服务器压力剧增的情况下,根据当前业务流量对一些服务和页面有策略的降级,来释放服务器资源以保证核心任务的正常运行。

重试和降级
如果Ribbon的超时时间与Hystrix的默认超时时间一致,那么此时不会触发重试机制,直接降级,所以Ribbon的超时时长一定要小于Hystrix的超时时长。

五、服务熔断

如果对超时服务进行降级,但超时时长比较长时,当这个服务发生异常时,每个请求都需要等待很长时间,这就会导致整个程序的并发处理能力下降,此时就需要用到Hystrix的熔断服务,直接把该服务断开,保证其他服务的高可用。

服务熔断的三种状态
①关闭(closed):正常情况下Hystrix为关闭状态,所有服务可以正常访问。
②打开(open):当访问一个接口超过设定的阈值并且错误次数超过设置错误阈值时,就会打开熔断机制,默认最近20次请求中,有50%的请求超时,就会打开熔断机制。
③半打开(half open):当熔断状态为open时,所有的请求都采用降级服务,当熔断状态为open的时间超过了时间窗口,那么熔断状态从open–>half open,此时调用服务接口时,就可以发起远程调用,而不是本地降级了,如果该远程调用仍然失败,那么熔断状态重新设置为open,远程调用成功就设置为closed。

此文章为学习记录文章,参考多篇文章,如有不正之处请指教。

你可能感兴趣的:(spring,cloud,java,微服务)