Resilience4j 中 failure rate 与 slow call rate 分别如何计算,为什么慢调用也可能触发熔断?
进阶版来源:alibaba高级工程师限流与降级策略滑动窗口统计慢调用熔断Resilience4j熔断器
草稿
答案解析
Resilience4j 的熔断器会在滑动窗口内统计调用情况,并且只有当记录的调用数达到 minimumNumberOfCalls 后,才会计算这两个比例。
Failure rate(失败率) :失败调用数 ÷ 纳入统计的总调用数 × 100%。哪些异常算作失败,可以通过异常记录和忽略规则配置。 Slow call rate(慢调用率) :耗时超过 slowCallDurationThreshold 的调用数 ÷ 纳入统计的总调用数 × 100%。
当失败率达到或超过 failureRateThreshold,或者慢调用率达到或超过 slowCallRateThreshold 时,熔断器都可能从关闭状态转为打开状态。因此,调用即使最终成功,只要耗时过长,也可能触发熔断。
原因是慢调用通常意味着下游响应变差;它们还会长时间占用线程、连接等资源,增加请求排队和超时风险,进一步放大系统压力。熔断慢调用可以提前限制流量,避免局部性能问题演变成级联故障。
登录后查看完整内容
