降级规则
Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。Sentinei的断路器是没有类似Hystrix半开状态的。(Sentinei 1.8.0 已有半开状态) 半开的状态系统自动去检测是否请求有异常,没有异常就关闭断路器恢复使用,有异常则继续打开断路器不可用。
RT(平均响应时间,秒级)
- 平均响应时间超出阈值且在时间窗口内通过的请求数量>=5,当两个条件同时满足后触发降级
- 窗口期过后关闭断路器
异常比列(秒级)
- QPS >= 5且异常比例(秒级统计)超过阈值时,触发降级
- 时间窗口结束后,关闭降级
异常数(分钟级)
- 异常数(分钟统计)超过阈值时,触发降级
- 时间窗口结束后,关闭降级
降级策略测试
RT
平均响应时间(DEGRADE_GRADE_RT):当1s内持续进入5个请求,对应时刻的平均响应时间(秒级)均超过阈值( count,以ms为单位),那么在接下的时间窗口(DegradeRule中的timeWindow,以s为单位)之内,对这个方法的调用都会自动地熔断(抛出DegradeException )。
降级策略设置
异常比例
异常比例(DEGRADE_GRADE_EXCEPTION_RATIO):当资源的每秒请求量 >= 5,并且每秒异常总数占通过量的比值超过阈值( DegradeRule中的 count)之后,资源进入降级状态,即在接下的时间窗口( DegradeRule中的timeWindow,以s为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是[0.0, 1.0],代表0% -100%。
降级策略设置
@GetMapping("/testD")
public String testD() {
log.info("testD 异常比例");
int age = 10/0;
return "------testD";
}
异常数
异常数( DEGRADE_GRADF_EXCEPTION_COUNT ) 即当资源近1分钟的异常数目超过阈值之后会进行熔断。需注意由于统计时间窗口是分钟级别的,若timeWindow小于60s,则结束熔断状态后码可能再进入熔断状态。
降级策略设置