Hystrix-服务熔断

概念:

当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。

这种牺牲局部,保全整体的措施就叫做熔断。

如果没有熔断会怎样?

栗子:

当前系统中有A,B,C三个服务,服务A是上游,服务B是中游,服务C是下游。

        它们的调用链如下:

一旦下游服务C因某些原因变得不可用,积压了大量请求,服务B的请求线程也随之阻塞。线程资源逐渐耗尽,使得服务B也变得不可用。紧接着,服务      A也变为不可用,整个调用链路被拖垮。 

 

像这种调用链路的连锁故障,叫做雪崩

在这种时候,就需要熔断机制来挽救整个系统。

熔断:

1. 开启熔断

           在固定时间窗口内,接口调用超时比率达到一个阈值,会开启熔断。

           进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的默认方法,达到服务降级的效果。

      2. 熔断恢复

           熔断不可能是永久的。

           当经过了规定时间之后,服务将从熔断状态回复过来,再次接受调用方的远程调用。

熔断类型:

熔断打开:

      在固定时间内(Hystrix默认是10秒),接口调用出错比率达到一个阈值(Hystrix默认为50%),会进入熔断开启状态。进入熔断状态后,后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法。

熔断关闭:

服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。

半熔断状态:

  在进入熔断开启状态一段时间之后(Hystrix默认是5秒),熔断器会进入半熔断状态。

部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断

三个状态的转化关系:

断路器

断路器在什么情况下开始起作用:

 断路器开启关闭的条件:

  • 当满足一定阈值的时候(默认10s内超过20个请求次数)
  • 当失败率达到一定的时候(默认10s内超过50%请求失败)

到达以上阈值,断路器将会开启,开启后所有请求都不会进行转发

一段时间后(默认5s),这个时候断路器是半开状态,会让其中一个请求进行转发,成功:断路器关闭,失败:继续开启。

断路器打开后:

1.再有请求调用的时候,不会调用主逻辑,直接调用降级fallback,通过断路器,实现自动发现错误并将降级逻辑切换为主逻辑,减少响应延迟的效果。

2.断路器打开对主逻辑进行熔断后,hystrix会启动一个休眠时间窗,在这个时间窗内降级逻辑是临时的成为主逻辑,当休眠时间窗到期,断路器进入半开状态,释放一次请求到原来的主逻辑,如果此次请求正常返回,断路器将继续闭合,主逻辑恢复,如果这次请求依然有问题,断路器继续进入打开状态,休眠时间窗重新计时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值