Hystrix 隔离策略配置
当使用hystrix-dashboard来监控Spring Cloud Zuul构建的API网关时,Thread Pool信息会一直处于Loading状态。这是Hystrix 隔离策略的原因,只有通过Hystrix配置把隔离策略改成为线程池的方式才能够得以展示。
Hystrix 隔离策略
SEMAPHORE
- 它在调用线程上执行,并发请求受信号量计数的限制(Zuul默认此策略)
THREAD
- 它在一个单独的线程上执行,并发请求受到线程池中线程数的限制
当 zuul.ribbonIsolationStrategy=THREAD
时,Hystrix的线程隔离策略将会作用于所有路由。这意味着所有路由的HystrixCommand都会在相同的Hystrix线程池中执行,可以使用useSeparateThreadPools = true 设置每个路由使用独立的线程池。
zuul:
ribbonIsolationStrategy: THREAD #设置Hystrix隔离策略为线程池
threadPool:
useSeparateThreadPools: true #每个路由使用独立的线程池
参考资料
https://www.jianshu.com/p/1ced7daea58a
http://www.voidcc.com/content/spring-boot-hystrix-stream-404