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}-{服务标识}