Sentinel笔记(四)热点限流

如何在项目中添加Sentinel的支持请看这里
Sentinel笔记(一)第一个监控实例

介绍

官网

何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:
商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制
用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制
热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。
Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。热点参数限流支持集群模式。

新增热点规则

创建controller方法
这里用到 @SentinelResource 注解,将该资源标记为Sentinel资源

  • value属性标识资源名称,在sentinel控制台可以看到,配置热点规则使用这个资源名称,而不是 @GetMapping 中的路由
  • blockHandler 为兜底方法的名称,表示如果对该接口的请求违反了在控制台配置的规则,那么执行 blockHandler 所指定的方法,并且只会处理违反控制台配置的规则的请求,程序内部产生的异常不会走 blockHandler 指定的方法

如果资源没有使用 @SentinelResource 注解标记,那么控制台的规则不会生效

@GetMapping("/test/e")
@SentinelResource(value = "testE",blockHandler = "test_e")
public String testE(@RequestParam(value ="p1", required = false) String p1,
                    @RequestParam(value = "p2",required = false) String p2){
    return "=======test E======";
}
public String test_e(String p1, String p2, BlockException e){
    return "=======test_e======";
}

创建好就扣后访问一下,Sentinel控制台就可以看到该资源了
在这里插入图片描述
在热点规则菜单内新建热点规则
在这里插入图片描述
新建以下规则
资源名:@SentinelResource 注解中 value 的值
参数索引:表示设置第几个参数为热点,从0开始
阈值和窗口时长都和之前的配置限流时的含义一样,限流为1秒1次
在这里插入图片描述

参数例外项

当我们想对某个参数限流,但是又想让其对某些值特殊处理时可以打开高级选项来进行设置

下面的例子就是:

  • 对testE资源,0号位置的参数进行1秒1次的限流
  • 但是当该参数传入的值为 yygq 时,限流次数改为1秒10次

因为p1我设置为了可选参数,所以我这个例子的完整含义就是
当对 testE 资源进行调用时

  • 如果传了p1参数,并且值是 yygq,那么QPS限制为10,否则为1
  • 如果没有传p1参数,那么不限流

在这里插入图片描述
不要忘了点击添加,下面这样才是添加上了
在这里插入图片描述

支持的数据类型

参数例外项只支持以下6种基本的数据类型和String类型
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sentinel 是阿里巴巴开源的一个流量控制框架,它支持热点限流功能。要通过 Nacos 配置 Sentinel热点限流,首先需要在 Nacos 中管理 Sentinel 相关的服务发现配置。 1. **创建Nacos配置**: - 登录到 Nacos 控制台,进入 `配置` 或者 `Config Center` 页面。 - 创建一个新的数据源,用于存放 Sentinel 的配置文件,比如命名空间为 `sentinel-config`。 2. **配置热点规则**: - 编辑一个名为 `hot_rule.yaml` 或类似名称的配置文件,添加如下内容: ```yaml # 热点限流配置示例 rule: # 定义一个应用名,如your-app-name app: your-app-name # 规则组名,可以自定义 group: default # 开启热点规则 enabled: true # 热点阈值,例如每分钟访问次数超过50次,则触发限流 count: 50 # 时间窗口,例如1分钟内计数 window: 60s # 激活模式,可以是固定阈值(fixed)、滑动平均(movingAverage) mode: fixed # 如果激活模式是 movingAverage,还可以配置滑动平均周期,单位秒 smoothWindow: 60s # 具体策略,这里通常是 error 或者 slow strategy: error ``` - 将这个配置文件发布到 Nacos 数据源。 3. **在应用中引用配置**: - 在你的 Spring Boot 应用中,通过 Sentinel 提供的自动配置类(如 `SentinelProperties`)来获取 Nacos 中的热点限流配置。你可以在 `application.properties` 或者 `application.yml` 文件中设置 Sentinel 自动发现 Nacos 地址: ```properties sentinel.config-center=nacos://<your-nacos-server>:8848/sentinel-config ``` 完成以上步骤后,Sentinel 会从 Nacos 获取热点限流配置,并根据配置对指定的应用、组别和接口进行限流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值