Sentinel热点参数限流

何为热点? 

何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K数据,并对其访问进行限制。比如:

1)商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制;

2)用户 ID 为参数,统计一段时间内频繁访问的用户 ID 进行限制;

1、自定义报错信息 @SentinelResource

替换之前的  Sentinel 系统默认提示:Blocked by Sentinel (flow limiting) ,自定义报错信息;

1.1 如何自定义报错信息??

重要注解 @SentinelResource(value = "testHotKey", blockHandler = "deal_testHotKey")

注1:@SentinelResource 的名字要唯一,也就是 value唯一;

注2: @SentinelResource(value = "testHotKey") 中未加斜杆的名字 testHotKey                      与 @GetMapping("/testHotKey") 中加了斜杆的 /testHotKey 是不一样的;

配置热点规则:

参数索引:热点参数索引,从下标0开始统计;

                看以下java代码,参数p1索引为0;如果你要参数p1进行限流,就配0;

 1.2 自定义错误信息-java代码

报错了就由 blockHandler 配置的方法处理

    @GetMapping("/testHotKey")
    @SentinelResource(value = "testHotKey", blockHandler = "deal_testHotKey")
    public String testHotKey(@RequestParam(value = "p1", required = false) String pa, @RequestParam(value = "p2", required = false) String p2) {
        return "------testHotKey";
    }

    public String deal_testHotKey(String p1, String p2, BlockException exception) {
        //Sentinel 系统默认提示:Blocked by Sentinel (flow limiting)
        return "-----deal_testHotKey,呜呜呜呜";
    }

1.3 测试自定义规则  

根据上图热点规则的配置 :每秒请求一次正常,超过一次则提示配置的自定义报错信息;

http://localhost:8401/testHotKey?p1=a

 

 参数例外项

 1)普通情况:每秒请求达到阈值1后马上进行限流;

2)特例:我们期望 p1 参数当它是某个特殊值时,它的限流值和平常不一样;

                假如 p1 的值等于444时,它的阈值可以达到200;如图所示:

参数类型:支持8种基本数据类型+java.lang.String

当索引0,也就是参数p1的值为444,每秒可以请求200都不会报错,符合热点配置规则; 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值