愿你生命中有够多的云翳,造就一个美好的黄昏

欢迎关注公众号【渣男小四】,一个喜欢技术更喜欢艺术的青年

一.介绍

  热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 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控制台配置了相应的规则我才处理,如果程序内部出现了异常情况,则处理不了。

  如:

  制造程序内部出错

  结果:无法走热点规则,而是直接报错。

最新文章

  1. 最新WingIDE注册破解方法 【转】
  2. REDIS源码中一些值得学习的技术细节01
  3. android studio 中 .9.png的制作
  4. [机器学习]信息&熵&信息增益
  5. 关于css的全面学习笔记
  6. 纯CSS3实现3D动画导航,html5 webRTC技术实现免费网页电话拨打
  7. 随机变量的方差variance & 随机向量的协方差矩阵covariance matrix
  8. (转载)#include机制,#ifndef...#define...#endif防止重复引用,声明,定义等概念
  9. Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
  10. [转载] Redis之七种武器
  11. mongoDB之数据类型
  12. 在Swift项目中使用OC,在OC项目中使用Swift
  13. CSS3盒子模型
  14. 你不知道的JavaScript--Item7 函数和(命名)函数表达式
  15. MT【313】特征方程逆用
  16. 洛谷题解 CF777A 【Shell Game】
  17. vue-cli配置多入口多出口,实现一个项目两个访问地址,区分不同上线环境
  18. [py]使用字典get方法做数据统计
  19. urllib和urllib2之间的区别
  20. JaveWeb 公司项目(1)----- 使Div覆盖另一个Div完成切换效果

热门文章

  1. js实现csv下载
  2. java工具类去掉字符串String中的.点。android开发java程序员常用工具类
  3. NGUI List优化
  4. 前后端API交互如何保证数据安全性?
  5. [BUUOJ记录] [GXYCTF2019]BabySQli
  6. 2020年的UWP——通过Radio类控制Cellular(1)
  7. 为什么一个还没毕业的大学生能够把 IO 讲的这么好?
  8. 20190923-12Linux软件包管理 000 020
  9. oracle之字符集
  10. 刀哥多线程自动释放池autoreleasepool