SpringCloud Alibaba系列(三) Sentinel热点参数限流

简介:   热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。

一.介绍


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


  如:


  制造程序内部出错



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




目录
相关文章
|
21天前
|
Java 数据安全/隐私保护 Sentinel
面试官:Sentinel是如何实现限流的?
面试官:Sentinel是如何实现限流的?
314 1
|
5天前
|
监控 Java API
Sentinel熔断限流真的太丝滑了
Sentinel熔断限流真的太丝滑了
18 0
|
20天前
|
监控 数据挖掘 索引
深度剖析Sentinel热点规则
深度剖析Sentinel热点规则
33 1
|
1月前
|
存储 数据库 Nacos
微服务限流Sentinel讲解(五)
微服务限流Sentinel讲解(五)
|
1月前
|
监控 测试技术 数据安全/隐私保护
如何集成Sentinel实现流控、降级、热点规则、授权规则总结
如何集成Sentinel实现流控、降级、热点规则、授权规则总结
53 0
|
2月前
|
算法 Sentinel 索引
Sentinel热点参数限流动
Sentinel热点参数限流动
|
2月前
|
消息中间件 Java API
一文带你速通Sentinel限流规则(流控)解读
一文带你速通Sentinel限流规则(流控)解读
|
2月前
|
监控 Java Sentinel
SpringCloud之Sentinel概述和安装及简单整合
SpringCloud之Sentinel概述和安装及简单整合
|
2月前
|
Java 关系型数据库 数据库
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(下)
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(下)
|
2月前
|
数据可视化 Java 数据安全/隐私保护
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识(上)
【Spring Cloud Alibaba Sentinel 实现熔断与限流】 —— 每天一点小知识