微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
微服务保护
文章目录
- 微服务框架
- 微服务保护
- 31 限流规则
- 31.6 热点参数限流
- 31.6.1 热点参数限流
- 31.6.2 案例
31 限流规则
31.6 热点参数限流
31.6.1 热点参数限流
之前的限流是统计访问某个资源的所有请求,判断是否超过QPS阈值。
而热点参数限流是分别统计参数值相同的请求,判断是否超过QPS阈值。
【举个栗子说明】
现在有下面一个资源
作用是根据id 查询商品信息
现在来了一些请求
一共四个请求, 如果按照原来的方式,QPS = 4,如果是按照热点参数,QPS 会根据参数值分开统计
【这就是热点参数限流】
配置示例:
代表的含义是:对hot这个资源的0号参数(第一个参数)做统计,每1秒相同参数值的请求数不能超过5
在热点参数限流的高级选项中,可以对部分参数设置例外配置:
结合上一个配置,这里的含义是对0号的long类型参数限流,每1秒相同参数的QPS不能超过5,有两个例外:
- 如果参数值是100,则每1秒允许的QPS为10
- 如果参数值是101,则每1秒允许的QPS为15
【不废话,直接上案例】
31.6.2 案例
【案例】热点参数限流
给/order/{orderId}这个资源添加热点参数限流,规则如下:
- 默认的热点参数规则是每1秒请求量不超过2
- 给102这个参数设置例外:每1秒请求量不超过4
- 给103这个参数设置例外:每1秒请求量不超过10
【大陷阱】热点参数限流对默认的SpringMVC资源无效
修改一下代码
现在就相当于它有了两个名称
重启order 服务
OK
先访问一下接口
查看sentinel 控制台
OK,【注意这次我们要点的按钮不是流控 了,是“ + 热点”】
但是直接点出来
它又没有热点规则,所以需要点击左侧导航栏中的 “热点规则”
OK
直接新增
OK, 这样就添加完成了
使用JMeter 进行测试
QPS = 5
- 101 默认 → 2
- 102 我们自己做的例外 → 4
- 103 我们自己做的例外 → 10
直接运行查看效果
可以看到101 通过的一次只有两个
102 是4 个
103 一直都是通过的, 因为 10 > 5
看看实时监控
OK,热点参数限流就是这样。