Sentinel的另外三种流控模式(附代码详细介绍)

news/2024/11/20 11:44:30/

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel的其他三种流控模式,后续文章将详细介绍Sentinel的其他知识。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,在一家满意的公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

在这里插入图片描述

以下正文开始

文章目录

  • 预热模式
  • 排队等待模式
  • 热点规则

在这里插入图片描述

预热模式

Sentinel的warm up模式是一种流量控制模式,它可以在系统刚启动的时候,通过预热的方式逐步放开限流的限制,让系统逐步达到稳定状态,避免系统启动时因为限流过于严格而导致的性能问题。

具体来说,Sentinel的warm up模式会在系统启动时,先限制一定的流量,然后逐步放开限制,直到系统达到一个稳定的状态。在逐步放开限制的过程中,Sentinel会根据系统的实际情况,动态调整限制的值,以确保系统的稳定性和性能

在实际应用中,可以通过以下代码来使用Sentinel的warm up模式:

public class WarmUpDemo {public static void main(String[] args) {// 创建一个规则实例FlowRule rule = new FlowRule();rule.setResource("test");rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setCount(10);rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_WARM_UP);rule.setWarmUpPeriodSec(10);rule.setMaxQueueingTimeMs(500);// 加载规则List<FlowRule> rules = new ArrayList<>();rules.add(rule);FlowRuleManager.loadRules(rules);// 定义资源Entry entry = null;try {entry = SphU.entry("test");// 执行业务逻辑// ...} catch (BlockException e) {// 处理限流// ...} finally {if (entry != null) {entry.exit();}}}
}

在上述代码中,我们创建了一个FlowRule实例,将其控制行为设置为CONTROL_BEHAVIOR_WARM_UP,表示使用Sentinel的warm up模式。同时,我们还设置了warmUpPeriodSec参数,表示预热的时间为10秒。在执行业务逻辑时,我们使用SphU.entry方法来获取资源的Entry实例,并在try-catch-finally语句块中处理限流和资源释放的逻辑。

需要注意的是,使用Sentinel的warm up模式需要根据实际情况调整预热时间和限制的值,以确保系统的稳定性和性能

在这里插入图片描述

排队等待模式

Sentinel的排队等待模式是一种流量控制模式,它可以在流量超出阈值时,将请求放入队列中进行等待,直到系统处理完之前的请求后再进行处理。这种模式可以避免系统因瞬间流量过大而崩溃的情况。

在Sentinel中,排队等待模式需要配置一个等待队列的大小,当流量超过阈值时,请求就会被放入等待队列中。同时,还需要配置一个等待时间,如果请求在等待队列中等待的时间超过了设定的等待时间,那么请求将会被直接拒绝

下面是一个使用Sentinel的排队等待模式的代码示例:

@SentinelResource(value = "test", blockHandler = "handleBlock")
public String test() {// 方法实现
}public String handleBlock(BlockException ex) {// 处理被拒绝的请求return "请求被拒绝,请稍后再试";
}

在上面的代码中,@SentinelResource注解用于标识该方法需要进行流量控制。blockHandler参数指定了当请求被拒绝时的处理方法。如果使用排队等待模式,那么可以在@SentinelResource注解中添加waitQueuemaxQueueingTimeMs参数来配置等待队列的大小和等待时间:

@SentinelResource(value = "test", blockHandler = "handleBlock", waitQueue = true, maxQueueingTimeMs = 5000)
public String test() {// 方法实现
}

在上面的代码中,waitQueue参数设置为true表示开启排队等待模式,maxQueueingTimeMs参数设置为5000表示等待时间为5秒。这样,当请求被拒绝时,它就会被放入等待队列中等待处理。如果等待时间超过了5秒,请求将会被直接拒绝。

热点规则

Sentinel的热点规则是一种特殊的限流规则,用于对系统中的热点资源进行限流。热点资源是指在系统中访问频率较高或者访问量较大的资源,例如某个接口、某个方法等。如果这些热点资源没有得到有效的限流控制,就容易导致系统崩溃或者性能下降

Sentinel的热点规则可以通过以下几个方面来进行限流控制:

  1. 参数限流:根据指定的参数进行限流,例如根据某个接口的请求参数进行限流。

  2. URL限流:根据URL进行限流,例如对某个接口的请求URL进行限流。

  3. IP限流:根据IP地址进行限流,例如对某个IP地址的请求进行限流。

  4. 关联流控:根据某个关联的资源进行限流,例如对某个接口的关联接口进行限流。

Sentinel的热点规则可以通过以下几个参数进行配置:

  1. resource:热点资源的名称,可以是接口名称、方法名称、URL等。

  2. count:限流阈值,表示在一个时间窗口内允许通过的请求次数。

  3. paramIndex:参数索引,表示要进行参数限流的参数在请求中的索引位置。

  4. grade:限流模式,可以是QPS模式或线程数模式。

  5. durationSeconds:时间窗口大小,表示限流的时间窗口大小,单位为秒。

  6. controlBehavior:流控模式,可以是快速失败模式、排队等待模式等。

  7. burstCount:预热时的突发流量,表示在预热阶段允许通过的最大请求次数。

总的来说,Sentinel的热点规则可以根据业务需求进行灵活配置,有效地对系统中的热点资源进行限流控制,保证系统的稳定性和性能。

好了,本篇文章就先分享到这里了,后续将会继续介绍sentinel详细的其他方面的知识,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论😁
希望能和诸佬们一起努力,今后我们顶峰相见🍻
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述


http://www.ppmy.cn/news/98472.html

相关文章

Rocky9-Linux上安装KVM虚拟机

一、案例环境 使用一台物理机器,安装Rocky9-Linux的64位系统,test01是在宿主机kvm中安装的虚拟机 主机 操作系统 IP地址 主要软件 kvm Centos 7 192.168.100.46 KVM test01 Centos 7 192.168.100.32 虚拟机

vue组件通信----父传子(超详细)

Vue传值 1.父传子 简单描述 父组件是通过props属性给子组件通信的 数据是单向流动 父—>子 (子组件中修改props数据,是无效的,会有一个红色警告) 实现步骤 1.子组件在props中创建一个属性,用于接收父组件传过来的值; 2.父组件 引入子组件–>注册子组件–>引用…

【算法训练(day6)】双指针模板

一.双指针算法的由来和使用场景 通常情况下我们可能会遇到在某些可遍历的集合中寻找满足某种性质的字串或元素。这时候我们采取暴力的思路就会面临多重循环。我们可以利用题目中所给的集合并利用其性质将多重循环降成一重循环。光用语言描述可能不太好理解。接下来看几个双指针…

遥感云大数据在灾害、水体与湿地领域及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

linux系统中通配符与常用转义字符

通配符 在平时我们使用使用linux系统的过程中会遇到忘记文件名称的问题&#xff0c;这时候呢&#xff0c;通配符就发挥它的作用啦。 顾名思义啦&#xff0c;通配符就是用来匹配信息的符号&#xff0c;如何&#xff08;*&#xff09;代表零个或多个字符&#xff0c;&#xff08;…

组合总和 (递归回溯+剪枝)

题目&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…

【P37】JMeter 仅一次控制器(Once Only Controller)

文章目录 一、仅一次控制器&#xff08;Once Only Controller&#xff09;参数说明二、测试计划设计2.1、测试计划一2.1、测试计划二 一、仅一次控制器&#xff08;Once Only Controller&#xff09;参数说明 可以让控制器内部的逻辑只执行一次&#xff1b;单次的范围是针对某…

【LeetCode热题100】打开第5天:最长回文子串

文章目录 最长回文子串⛅前言&#x1f512;题目&#x1f511;题解 最长回文子串 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识…