Hystrix实现断路器、服务降级、线程隔离

了解Hystrix之前首先需要明白几个概念,雪崩效应、断路器(熔断机制)、服务降级、线程隔离。

  1. 雪崩效应:默认情况下,tomacat只有一个线程池去处理请求,这样在高并发的情况下大量的请求访问同一个服务器接口,线程池中所有的线程都用来处理访问这个接口的请求,就会导致请求全部堆积起来。这样其他接口有请求时也会阻塞,没有线程来处理,导致服务器崩溃。假设线程池有10个线程,每个线程每秒可以处理10个请求,一个接口有30000个请求,则需要处理五分钟。在这五分钟内如果有其他请求访问时,由于所有线程被占用,用户那边页面就会一直转圈,没有响应。这就是雪崩效应。Hystrix解决雪崩效应的三种方法就是熔断机制、服务降级、线程隔离。
  2. 服务降级:所谓的服务降级就是当没有线程来处理用户请求时,不要让页面一直转圈,用户一直等待,而且给用户返回一个友好的提示信息,比如:当前服务器繁忙,请稍后重试。
  3. 熔断机制:当没有线程可以处理用户请求的时候,不让请求大量堆积,而且和服务器断开连接,不再让后续请求访问服务器,直接利用服务降级给用户返回一个友好提示,多数和服务降级配合使用。
  4. 线程隔离:使用多个线程池,每个线程池负责不同的请求接口,这样即使其中一个接口请求访问数量大导致请求堆积,不会影响其他线程池处理其他接口的请求。

@HystrixCommand默认开启服务降级、熔断机制和线程隔离。
使用@HystrixCommand注解的方法:添加maven依赖(依赖信息添加到parent的pom.xml中),添加@HystrixCommand注解,启动类添加@EnableHystrix注解,配置文件开启Hystrix服务,设置Hystrix超时时间。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过添加@HystrixCommand注解和不添加该注解的接口中打印出来的线程可以看出使用的不是同一个线程池,所以@HystrixCommand默认是开启线程隔离的。这里User服务中添加了1.5秒延迟,导致该接口执行了fallBack方法,但是并不是因为产生了雪崩效应,而是因为hystrix默认超时时间为1秒,1.5秒导致超过了响应时间,页面报错。需要配置超时时间
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值