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代表方法上第一个参数