Spring Cloud中,Zuul默认已经整合了Hystrix,而Hystrix有隔离策略——THREAD及SEMAPHORE。
隔离策略
- 默认情况下,
Zuul的隔离策略是SEMAPHORE。 - 可设置zuul.ribbonIsolationStrategy=THREAD将隔离策略改为
THREAD。
线程池配置
当设置隔离策略为THREAD时,Hystrix的线程隔离策略将作用所有路由,HystrixThreadPoolKey 默认为RibbonCommand,这意味着,所有路由的HystrixCommand都会在相同的Hystrix线程池中执行。
可使用以下配置,让每个路由使用独立的线程池:
zuul:
threadPool:
useSeparateThreadPools: true
的HystrixThreadPoolkey 将与每个路由的服务标识相同。如果想为HystrixThreadPoolKey添加前缀,可使用类似如下的配置:
zuul:
threadPool:
useSeparateThreadPools: true
threadPoolKeyPrefix: prefix-
HystrixThreadPoolKey将变为${profix}-{服务标识}