熔断策略:慢调用比例、异常比例、异常数

引言:不同的"病症"需要不同的"药方" 在上一篇文章中,我们学习了熔断降级的原理和熔断器的状态机。我们知道,熔断的本质是检测故障 → 快速失败 → 自动恢复。 但问题来了:如何判断依赖服务"生病"了? 就像医生诊断疾病,需要看不同的指标: 体温高不高?(响应时间) 心率正常吗?(异常比例) 咳嗽了几声?(异常次数) Sentinel也提供了三种熔断策略,分别针对不同的故障模式: 慢调用比例(Slow Request Ratio):依赖服务变慢了 异常比例(Exception Ratio):依赖服务频繁抛异常 异常数(Exception Count):依赖服务在短时间内抛了太多异常 本文将深入讲解这三种策略的原理、配置方法和适用场景。 策略一:慢调用比例(Slow Request Ratio) 什么是慢调用? 慢调用是指响应时间(RT)超过设定阈值的请求。 例如: 设置慢调用阈值为1000ms 某个请求的响应时间是1200ms 这个请求就被认为是"慢调用" 慢调用比例的触发条件 熔断触发条件:在统计时长内,慢调用的比例超过设定阈值,且请求数达到最小请求数。 公式: 慢调用比例 = 慢调用数 / 总请求数 如果:慢调用比例 >= 设定阈值,且 总请求数 >= 最小请求数 则:触发熔断 示例: 统计时长:10秒 慢调用RT阈值:1000ms 慢调用比例阈值:50% 最小请求数:5 场景1:10秒内有10个请求,其中6个RT > 1000ms 慢调用比例 = 6/10 = 60% > 50% ✅ 请求数 = 10 >= 5 ✅ 结论:触发熔断 场景2:10秒内有3个请求,其中2个RT > 1000ms 慢调用比例 = 2/3 = 67% > 50% ✅ 请求数 = 3 < 5 ❌ 结论:不触发熔断(请求数太少,可能是偶发) 配置参数详解 DegradeRule rule = new DegradeRule(); rule.setResource("callRemoteService"); rule.setGrade(RuleConstant.DEGRADE_GRADE_RT); // 策略:慢调用比例 // 核心参数 rule.setCount(1000); // 慢调用RT阈值:1000ms rule.setSlowRatioThreshold(0.5); // 慢调用比例阈值:50% rule.setMinRequestAmount(5); // 最小请求数:5 rule.setStatIntervalMs(10000); // 统计时长:10秒 rule.setTimeWindow(10); // 熔断时长:10秒 参数说明: ...

2025-11-20 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...