gpt4 book ai didi

circuit-breaker - 断路器在 HALF_OPEN 状态下的行为如何 (resilience4j)

转载 作者:行者123 更新时间:2023-12-05 01:30:33 24 4
gpt4 key购买 nike

有时我会看到一个 CallNotPermittedException,其中有一条消息说断路器处于 HALF_OPEN 状态。但我不明白它在那种状态下是如何工作的。我用一个模拟服务器编写了一个测试,我在其中设置了 permittedNumberOfCallsInHalfOpenState=2然后我将 3 个调用延迟(3 秒)并调用,下一次调用将失败并显示 CallNotPermittedException 和 HALF_OPEN 消息。但是,如果我等待 3 秒(足以让调用完成)并进行下一次调用,则 CB 现在处于关闭状态。从 HALF_OPEN 到另一个状态的转变如何?它会等待一段时间吗?或者只是“permittedNumberOfCallsInHalfOpenState”来完成?那为什么我必须调用 3 个电话而不是 2 个?

我使用的是 1.5 版

最佳答案

CircuitBreaker 在打开时拒绝带有 CallNotPermittedException 的调用。等待时间结束后,CircuitBreaker 状态从 OPEN 变为 HALF_OPEN 并允许可配置的调用次数以查看后端是否仍然不可用或已再次可用。进一步的调用将被 CallNotPermittedException 拒绝,直到所有允许的调用都已完成。如果失败率或慢速调用率随后等于或大于配置的阈值,状态将变回 OPEN。如果失败率和慢调用率低于阈值,则状态变回 CLOSED。

这意味着如果您有 3 个并发调用处于 HALF_OPEN 状态,则允许两个并拒绝 1 个。

但是如果在执行第三个调用之前有 2 个调用成功,CircuitBreaker 会转换为 CLOSED 并允许第三个调用。

关于circuit-breaker - 断路器在 HALF_OPEN 状态下的行为如何 (resilience4j),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66976447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com