Hystrix隔离类别

  1. 线程隔离
    把执行依赖代码的线程与请求线程(如:jetty线程)分离,请求线程可以自由控制离开的时间(异步过程)。
    通过线程池大小可以控制并发量,当线程池饱和时可以提前拒绝服务,防止依赖问题扩散。
    线上建议线程池不要设置过大,否则大量堵塞线程有可能会拖慢服务器。

     

  2. 信号隔离
    信号隔离也可以用于限制并发访问,防止阻塞扩散, 
    与线程隔离最大不同在于执行依赖代码的线程依然是请求线程(该线程需要通过信号申请),
    
    如果客户端是可信的且可以快速返回,可以使用信号隔离替换线程隔离,降低开销.
    
    信号量的大小可以动态调整, 线程池大小不可以

     

 线程池方式下业务请求线程和执行依赖的服务的线程不是同一个线程;信号量方式下业务请求线程和执行依赖服务的线程是同一个线程

Hystrix是Netflix开源的一款容错框架,其中的隔离机制可以帮助我们控制应用程序和依赖服务之间的交互。Hystrix提供了线程池隔离和信号量隔离两种机制。 线程池隔离是将每个依赖服务的请求放到一个独立的线程池中执行,从而避免线程资源被其他依赖服务的请求占用而导致超时或阻塞。具体流程如下: 1. 当一个请求到达Hystrix时,首先会检查该请求是否需要隔离。 2. 如果需要隔离,则会为该依赖服务创建一个独立的线程池,并将请求放入该线程池中执行。 3. 当请求执行完成后,Hystrix会检查该请求是否超时或者异常,如果是,则会触发熔断器机制,避免请求继续访问该依赖服务。 信号量隔离是在同一个线程池中执行多个依赖服务的请求,但是限制同时执行的请求数量,避免线程资源被占用而导致超时或阻塞。具体流程如下: 1. 当一个请求到达Hystrix时,首先会检查该请求是否需要隔离。 2. 如果需要隔离,则会为该依赖服务创建一个信号量,并限制同时执行的请求数量。 3. 当请求执行完成后,Hystrix会检查该请求是否超时或者异常,如果是,则会触发熔断器机制,避免请求继续访问该依赖服务。 无论是线程池隔离还是信号量隔离Hystrix都会通过熔断器机制来保护应用程序和依赖服务之间的交互,避免因依赖服务故障或者超时而导致整个系统的崩溃。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值