Springcloud—B站学习总结—Springcloud Alibaba—Sentinel降级
Sentinel的降级官网就叫熔断降级,因为熔断了 才会有服务降级然后给予友好的提示
降级规则
基本介绍
降级策略:
1.RT
2.异常比列
3.异常数
进一步说明
注意: sentinel的断路器是没有半开状态的
降级策略----第一种:RT
平均响应时间 (DEGRADE_GRADE_RT):
当 1s 内持续进入 N 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms 为单位),
那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地熔断
(抛出 DegradeException)。
注意 Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,
若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。
当一秒钟有n个请求发送过来,平均响应时间>阈值,满足这两个条件的时候,触发降级,断路器打开,在一段时间内,也就是时间窗口期结束完之前,都不能用,等时间结束后,关闭降级
实例:
配置降级规则
代码 示例:
@GetMapping("/testD")
public String testD(){
try {
TimeUnit.SECONDS.sleep(1);
}
catch
(InterruptedException e) {
e.printStackTrace();
}log.info("testD 测试RT");
return "------testD";
}
降级策略----第二种:异常比例
定义:
异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):当资源的每秒请求量 >= N(可配置),
并且每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,资源进入降级状态,
即在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回。
异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。
图解思路:
异常处理编辑降级规则
代码示例:
@GetMapping("/testE")
public String testE()
{
log.info("testE 测试异常比例");
int age = 10/0;
return "------testE 测试异常比例";
}
结论:
总结:
降级策略----第三种:异常数
定义
异常数 (DEGRADE_GRADE_EXCEPTION_COUNT):当资源近 1 分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的,若 timeWindow 小于 60s,则结束熔断状态后仍可能再进入熔断状态。
注意: 时间窗口一定要大于60s
图解:
降级配置