天天看点

Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例

Sentinel降级-异常比例

一、是什么

    异常比例 (ERROR_RATIO):当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

二、测试

  • 代码
@GetMapping("/testC")
    public String testC(){
        log.info("------testC 异常比例");
        int age=10/0;
        return "------testC 异常比例";
    }
           
  • 配置
    Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例
  • jemeter压力测试:
    • 设置每秒请求数
      Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例
    • 设置请求路径url
      Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例
  • 测试

    1.未使用jemeter情况下测试/testC接口

    会直接报错,因为定义分母不能为0

    Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例

2.使用jemeter情况下测试/testC接口

自动熔断,因为每秒请求数大于五并且错误率超过了0.2

Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例
Sentinel第五篇(Sentinel降级-异常比例)Sentinel降级-异常比例
  • 结论

    按照上述配置:

  • 单独访问一次,必然来一次报错一次(int age = 10/0),调一次错一次;
  • 异常比例 (ERROR_RATIO):当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN

    状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% -

    100%。

  • 开启jmeter后,直接高并发发送请求,多次调用达到我们的配置条件了。断路器开启(保险丝跳闸),微服务不可用了,不再报错error而是服务降级了。

继续阅读