Sentinel 降级规则
一 、Sentinel 熔断降级简介
Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其他的资源而导致级联错误。
当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出DegradeException)。
Sentinel的熔断器是没有半开状态的。
半开的状态系统自动去检测是否请求有异常,没有异常就关闭熔断器恢复使用,有异常则继续打开断路器不可用。具体可参考Hystrix。
1.1 RT(平均响应时间,秒级)
平均响应时间 超出阈值 且 在时间窗口内通过的请求>=5,两个条件同时满足后触发降级
窗口期过后关闭熔断器
RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=xxxxx才能生效)
- 说明:
平均响应时间:当1s内持续进入5个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以ms为单位),那么在接下的时间窗口(DegradeRule中的timeWindow,以s为单位)之内,对这个方法的调用都会自动的熔断(抛出DegradeException)。
注意Sentinel默认统计的RT上限是4900ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启用配置项Dcsp.sentinel.statistic.max.rt=xxxxx来配置。
- 修改java代码:
package com.ckfuture.springcloud.alibaba.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.TimeUnit; @RestController @Slf4j public class FlowLimitController { @GetMapping("/testA") public String testA() { log.info(Thread.currentThread().getName()+"\t"+".....testA"); return "------testA"; } @GetMapping("/testB") public String testB() { return "------testB"; } @GetMapping("/testD") public String testD(){ try{ TimeUnit.SECONDS.sleep(1); }catch (InterruptedException e){e.printStackTrace();} log.info("testD 测试RT"); return "------testD"; } }
配置降级规则:
1.2 异常比例(秒级)
QPS>=5且异常比例(秒级统计)超过阈值时,触发降级;时间窗口结束后,关闭降级
修改java代码:
@GetMapping("/testD") public String testD(){ int i=10/0; log.info("testD 测试异常比例"); return "------testD"; }
配置降级规则:
利用jmeter测试并发测试后,访问接口熔断降级了。
总结:
单独访问一次,必然来一次报错一次(int i=10/0),调用一次错一次;
因为异常比例没有达到1秒请求量超过5个。没有触发降级配置条件,当开启jmeter后,直接高并发发送请求,多次调用达到我们的配置条件了,熔断器开启(保险丝跳闸)。微服务不可用了,不再报错error而是服务降级了。
1.3 异常数(分钟级)
异常数(分钟统计)超过阈值时,触发降级;时间窗口结束后,关闭降级
当资源近1分钟的异常数目超过阈值之后会进行熔断,注意由于统计时间窗口是分钟级别的,若timeWindow小于60s,则结束熔断状态后仍可能在进入熔断状态。
时间窗口一定要大于等于60秒。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!