Sentinel热点参数限流

2021-09-08  本文已影响0人  CodeYang

官方地址文档

热点概述

image.png

热点参数限流[基本配置]---入门测试案例

只对热点数据限流有用,不管Java运行异常(如 10/0)

  1. 新建 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)
    }
}
  1. 配置热点规则

资源名,参数索引(索引值从0开始),单机阈值
意思是:访问 /testHotKey 这个地址并且携带了一个参数,或者多个参数,范文超过阈值时,进行限流

image.png
  1. 访问测试

当访问 http://localhost:8401/testHotKeyhttp://localhost:8401/testHotKey ?p2=2无论多块都不会出现限流。
当访问 http://localhost:8401/testHotKey?p1=1时[携带了p1],当QPS每秒超过1次,马上降级处理,执行我们定义的兜底方法。

image.png

如果没有配置 blockHandler = "deal_testHotKey",展示的页面将是这样[显示不太友好]:


image.png

================================================================================

热点参数限流[参数例外项]---入门测试案例

我们期望 p1 参数当它是一个特殊值时,他的限流值跟品是不一样。

  1. 配置热点规则

意思是:当 p1=5 是,QPS 为 5(一秒可以接收5个请求)

热点规则

支持七种数据类型:


七种数据类型
  1. 测试

当 p1不等于5时,http://localhost:8401/testHotKey?p1=1,发现QPS超过1就会报错
当 p1等于5时,http://localhost:8401/testHotKey?p1=5,发现QPS超过5才会报错

上一篇下一篇

猜你喜欢

热点阅读