热点key限流(3)

举报
yd_249383650 发表于 2023/03/27 09:17:03 2023/03/27
【摘要】 ​ 基本介绍何为热点热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进行限流或者其它操作 ​编辑兜底方法分为系统默认和客户自定义,两种 之前的case,限流出问题后,都是用sentinel系统默认的提示:Blocked by Sentinel (flow limiting)  我们能不能自定?类似hystrix,某个方法出问题了,就找对应...

 基本介绍

何为热点
热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进行限流或者其它操作

 编辑

兜底方法
分为系统默认和客户自定义,两种
 之前的case,限流出问题后,都是用sentinel系统默认的提示:Blocked by Sentinel (flow limiting)
 
 我们能不能自定?类似hystrix,某个方法出问题了,就找对应的兜底降级方法?
 
 结论:
 从HystrixCommand 到@SentinelResource 

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

 编辑

限流模式只支持QPS模式,固定写死了。(这才叫热点)
@SentinelResource注解的方法参数索引,0代表第一个参数,1代表第二个参数,以此类推
单机阀值以及统计窗口时长表示在此窗口时间超过阀值就限流。

上面的抓图就是第一个参数有值的话,1秒的QPS为1,超过就限流,限流后调用dealHandler_testHotKey支持方法。 

方法testHotKey里面第一个参数只要QPS超过每秒1次,马上降级处理

访问http://localhost:8401/testHotKey没问题

编辑

 同理带参数访问也没有问题

编辑

  同理带参数访问也1s点个俩三次发现问题

编辑

编辑


参数例外项 

上述案例演示了第一个参数p1,当QPS超过1秒1次点击后马上被限流

编辑

编辑

前提条件 :热点参数的注意点,参数必须是基本类型或者String

编辑

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。