享学课堂特邀作者:老顾
转载请声明出处!
前言
何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top N 数据,并对其访问进行限制。比如:
-
商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
-
用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
那Sentinel是怎么进行热点参数限流的呢?
热点参数
我们先对代码进行一些改造,在控制器增加个方法
我们增加了testHot方法,并在此方法上面增加了注解@SentinelResource;对于 @SentinelResource 注解方式定义的资源,若注解作用的方法上有参数,Sentinel 会将它们作为参数传入 SphU.entry(res, args)。
比如上面的方法里面 a 和 b 会分别作为第一个和第二个参数传入 Sentinel API,从而可以用于热点规则判断。
请求接口
http://localhost/test-hot?a=1