Sentinel学习笔记(2)- 熔断、热点、系统、授权规则

熔断策略

Sentinel有三种熔断策略:慢调用比例异常比例异常数

  1. 慢调用比例:选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。
    测试示例:


    慢调用比例

    该配置在满足一下两个条件时会发生熔断降级:1. 2000ms内至少有5个请求。2. 2000ms内最大响应时间大于100ms的请求大于50%。
    下面代码的最大响应时间一定会大于100ms,所以当2000ms内超过5个请求时会发生熔断降级。

    @SneakyThrows
    @GetMapping("getStr")
    public String getStr() {
        Thread.sleep(200);
        return "这个方法200毫秒响应时间";
    }
  1. 异常比例:当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。


    异常比例

    该配置在满足以下条件时会发生熔断降级:1. 5000ms内至少有5个请求。2. 5000ms内异常的比例大于80%。

  2. 异常数:当单位统计时长内的异常数目超过阈值之后会自动进行熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。


    异常数

    该配置在满足一下连个条件时会发生降级熔断:1. 5000ms内至少有5个请求。2. 在5000ms内该资源的异常次数超过3次。

根据异常比例和异常数量统计时,Spring MVC的统一异常处理的优先级会大于异常统计的优先级。假如接口方法中抛出异常被异常处理捕获到,这时此异常就不会触发异常统计。如果想要Sentinel统计该异常,需要在异常统计中加如Tracer.trace([exception])。下面是示例代码:

@RestControllerAdvice
public class GlobalExceptionHandler {

    /** 接口中抛出IllegalArgumentException异常时,不会被Sentinel监控到 */
    @ExceptionHandler(IllegalArgumentException.class)
    public String handleIllegalArgumentException(IllegalArgumentException e) {
        return e.getMessage();
    }

    @ExceptionHandler(Exception.class)
    public String handleException(Exception e) {
        /* 其余的异常交给Sentinel统计 */
        Tracer.trace(e);
        return e.getMessage();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容