我注意到 Spring-Cloud ZUUL 将执行隔离强制为 SEMAPHORE 而不是 THREAD 默认值(如 Netflix 推荐的那样)。
中的一条评论org.springframework.cloud.netflix.zuul.filters.route.RibbonCommand
说:
我们希望默认为 semaphore-isolation,因为它包含了另外 2 个已经被线程隔离的命令
但是我还是不明白:-(另外两个命令是什么?
以这种方式配置,Zuul 只能调度负载,但不允许超时并让客户端走开。简而言之,即使 Hystrix 超时设置为 1000 毫秒,客户端也只会在转发到链下服务的调用返回(或由于 ReadTimeout 导致超时)后才被释放。
我试图通过覆盖配置来强制线程隔离(不幸的是,每个服务,因为默认值是在代码中强制执行的)并且一切似乎都按预期工作。但是,如果没有正确理解其中的含义,我并不热衷于这样做——当然是关于代码中的注释和 Zuul 的 Spring Cloud 版本采用的默认值。
有人可以提供更多信息吗?谢谢