重要、重要、重要
https://github.com/alibaba/Sentinel/wiki/%E7%83%AD%E7%82%B9%E5%8F%82%E6%95%B0%E9%99%90%E6%B5%81
何为热点?
热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:
- 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
- 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
热点限流配置
Sentinel端配置,意思是说:第一个参数1秒钟内超过一次就触发限流
微服务中的配置
@GetMapping("/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 "this is test hotKey";
}
public String deal_testhotKey(String p1, String p2, BlockException e) {
return "this is deal_testhotKey";
}
如果前端触发我们在Sentinel中热点限流的配置之后,我们就会得到我们在@SentinelResource注解中配置的blockHandler返回的信息:this is deal_testhotKey
热点限流高级设置(参数额外项):
这里的意思是说,当我们第一个参数(我这里的第一个参数为p1)的值等于5时,限流的QPS的值时我们在高级设置中的2了。
其他
1.参考代码:https://github.com/TianLuhua/springCloud2020.git
2.Sentinel:需要自己下载,然后跑起来
3.Sentinel客户端:cloudalibaba-sentinel-service8401