SpringCloud Alibaba系列(三) Sentinel热点参数限流
愿你生命中有够多的云翳,造就一个美好的黄昏
欢迎关注公众号【渣男小四】,一个喜欢技术更喜欢艺术的青年
一.介绍
热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:
商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。
二.简单使用
例子:我们需要对携带参数为h1的请求进行限流,带有h1参数的是热点商品,不过过于频繁的访问。
代码
商品查询接口
查询过于频繁进行限流的兜底方法,兜底方法需要在上面query接口用blockHandler指定,如果query接口没有用blockHandler指定,则会返回异常界面,对于前端来说不友好
配置热点key
资源名为@SentinelResource(value = "query")中value值,参数索引从0开始,如果第一个参数是h1,则遵守响应的热点规则,单机阈值为1,代表一秒钟只能处理一个请求,否则进行限流
测试
1.一秒钟只发送一次请求
2.一秒钟多次请求
参数例外项
上面我们只要带了h1参数,不管h1的值是什么,违反了热点规则,都将会限流,但是有些情况我们希望参数的值为某个值时,限流规则不同,也就是说如果h1的值如果为big,我们希望他的QPS能够达到200。
配置参数例外项
配置过后,如果h1的值为big,则QPS就能达到200
注意:@SentinelResource只处理Sentinel控制台所配置的异常,而不处理程序的内部错误情况,也就是说在Sentinel控制台配置了相应的规则我才处理,如果程序内部出现了异常情况,则处理不了。
如:
制造程序内部出错
结果:无法走热点规则,而是直接报错。
最新文章
- 最新WingIDE注册破解方法 【转】
- REDIS源码中一些值得学习的技术细节01
- android studio 中 .9.png的制作
- [机器学习]信息&;熵&;信息增益
- 关于css的全面学习笔记
- 纯CSS3实现3D动画导航,html5 webRTC技术实现免费网页电话拨打
- 随机变量的方差variance &; 随机向量的协方差矩阵covariance matrix
- (转载)#include机制,#ifndef...#define...#endif防止重复引用,声明,定义等概念
- Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
- [转载] Redis之七种武器
- mongoDB之数据类型
- 在Swift项目中使用OC,在OC项目中使用Swift
- CSS3盒子模型
- 你不知道的JavaScript--Item7 函数和(命名)函数表达式
- MT【313】特征方程逆用
- 洛谷题解 CF777A 【Shell Game】
- vue-cli配置多入口多出口,实现一个项目两个访问地址,区分不同上线环境
- [py]使用字典get方法做数据统计
- urllib和urllib2之间的区别
- JaveWeb 公司项目(1)----- 使Div覆盖另一个Div完成切换效果