springcloud -- sentinel 降级规则,热点key限流规则

1、官网文档地址:https://github.com/alibaba/Sentinel/wiki/%E7%86%94%E6%96%AD%E9%99%8D%E7%BA%A7

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

 

 sentinel 使用

降级:

慢调用比例:

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

  @GetMapping("testD")
    public String testD() {
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //log.info("TestB运行中.....");
        return "测TestD中RT配置";
    }

 

 

 使用jmeter

 

 再次访问testD

 

 异常比例:

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

 

 

 @GetMapping("testC")
    public String testD1() {
        int i = 10 / 0;
        //log.info("TestB运行中.....");
        return "测TestC中异常比例配置";
    }

第一次访问:返回报错信息,(这个是有代码带来的)

 

 快速访问后:

 

 当停止访问1s后,再次访问,访问返回又是代码返回值。

 

 异常数:

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

 

 

访问第六次的时候返回的界面:

熔断时长设置大于等于1分钟,这里测试的时候曾经设置成1s失效时间也是要1分钟后才失效,找了去年时候官网文档

上解释的统计时间窗口是分钟级别的,如果时间窗口设置小于60s,则结束熔断状态后任然可能进入熔断状态。

 

热点key规则:

  @GetMapping("testHotkey")
    @SentinelResource(value = "testHotkey", /*defaultFallback = "hotkeyHandler"*/blockHandler = "handler")
    public String testHotkey(
            @RequestParam(value = "p1",required = false) String p1,
            @RequestParam(value = "p2",required = false) String p2) {
        return "测试热点key限流";
    }

    public String handler(String p1, String p2, BlockException e) {
        return "fdsfdsfdsf " + e.getMessage();
    }

    public String hotkeyHandler() {
        return "触发降级方法!";
    }

 

 

 参数索引:0代表方法上第一个参数

 

posted @ 2021-06-23 16:56  AlexZS  Views(165)  Comments(0Edit  收藏  举报