商务服务
springcloud-alibaba-sentinel(4)sentinel流控详解
2025-01-03 08:53

springcloud-alibaba生态环境

springcloud-alibaba-sentinel(1)sentinel流量卫兵介绍

springcloud-alibaba-sentinel(2)sentinel下载安装运行

springcloud-alibaba-sentinel(3)sentinel的基本使用

在最新的文章中,我们已经将sentnel融合进了springboot项目,并且初步体验了的流量监控功能,接下来,咱们仔细研究下sentinel的一些强大的流控功能

实时监控,是对服务中的接口进行请求监控,当我们的项目连接且配置了服务,我们的服务的请求数据将会被sentinel进行监控,由于其是通过轮询机制请求的接口获取的监控数据,所以其仍存在一定的延迟性,大约5S左右

当我们请求服务器某一资源(接口)时,请求情况就会被收集并展示

我们来仔细解释一下当前页面各个属性

流控是流量控制的简称,是sentinel的核心功能

流量控制(flow control,其原理是监控应用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

QPS统计

什么是QPS?

贴近开发来讲,就是每秒钟对服务资源请求次数

当 QPS 超过某个阈值的时候,则采取措施进行流量控制

并发线程数统计

并不是多少个请求就会有多少个线程进行执行,因此,sentinel还可以精准的控制资源请求的线程并发数量

同一个资源可以创建多条限流规则。FlowSlot 会对该资源的所有限流规则依次遍历,直到有规则触发限流或者所有规则遍历完毕。

一条限流规则主要由下面几个因素组成,我们可以组合这些元素来实现不同的限流效果
resource:资源名,即限流规则的作用对象
count: 限流阈值
grade: 限流阈值类型(QPS 或并发线程数
limitApp: 流控针对的调用来源,若为 default 则不区分调用来源
strategy: 调用关系限流策略
controlBehavior: 流量控制效果(直接拒绝、Warm Up、匀速排队

如果了解更多请移步官网:sentinel流控规则详解

接下来,咱们进行流量控制实操

当我们在页面疯狂请求接口后,发现我手速最多可达6次每秒,且这几秒内,拒绝QPS都为0

接口(资源)如果不设置流量控制,那么其默认是没有配置的,无论接口还是服务器最大可承受并发为多少,sentinel都不会主动拒绝任何请求

此时,假如这个接口每秒钟最多只能承受两次请求,那么QPS持续为6就可能击垮我们的服务,这个时候呢,就需要对这个接口(资源)进行流量控制了…

如何设置流量控制呢

①在簇点链路后点击流控按钮,设置QPS流控

② 点击左侧流控规则菜单栏,再点击新建规则按钮,设置流控

两者,本质都是一样,仅仅是展示在不同菜单罢了

点击后,会出现流控设置弹框

解释说明

资源名:流控规则作用的资源(接口

针对来源:针对某个来源设置的规则,默认default,针对所有来源

阈值类型:规则触发阈值类型,QPS还是线程数,单选,默认为QPS

单机阈值:阈值达到多少触发限流

是否集群:是否集群配置(我这里为单机

设置好后,我们再来访问接口,疯狂刷新

测试结果:每秒只能最大接收2个请求,超过2个页面会显示如下报错信息

为了避免干扰测试,我们在测试线程数限流之前,先将QPS限流阈值2的规则删除掉

接口添加线程数限流

为了方便线程数测试,我这里直接使用压测工具了

测试结果:每秒最多接受两个线程处理,多余请求线程分配不过来时进行限流报错

以上,QPS限流以及线程数限流便简单的演示完了,但sentinel的流控规则不仅仅是这么简单,他还包含了很多高级功能

在设置QPS限流或者线程数限流的时候,下方有一个高级选项按钮

点击展开

选择QPS限速阈值类型的时候 下方出现了以及面板选项

选择线程数限速阈值的时候,仅仅只有

我们不由发出疑问,流控模式,流控效果,到底是什么呢?我们先来看看它们的概念

,流控模式共三种:、、

直接(模式

对资源的请求达到设置的规则阈值时直接对该资源触发流量控制

关联(模式

下边是官网原文解释

当两个资源之间具有资源争抢或者依赖关系的时候,这两个资源便具有了关联。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写得速度,写的速度过高会影响读的速度。如果放任读写操作争抢资源,则争抢本身带来的开销会降低整体的吞吐量。可使用关联限流来避免具有关联关系的资源之间过度的争抢,举例来说,read_db 和 write_db 这两个资源分别代表数据库读写,我们可以给 read_db 设置限流规则来达到写优先的目的:设置 strategy 为 RuleConstant.STRATEGY_RELATE 同时设置 refResource 为 write_db。这样当写库操作过于频繁时,读数据的请求会被限流。

链路(模式

这个模式很好理解,尤其是在微服务间相互调用情况下尤为常见(a->b->d

假设我以a为入口资源,d为终点资源,对这条链路进行限制的话,则资源a,b,d均会被限制访问。

sentinel中,流控效果共三种:、、

快速失败

(RuleConstant.CONTROL_BEHAVIOR_DEFAULT)方式是默认的流控效果,当QPS或线程数超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException。

就是我们一开始配置流控规则触发阈值后看到的

Warm Up(预热

当流量突然增大的时候,我们常常会希望系统从空闲状态到繁忙状态的切换的时间长一些。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。Warm Up(冷启动,预热)模式就是为了实现这个目的的。

这个场景主要用于启动需要额外开销的场景,例如建立数据库连接等。

排队等待

(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式会严格控制请求通过的间隔时间,让请求以均匀的速度通过,对应的是漏桶算法。 只能对请求进行排队等待

流控模式与流控效果必须相结合使用,在未显示的指定模式与效果的时候,默认是效果,两种混搭出来的效果有

、、

、、

、、

一共以上九种限流搭配组合效果

(1)直接模式+快速失败

这是sentinel默认的流控组合,对某一资源设置了限流阈值后,达到阈值直接抛出异常

(2)直接模式+Warm Up(预热

预热:就是俗称的,当某个接口并发飙升的时候,对这个接口一点点的扩宽限制,直到满足要求

我们首先,将原接口添加打印日志

 
 
 

(3)直接模式+排队等待

设定每秒钟并发阈值,该方式会严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过,阀值类型必须设成QPS

注意:超时时间指的是该资源处理时长,例如我这里,对接口的请求响应如果超过了1秒,会出触发限流异常

设置后结果:当设置完QPS为16后,Jemeter压测每秒钟最多接受16个请求

 

(4)关联模式+快速失败

当两个资源之间具有资源争抢或者依赖关系的时候,这两个资源便具有了关联,这个时候如果在sentinel流控中对两个资源设置了关联关系,那么被关联的资源在达到阈值时另一个资源则会进入流控状态

现在假如下方两个接口存在着资源竞争关系

假如设置了如下的关联流控规则

特别特别注意:关联资源,反而是触发流控阈值的资源,资源名处资源是被流控资源

如果按照图上这样设置流控规则,那么结果就是当QPS达到10+的时候,资源将会进入流控状态,流控效果是快速失败

结果展示

我们的资源,连每秒钟1QPS都直接进行了拒绝,而每秒钟2200QPS都会被接受

至于以及,我这里就不演示了!感兴趣的可以自己玩玩

(5)链路模式+快速失败

    以上就是本篇文章【springcloud-alibaba-sentinel(4)sentinel流控详解】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/15142.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
今晚24时起,宁波油价调整!
今天又到了油价调整的日子啦各位车主朋友们注意今晚(1月2日)24时油价将要上涨宁宝为大家带来了油价查询入口以及全年油价调整日
山西油价最新调整!
根据国家发改委消息今晚(1月16日)24时新一轮油价调整开启小伙伴们可根据自己的需要随时加油那关于山西最新油价一起来看看吧!↓
涨价!今晚24时,油价上调!
点击蓝字关注回复“免费”获取南京免费景区汇总各位车主晚上好呀又到了国内成品油零售价调整的时候今晚油价怎么调整快随小编一起
临汾油价
2024年油价调整时间一览表调价日期调价结果2024年1月3日24时汽油涨200元/吨,柴油涨190元/吨2024年1月17日24时汽油跌50元/吨,柴
海南矿业:海南矿业投资者关系活动记录表(2025年1月15日)
2、公司如何协同管理已在全球多区域投资布局的多品种矿产资源及能源项目? 第一在项目投资决策阶段,公司优先选择成熟在产的项目
油价调整!加满一箱多花→
  国内成品油价格将迎来2025年首次调整。  据国家发展改革委消息,根据近期国际市场油价变化情况,按照现行成品油价格形成机
注意!下周上班时间有变
每天3分钟,速览天下事1月15日星期三,农历腊月十六本地要闻1.春节期间全市46家景区 推出30项276场文旅主题活动新春佳节即将到来
时间定了!望城即将全区上涨
15万+望城人关注,宣传推广、活动策划、团购上架、品牌营销,新店开业请联系:15673180172今天是2025年1月15日星期三。距离本轮
莱州油价
2024年油价调整时间一览表调价日期调价结果2024年1月3日24时汽油涨200元/吨,柴油涨190元/吨2024年1月17日24时汽油跌50元/吨,柴
宜昌油价最新价格表(持续更新)
  油价今日最新消息价格  更新时间:2025年1月16日  2025年1月16日24时起 湖北成品油价格按机制上调  根据近期国际市场