热点规则

热点规则是用于实现热点参数限流的规则。热点参数限流指的是,在流控规则中指定对某方法参数的 QPS 限流后,当所有对该资源的请求URL中携带有该指定参数的请求 QPS 达到了阙值,则发生限流。

配置热点规则

controller

package com.zjw.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; /**
* 前端控制器
*
* @since 2023-12-4
*/
@RestController
@Slf4j
public class DepartController { /**
* 测试热点规则
*/
//发生异常会降级,调用paramFallback方法
@SentinelResource(value = "param", fallback = "paramFallback")
@GetMapping("/param")
public String param(Long id, String name) {
return "param:" + id + ", " + name;
} public String paramFallback(Long id, String name) {
return "fallback param:" + id + ", " + name;
}
}

sentinel控制台配置热点规则

请求中含有第0索引(即id),且十秒内请求超过三次,第四次请求会被限流。

参数索引: 是配置的热点规则所在方法的第几个参数,索引从0开始

统计窗口时长:统计窗口时间长度(单位为秒)。请求在该时间之内的请求数量大于阈值会被限流。

请求测试

也可以通过高级选项设置例外。如我们可以把id为0的值阈值设置大一些,减少被限流的可能。

API配置热点规则

package com.zjw;

import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRuleManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.ArrayList;
import java.util.List; @SpringBootApplication
public class ConsumerParamRule8080Application { public static void main(String[] args) {
SpringApplication.run(ConsumerParamRule8080Application.class, args);
//初始化热点规则
paramRule();
} private static void paramRule() {
ParamFlowRuleManager.loadRules(configParamFlowRule());
} // 设置授权规则
private static List<ParamFlowRule> configParamFlowRule() {
List<ParamFlowRule> ruleList = new ArrayList<>();
ParamFlowRule rule = new ParamFlowRule();
// 资源名
rule.setResource("param");
// 参数索引
rule.setParamIdx(0);
// 单机阈值
rule.setCount(3);
// 统计窗口时长 s
rule.setDurationInSec(1);
ruleList.add(rule);
return ruleList;
}
}

Sentinel——热点规则的更多相关文章

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

    愿你生命中有够多的云翳,造就一个美好的黄昏 欢迎关注公众号[渣男小四],一个喜欢技术更喜欢艺术的青年 一.介绍 热点即经常访问的数据.很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据 ...

  2. Sentinel Dashboard 规则 持久化到Nacos

    本篇文章基于sentinel1.8.4版本进行改造的.本篇主要记录改造步骤 1.下载源码 https://github.com/alibaba/Sentinel 2.打开下载的sentinel,到se ...

  3. [Spring-Cloud-Alibaba] Sentinel 规则持久化

    在之前的练习中,只要应用重启,就需要重新配置,这样在我们实际的项目是非常不实用的,那么有没有办法把我们配置的规则保存下来呢?答案是YES,那么接下来,给大家来介绍如何将Sentinel规则持久化. D ...

  4. Spring cloud微服务安全实战-6-10sentinel之热点和系统规则

    热点规则 热点就是经常访问的数据.很多时候我们希望争对某一些热点数据,然后来进行限制.比如说商品的信息这个服务,我们给它做一个限流,qps是100,某一天我想做一个秒杀活动,可能会有很大的流量,这个时 ...

  5. Spring Cloud Alibaba学习笔记(5) - 整合Sentinel及Sentinel规则

    整合Sentinel 应用整合Sentinel 在dependencies中添加依赖,即可整合Sentinel <dependency> <groupId>com.alibab ...

  6. Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则

    通过上一篇<使用Sentinel实现接口限流>的介绍,相信大家对Sentinel已经有了初步的认识.在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的 ...

  7. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则 前面几篇文章较为详细的介绍了Sentinel的使用姿势,还没看过的小伙伴可以访问以下链接查看: &l ...

  8. Sentinel Client: 整合Apollo规则持久化

    在前面的学习过程中,Sentinel 的规则,也就是我们之前定义的限流规则,是通过代码的方式定义好的.这是初始化时需要做的事情,Sentinel 提供了基于API的方式修改规则: FlowRuleMa ...

  9. Sentinel Dashboard(基于1.8.1)流控规则持久化到Nacos——涉及部分Sentinel Dashboard源码改造

    前言 之前虽然也一直在使用sentinel实现限流熔断功能,但却没有好好整理之前看的源码与资料,今天有时间将之前自己整理过的资料写成一篇博文,或者是是一篇关于Sentinel(基于目前最近版本1.8, ...

  10. Spring Cloud Alibaba | Sentinel: 服务限流高级篇

    目录 Spring Cloud Alibaba | Sentinel: 服务限流高级篇 1. 熔断降级 1.1 降级策略 2. 热点参数限流 2.1 项目依赖 2.2 热点参数规则 3. 系统自适应限 ...

随机推荐

  1. 绝了,一招解决DeepSeek 提示“服务器繁忙,请稍后再试” 卡顿问题!(保姆级教程)

    大家好,我是狂师. 现在 AI 圈里讨论最多的话题就是:"国产之光DeepSeek了". 但用过的人也知道,是真的卡.动不动就提示:"服务器繁忙,请稍后再试" ...

  2. [JOI 2020 Final] 火事 题解

    给一篇题解.(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\). 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况. 可以将直角 ...

  3. 4. MySQL 逻辑架构说明

    4. MySQL 逻辑架构说明 @ 目录 4. MySQL 逻辑架构说明 1. 逻辑架构剖析 1.1 服务器处理客户端请求 1.2 Connectors(连接器) 1.3 第1层:连接层 1.4 第2 ...

  4. Vue 页面批量导入其他组件

    <template> <div> <template v-for="(item) in names"> <component :is=&q ...

  5. JavaGUI - [01] 常见API

    题记部分 一.Component 作为基类,提供了如下常用的方法来设置组件的大小.位置.可见性等. setLocation(int x,int y) 设置组件的位置 setSize(int width ...

  6. C# 图形界面编程之 FlowLayoutPanel 界面闪烁问题解决

    公司需要我写几个GUI程序,让虚拟机(guest)内部可以控制虚拟机(host)外部的硬件. 控制外部的硬件的方法就是开一个串口,这样虚拟机与宿主机就可以相互通讯,此时就可以让虚拟机发送命令,宿主机执 ...

  7. CF889E题解

    \(\text{Problem - 889E - Codeforces}\) \(\text{*3000}\) 修正 感谢学长 \(\text{fs}\) 指出状态数原因解释的错误. 题意 给一个序列 ...

  8. MyCat分库分表-主从

    一.MySQL数据同步 1.主节点配置,log-bin,指定文件名称 2.主节点配置server-id,默认为1 vim /etc/my.cof 在[mysqld]下添加如下配置 log-bin=im ...

  9. go ERROR invalid character '<' looking for beginning of value

    报错 go ERROR invalid character '<' looking for beginning of value 请检查服务器响应数据是否正确,能够正确被 json 解析 一般碰 ...

  10. MySQL-脏页的刷新机制

    MySQL内存结构-缓冲区 MySQL的缓冲区中有数据页,索引页,插入缓冲等等,这个角度是从页的功能来分类的.本小节从另一个视角关注这些页,如果从 是否被修改过(和磁盘不一致) 这个角度来区分这些页, ...