Sentinel降级规则

Sentinel降级规则_第1张图片

Sentinel降级规则_第2张图片 Sentinel降级规则_第3张图片

 RT(平均响应时间,秒级)
       平均响应时间超出阈值且在时间窗口内通过的请求>=5,两个条件同时满足后触发降级
       窗口期过后关闭断路器
       RT最大4900(更大的需要通过-Dcsp.sentinel.statistic.max.rt=XXXX设置)
异常比例(秒级)
       QPS>=5且异常比例(秒级统计)超过阈值时,触发降级,窗口期结束,关闭降级
异常数(分钟级)
       异常数(分钟统计)超过阈值时,触发降级,窗口期结束,关闭降级

Sentinel熔断降级会在调用链路中的某个资源出现不稳定状态时(例如调用超时或者异常比例升高,对这个资源的调用进行限制,让请求快速失败),避免影响到其他的资源而导致级联错误

当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都是自动熔断(默认行为是跑出DegradeException)

Sentinel的断路器是没有半开状态的

半开的状态系统自动去检测是否请求有异常,没有异常就关闭断路器恢复使用,有异常则继续打开断路器不可用。具体可以参考Hystrix

RT 

 平均响应时间 (DEGRADE_GRADE_RT):当资源的平均响应时间超过阈值(DegradeRule 中的 count,以 ms 为单位)之后,资源进入准降级状态。接下来如果持续进入 5 个请求,它们的 RT 都持续超过这个阈值,那么在接下的时间窗口(DegradeRule 中的timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地返回(抛出 DegradeException)。在下一个时间窗口到来时, 会接着再放入5个请求, 再重复上面的判断.

    

Sentinel降级规则_第4张图片

测试:

  @GetMapping("/testD")
    public String testD()
    {
        try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); }
        log.info("testD 测试RT");

        return "------testD";
    }

结论:

按照上述配置,
永远一秒钟进来的10个线程(大于5个)调用testD,我们希望200毫秒处理完本次任务,
如果超过200毫秒还没处理完,在未来1秒的时间窗口内,断路器打开微服务不可用

停止jmeter,没有这么大的访问量了,断路器关闭,微服务恢复

异常比例 

异常比例 :当资源的每秒异常总数占通过量的比值超过阈值之后,资源进入降级状态,即在接下的时间窗口(以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是 [0, 1],代表 0% - 100%。

Sentinel降级规则_第5张图片

异常数 

 异常数 :当资源近 1 分钟的异常数目超过阈值之后会进行熔断;时间窗口一定要大于60秒

Sentinel降级规则_第6张图片

 

你可能感兴趣的:(p2p,linq,网络协议)