一、隔离策略
1.信号量隔离:
主要是使用一个原子的计数器来记录当前的值,请求来临之前,首先判断计数器的值是否已经达到了设置的最大值,如果没有,则继续运行,计数器+1;反之,请求处理结束返回后,计数器进行-1,和令牌桶有点像,但是无法处理突发流量。
2.线程池隔离:
针对不同的服务设置不同的线程池,这样如果其他服务的线程阻塞的时候不会对其他服务造成影响。
二、隔离的各自特点
线程池隔离:
需要继续上下文线程的切换,浪费资源。
可以应对突发的流量。
最大的并发数是线程池的大小。
计数器的隔离:
是同一个线程是处理请求,无需切换,开销低。
最大的并发数是计数器的大小。
二、配置方法
hystrix.command.default.execution.isolation.strategy : 配置隔离策略
ExecutionIsolationStrategy.SEMAPHORE 信号量隔离
ExecutionIsolationStrategy.THREAD 线程池隔离