Sentinel热点key限流的实现详解

 更新时间:2022年08月31日 11:20:02   作者:一个风轻云淡  
这篇文章主要介绍了Sentinel热点key限流的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

基本介绍

何为热点

热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进行限流或者其它操作

兜底方法

分为系统默认和客户自定义两种

之前的case,限流出问题后,都是用sentinel系统默认的提示:Blocked by Sentinel (flow limiting)

我们能不能自定?类似hystrix,某个方法出问题了,就找对应的兜底降级方法?

结论:

从HystrixCommand 到@SentinelResource

@GetMapping("/testHotKey")
@SentinelResource(value = "testHotKey",blockHandler = "dealHandler_testHotKey")
public String testHotKey(@RequestParam(value = "p1",required = false) String p1, 
                         @RequestParam(value = "p2",required = false) String p2){
    return "------testHotKey";
}
public String dealHandler_testHotKey(String p1,String p2,BlockException exception)
{
    return "-----dealHandler_testHotKey";
}

限流模式只支持QPS模式,固定写死了。(这才叫热点)

@SentinelResource注解的方法参数索引,0代表第一个参数,1代表第二个参数,以此类推

单机阀值以及统计窗口时长表示在此窗口时间超过阀值就限流。

上面的抓图就是第一个参数有值的话,1秒的QPS为1,超过就限流,限流后调用dealHandler_testHotKey支持方法。

方法testHotKey里面第一个参数只要QPS超过每秒1次,马上降级处理

访问http://localhost:8401/testHotKey没问题

同理带参数访问也没有问题

同理带参数访问也1s点个俩三次发现问题

参数例外项

上述案例演示了第一个参数p1,当QPS超过1秒1次点击后马上被限流

前提条件 :热点参数的注意点,参数必须是基本类型或者String

到此这篇关于Sentinel热点key限流的实现详解的文章就介绍到这了,更多相关Sentinel热点key限流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 自定义注解实现涉密字段脱敏

    SpringBoot 自定义注解实现涉密字段脱敏

    关于数据脱敏,网上的文章都是硬编码规则,比如对身份证,手机号,邮件地址等固定写法脱敏。本文在此基础上,拓展动态从数据库查出涉密关键字执行脱敏操作。感兴趣的同学可以参考阅读
    2023-03-03
  • Java 类加载机制详细介绍

    Java 类加载机制详细介绍

    这篇文章主要介绍了Java 类加载机制详细介绍的相关资料,需要的朋友可以参考下
    2017-05-05
  • Mybatis实现分表插件

    Mybatis实现分表插件

    随着系统的发展,数据量也会越来越大,分库分表可以有效的缓解数据库的压力,本文主要介绍了Mybatis实现分表插件,感兴趣的可以了解一下
    2021-05-05
  • Spring依赖注入底层原理详解

    Spring依赖注入底层原理详解

    这篇文章主要介绍了Spring依赖注入底层原理详解,  依赖注入是一种设计模式,它将对象之间的依赖关系从代码中移除,并由容器来管理这些依赖关系,依赖注入的主要目的是降低代码的耦合度,使代码更加灵活和可维护,需要的朋友可以参考下
    2023-09-09
  • mybatis plus in使用时传数组、集合的注意点说明

    mybatis plus in使用时传数组、集合的注意点说明

    这篇文章主要介绍了mybatis plus in使用时传数组、集合的注意点说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • java和jsp之间的request传值方法

    java和jsp之间的request传值方法

    这篇文章主要给大家介绍了关于java和jsp之间的request传值方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • java实现简单的推箱子小游戏

    java实现简单的推箱子小游戏

    这篇文章主要为大家详细介绍了java实现简单的推箱子小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • SpringBoot @JsonDeserialize自定义Json序列化方式

    SpringBoot @JsonDeserialize自定义Json序列化方式

    这篇文章主要介绍了SpringBoot @JsonDeserialize自定义Json序列化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 基于JSON实现传输byte数组过程解析

    基于JSON实现传输byte数组过程解析

    这篇文章主要介绍了基于JSON实现传输byte数组过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 解决Spring调用Feign报错:java.io.IOException:Incomplete output stream问题

    解决Spring调用Feign报错:java.io.IOException:Incomplete output

    这篇文章主要介绍了解决Spring调用Feign报错:java.io.IOException:Incomplete output stream问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04

最新评论