-
Notifications
You must be signed in to change notification settings - Fork 160
Open
Description
针对 HALF_OPEN 状态。分析下面两处目前的逻辑:
- recordFailure 方法:只要失败了,就要被打回 OPEN 状态。因此接下来的请求必须每个都执行成功,才能回到 CLOSED 状态,那么设置 HALF_OPEN_SUCCESS_RATE 即成功率似乎没有意义?
- recordSuccess 方法:如果 requestCount == 1 即第 1 次请求就成功了,那么成功率直接 100%,进而直接就会变成 CLOSED 状态,似乎有点武断。
个人观点:依然是 HALF_OPEN 状态。
- 无论接下来的请求成功与否,requestCount++。
- 如果失败了,recordFailure 不应该直接回到 OPEN,仅记录失败时间即可。
- 如果成功了,recordSuccess 记录 successCount,并且设置一个最小 requestCounnt 数量如 HALF_OPEN_MIN_REQUEST_COUNT,防止第 1 次请求成功就侥幸溜走,但是后续又大量失败造成不必要的压力(虽然依然可以触发熔断)。
PS:提 issue 的时候还未编码实现,只是发现逻辑似乎有点问题。以上是目前个人的直观思路,若分析无误后续会提 PR。
GGBoooond and Sakura-Cloud28
Metadata
Metadata
Assignees
Labels
No labels