Sentinel热点参数限流
2021-09-08 本文已影响0人
CodeYang
官方地址文档
热点概述
image.png热点参数限流[基本配置]---入门测试案例
只对热点数据限流有用,不管Java运行异常(如 10/0)
- 新建 HotKeyFlowLimitController
@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey")- value 值资源名,在sentinel 控制台配置的,也可以配置URL
- blockHandler 兜底方法,当出现问题,执行哪个方法
/**
* 热点参数限流
*/
@RestController
public class HotKeyFlowLimitController {
@GetMapping(value = "/testHotKey")
@SentinelResource(value = "testHotKey",blockHandler = "deal_testHotKey")
public String testHotKey(@RequestParam(value = "p1",required = false)String p1,
@RequestParam(value = "p2",required = false)String p2)
{
return "----testHotKey";
}
//BlockException 注意要加上
public String deal_testHotKey(String p1, String p2, BlockException e){
return "deal_testHotKey";//Sentinel 系统默认提示:Blocked by Sentinel (flow limiting)
}
}
- 配置热点规则
image.png资源名,参数索引(索引值从0开始),单机阈值
意思是:访问 /testHotKey 这个地址并且携带了一个参数,或者多个参数,范文超过阈值时,进行限流
- 访问测试
当访问 http://localhost:8401/testHotKey 或 http://localhost:8401/testHotKey ?p2=2无论多块都不会出现限流。
当访问 http://localhost:8401/testHotKey?p1=1时[携带了p1],当QPS每秒超过1次,马上降级处理,执行我们定义的兜底方法。
如果没有配置 blockHandler = "deal_testHotKey",展示的页面将是这样[显示不太友好]:
image.png
================================================================================
热点参数限流[参数例外项]---入门测试案例
我们期望 p1 参数当它是一个特殊值时,他的限流值跟品是不一样。
- 配置热点规则
热点规则意思是:当 p1=5 是,QPS 为 5(一秒可以接收5个请求)
支持七种数据类型:
七种数据类型
- 测试
当 p1不等于5时,http://localhost:8401/testHotKey?p1=1,发现QPS超过1就会报错
当 p1等于5时,http://localhost:8401/testHotKey?p1=5,发现QPS超过5才会报错