何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
@RestController
public class HotkeyController {
/** * SentinelResource: sentinel相关配置,value唯一,blockHandler回调方法 */
@GetMapping("/hotkey")
@SentinelResource(value = "hotkey",blockHandler = "dealHotkey")
public String hotkey(@RequestParam(value = "key",required = false) String key){
return "hello hotkey, O(∩_∩)O";
}
public String dealHotkey(String key, BlockException e){
return "调用失败, o(╥﹏╥)o";
}
}
然后启动项目,访问一下接口出现,sentinel的控制台
解释:资源名为@SentinelResource的value值,阈值是qp的值,统计时长是发生后1秒内降级。
这里的参数索引是对应的是第几个参数,例如http://localhost:8005/hotkey?key=sentinel
这里的key就是第0个参数。
这里的单机阈值0的意思是只要一访问,就直接触发降级业务。如果这里单机阈值设置为3,这快速点击四次后后才触发降级业务
调用:http://localhost:8005/hotkey
调用http://localhost:8005/hotkey?key=sentinel频繁时:
期望当key为phone时qps为100,剩下的为1
狂点后仍然返回正确的行为:
http://localhost:8005/hotkey?key=phone
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_43296313/article/details/121028998
内容来源于网络,如有侵权,请联系作者删除!