SpringCloud学习(四)熔断器Hystrix的使用

hystrix 当某个服务单元发生故障(类似用电器发生短路)之后,通过熔断器的故障监控(类似熔断保险丝),直接切断原来的主逻辑调用,可实现服务降级(服务容错保护),线程隔离,熔断器等功能。

服务降级(服务容错保护)与线程隔离是绑在一起的,当调用服务超时时,会触发服务降级;而让熔断器发挥作用则需满足以下三个参数之一:是否强制开启熔断、请求总数下限、错误百分比下限。
熔断器未打开之前,对于工程中示例的情况就是每个请求都会在当hystrix超时之后返回fallback,每个请求时间延迟就是近似hystrix的超时时间,如果设置为5秒,那么每个请求就都要延迟5秒才会返回。
当熔断器在10秒内发现请求总数超过20,并且错误百分比超过50%,这个时候熔断器打开。打开之后,再有请求调用的时候,将不会调用主逻辑,而是直接调用降级逻辑,这个时候就不会等待5秒之后才返回fallback。
通过熔断器,实现了自动地发现错误并将降级逻辑切换为主逻辑,减少响应延迟的效果。

在熔断器打开之后,处理逻辑并没有结束,我们的降级逻辑已经被成了主逻辑,那么原来的主逻辑要如何恢复呢?
对于这一问题,hystrix也为我们实现了自动恢复功能。当熔断器打开,对主逻辑进行熔断之后,hystrix会启动一个休眠时间窗,在这个时间窗内,降级逻辑是临时的成为主逻辑,当休眠时间窗到期,熔断器将进入半开状态,释放一次请求到原来的主逻辑上,如果此次请求正常返回,那么断路器将继续闭合,主逻辑恢复,如果这次请求依然有问题,熔断器继续进入打开状态,休眠时间窗重新计时。

注意点:hystrix函数必须为public,fallback函数可以为private。两者需要返回值类型和参数相同。

由于Hystrix已经停止开发,官方推荐替代项目为Resilience4j,另外也可以用阿里巴巴的sentinel(这两个后面会研究)。

这里会在前面两篇ribbon-conusmer以及feign-consumer工程的基础上改造,对Ribbon+Hystrix与Feign+Hystrix的使用进行介绍使用。

(一)对ribbon-conusmer工程引入Hystrix
使用Hystrix时,需要引入以下依赖,由于父pom.xml中已经依赖了,所以这里子pom.xml不需再引入。

       <!--断路器-->
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值