8. Alibaba Sentinel 熔断策略之慢调用比例

1. 概念解释

熔断策略慢调用比例是以慢调用数量的比例作为阈值,首先需要设置最大 RT(即最大的响应时间,用于鉴定是否是慢调用),请求的响应时间大于该值则统计为慢调用。当单位统计时长(statIntervalMs)内请求数大于设置的最小请求数,并且慢调用的比例大于比例阈值,则接下来的请求会自动熔断,熔断时间为设置的熔断时长。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若在HALF-OPEN状态下有一个请求响应时间小于 最大RT 则结束熔断,否则继续熔断。

具体设置如下图:

8. Alibaba Sentinel 熔断策略之慢调用比例_第1张图片

字段说明表格

字段名 说明
资源名 访问的请求路径
熔断策略 熔断规则配置后,进行熔断的方式策略,本文主要分析慢调用比例
最大RT 最大响应时间,单位:毫秒数,用于鉴定是否是慢调用
比例阈值 值的是慢调用的比例阈值,是触发熔断的其中一个条件
熔断时长 当条件满足后需要进行熔断的熔断时长,单位:秒
最小请求数 在统计时长的时间内,请求数要大于该值,才会判断慢调用比例是否大于比例阈值, 所以最小请求数是触发熔断的另外一个条件
统计时长 触发熔断需要统计请求数的时长,单位:毫秒

帮助理解图

8. Alibaba Sentinel 熔断策略之慢调用比例_第2张图片

2. 案例演示

首先我们需要添加一个控制器,这个控制器中的调用资源方法中sleep500毫秒,方便被标记成慢调用, 同时支持不慢调用请求,isShow=false时

@GetMapping("/testA")
public String testA(boolean isSlow) {
    if(isSlow) {
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    return "-----testA - ";
}

设置熔断规则

8. Alibaba Sentinel 熔断策略之慢调用比例_第3张图片

上面的熔断规则表示说: 访问/testA资源时,如果在1000毫秒内,请求数量超过5,并且这些数量中超过300毫秒的请求数量的比例超过0.5则熔断5秒,5秒后进入半开状态,如果半开状态中有一个请求小于300毫秒,则取消熔断,否则继续熔断

3. 理论实践

为了展示效果

  1. 我们要支持在同一个资源上慢调用请求(请求响应超过300毫秒)和非慢调用请求(请求马上得到响应
    慢调用地址 http://127.0.0.1:8401/testA?isSlow=true
    非慢调用地址 http://127.0.0.1:8401/testA?isSlow=false
  2. 在JMeter中开启6个线程同时请求慢调用地址,并启动JMeter

    8. Alibaba Sentinel 熔断策略之慢调用比例_第4张图片

    8. Alibaba Sentinel 熔断策略之慢调用比例_第5张图片

  3. 这时候,/testA资源会进入一个5秒的熔断时长。 我们在这个时间内请求非慢调用地址,会被熔断

    8. Alibaba Sentinel 熔断策略之慢调用比例_第6张图片

  4. 测试完以上情况后,停止JMeter,在5秒后再次请求慢调用地址,那么会继续熔断

    8. Alibaba Sentinel 熔断策略之慢调用比例_第7张图片

  5. 测试完以上情况后,停止JMeter,那么会在5秒后取消熔断

    8. Alibaba Sentinel 熔断策略之慢调用比例_第8张图片

你可能感兴趣的:(Alibaba,Sentinel,连载专栏,java,微服务,服务发现)