我试图了解Hystrix。我知道某项服务调用了第三方服务时,该服务没有响应并且超出了配置阈值。电路将被打开,而转接电话将被短路。 但是我无法理解如何再次关闭电路。让我们假设我们的服务正在呼叫第三方服务,并且该服务无法正常工作,因此打开了电路;在5分钟后,服务已经开始正常工作,现在电路应该可以正常工作了。关闭。呼叫服务如何得知第三方服务已开始正常运行,现在已关闭电路?
答案 0 :(得分:2)
实际上有三种状态:OPEN,CLOSED和HALF_OPEN。一旦断路器断开并且经过了一定的时间,它就会让单个请求通过。这是HALF_OPEN状态。如果成功,则断路器将合闸,否则断路器将返回OPEN状态,直到再次经过该时间后,断路器才会再次进入HALF_OPEN状态。您可以使用circuitBreaker.sleepWindowInMilliseconds属性指定从OPEN到HALF_OPEN过渡之间的时间。
答案 1 :(得分:0)
请考虑Hytrix断路器从“闭合”到“断开”的过渡。它会使针对该断路器的所有请求短路。
经过一段时间(HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds()
)后,下一个请求被允许通过
(这是半打开状态)。
如果请求失败,断路器将在睡眠窗口期间返回OPEN状态。 因此,此HALF-OPEN状态调用确定是要断开电路还是闭合电路。
如果请求成功,则断路器将切换到“合闸”,并且1.中的逻辑将再次接管。结帐hystrix working.