1、基本设置

热点规则指的是对API请求中的热点参数进行限流,当设定限流的参数达到阈值时,执行限流;在TestController控制器中添加一个API端点,并加上@SentinelResource注解,访问地址为 /test/t-hot?a=1&b=2 ,它接受两个参数,方法实现代码如下:

1.7-Sentinel热点规则

在簇点链路中对上述方法添加【+热点】,规则设置如下所示:

1.7-Sentinel热点规则

如上图所示,参数索引 0 表示第一个参数a,当API请求中附带了参数 a 且阈值达到 1 时,请求就会被限流,如果没有附带参数 a 则不会执行限流。

在IDEA中为内容中心的测试控制器添加上述的请求API,重启内容中心后测试热点规则,效果如下所示:

1.7-Sentinel热点规则

当带了参数 a 时会被限流,不带参数 a 时则不会限流。

2、高级选项

通过高级选项可以针对参数的值进行限流,设置规则如下所示:

1.7-Sentinel热点规则

如上图设置的规则,当参数 a=5 时限流的阈值为1000,a≠5时限流的阈值为1,这就是针对参数的值进行限流。

热点规则一般用于热词搜索场景中,比如每年苹果新出手机的那几天iPhone这个词的搜索量就会非常庞大,此时就可以针对这个词做热点规则的限流设置。

另外,热点规则对应的源码类和方法如下所示:com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowChecher#passCheck

 

相关文章: