之前几篇中,我们实验的是sentinel的流控和熔断降级,这里我们试试热点参数限流规则,环境搭建参考八、springCloudAlibaba-整合sentinel
1、热点参数限流规则
说白了就是对某些参数值进行限流,比如我们的商品查询,参数为merchid,如果发现商品A,也就是merchid=A,访问量过大,影响了性能,那么可以对A进行限流。
2、使用
@RequestMapping("/get")
@SentinelResource(value = "get",blockHandler = "blockHandler")
public String get(String id,String name) throws InterruptedException {
return "查询订单"+id+";"+name;
}
public String blockHandler(String id,String name,BlockException ex){
return "限流啊"+id+";"+name;
}
热点参数限流必须要用@SentinelResource注解,直接用控制台是没有效果的,这里有两个参数id和name,那我们来控制台配置
这里要注意点,必须先建对所有的参数进行限流,比如上图,我们0对应的是id,先对id进行限流控制,也就是我们大多数的请求id都是10QPS,保存后重新打开才会看的到高级选项,此时才能够对id的某些值进行限流配置,如下两个就是分别对id=2,name=hello进行限流
id
name
经过测试,符合预期!
ok!