Spring Cloud Hystrix 的信号量隔离与线程隔离

先说一下信号量和线程池的概念

信号量:Semaphore 是一个并发工具类,用来控制同时并发的线程数量,每次线程执行的时候,都需要通过acquire获得许可,线程执行完毕后,通过release方法释放。

线程池:线程池规定的线程数量,每个线程都是可复用的,其他线程是否可以加入需要看线程池满不满,不需要我们自己手动控制

信号量和线程池的区别

信号量只是规定的线程数量,这些线程都是需要我们手动new出来的,并不参与线程执行的具体逻辑,只不过其他线程想要同时处理请求时,需要查看信号量是否有空余的位置

线程池中的线程是线程池自己创建的,并且进行维护,我们在开发的过程中只需要关注具体的逻辑实现,不需要关注线程的创建及释放

隔离的概念及为什么需要隔离

先说一下不隔离的场景,client 发起一个请求,一个请求对应一个线程,这个线程在调用其他服务时,直接通过http请求去获取资源,假设服务响应失败,那么这个请求就会直接抛出异常。

加了隔离之后,我在请求的基础上,再维护一个线程池,这个线程池就用来负责其他微服务的请求与调用,如果服务请求响应失败,也不影响我第一个线程的执行,并且我还可以增加对应的响应策略,根据响应策略来做具体的降级、熔断,并且可以通过信号量和线程池来规定具体的请求次数,来达到限流的目的

信号量隔离与线程隔离的区别

理解上面的概念之后,我们就可以来讨论上面这个概念了

线程池隔离是通过hystrix自己的线程去实现的,在调用服务的同时,再new出来一个线程池

信号量隔离则是tomcat线程去调用服务的,我无条件的相信服务提供者代码的健壮性及时效性,不会出任何问题,相对于线程池来说,更加的轻量级

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值