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代表方法上第一个参数
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号