在线是什么意思(阿里解决方案SpringCloud)
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

《乐学课堂》特邀作者:老顾
转载请声明出处!
前言
之前介绍了Sentinel的基本工作原理和Sentinel的监控。接下来,顾重点介绍了哨兵的流量控制管理。注意:SentinelDashboard之前部署在192.168.5.153服务器上。
nohup Java-jar sentinel-dashboard-1 . 6 . 3 . jar
整合Sentinel
首先,我们创建一个springboot项目并引入依赖项。我们采用了最新版本的boot2.1.x和Greenwich。云的SR2,和阿里巴巴的2.1.0 .发布。
我们只需要在项目中引入Spring-Cloud-Starter-Alibaba-Sentinel。这样就可以获得限流熔断功能。
配置
下面我们只需要在项目应用程序中配置仪表板服务器地址。
spring . cloud . Sentinel . transport . dashboard:配置sentinel控制台的ip和端口。
请求路径
让我们创建另一个请求控制器来模拟请求接口。
启动
启动后,请求接口http://localhost/test-b和http://localhost/test-a;查看sentinel控制台
意味着应用程序集成Sentinel成功了。下面介绍一下如何设置流量控制。
流控设置
在& quot群集链接& quot控制台的菜单,可以看到请求接口(也叫端点)的层级关系,看到一些指标(QPS通过,QPS拒绝,线程数,平均RT,通过分钟,拒绝分钟),在操作栏有一个【流量控制】按钮。资源名:默认为请求路径,当然也不一定是路径,只要是唯一的名称即可。
来源:Sentinel可以区分不同的调用者,在调用同一资源时为不同的调用者设置不同的流控规则;比如app-a设置QPS类型的流量控制,app-b设置线程数类型的流量控制。默认意味着不区分调用者。
阈值类型:
QPS:调用这个api时,QPS会在达到单机阈值时限制线程数;调用这个api的时候,会在达到单机阈值的时候限制线程的数量。
集群与否:这个后面会介绍。
流控模式
直接模式然后上面的流控设置,Sentinel的流控模式代表的是流控模式,默认是【直接】,还有关联和链接。
哨兵的流控效果:默认【快速失败】,还有预热,排队等待。
Sentinel默认的流控处理是【直接-快速失败】,我们来做个案例:
我们来设置/test-b接口的流量控制。单QPS阈值为1,意味着每秒请求不能超过1,否则我们做流控处理,处理模式直接调用失败。
我们调用/test-b,慢慢请求,正常返回;快速请求几次,超过阈值。
接口返回了BlockedbySentinel(flowlimiting),这意味着它受到限制。
关联模式
连接是什么意思?
当相关资源达到阈值时,它们会限制自己。
先测试一下吧。我们现在有两个接口/test-a,/test-b;现在让我们修改前面的流控制规范并设置一个关联。
关联资源设置为/test-a,上面设置的效果是当关联资源/test-a的qps阈值超过1时,限制/test-b的接口(是否感觉霸道,关联资源达到阈值,限制该资源的接口)。
我们去看看。这里顾使用了PostMan工具调用/test-a,每300ms循环调用一次。这确保了相关联的资源/测试a肯定超过阈值。
我们再次要求使用/test-b,结果发现它受到了限制。
这种关联模型有哪些应用场景?
比如订单服务中会有两个重要的接口,一个是读取订单信息接口,一个是写入订单信息接口。
/blockquote>在高并发业务场景中,两个接口都会占用资源,如果读取接口访问过大,就会影响写入接口的性能。业务中如果我们希望写入订单比较重要,要优先考虑写入订单接口。那就可以利用关联模式;
在关联资源上面设置写入接口,资源名设置读取接口就行了;这样就起到了优先写入,一旦写入请求多,就限制读的请求。
关联模式的核心就是保护关联资源的。
链路模式
只记录链路入口的流量
上面是解释,有点不是太清楚,我们来看个案例,我们改造一下代码
上面增加了一个服务,方法用@SentinelResource进行注解
@SentinelResource以后会解释,大家可以理解就是一个资源名
让/test-a和/test-b都调用这个服务;那我们就可以利用链路模式设置限制哪个入口的流量了
这样设置就起到了,请求接口/test-a会调用getOrder,会进行流量控制;但/test-b则不会。
这个和上面的针对来源很类似,但有区别的就是:
针对来源是微服务级别的,链路模式的入口资源是针对方法接口的。
流量效果
快速失败
就是流量达到阀值,直接返回报异常
WarmUp
也叫预热,根据codeFactor(默认3)的值,从(阀值/codeFactor)为初始阀值,经过预热时长,才到达设置的QPS的阀值
上面是什么意思呢?我们来举个案例,阀值为100,预热时长设置10秒。
代表的含义就是,系统初始化的阀值为100/3,即阀值为33;然后过了10秒,阀值才恢复到100
这个预热的应用场景,如:秒杀系统在开启的瞬间,会有很多流量上来,很有可能把系统打死,预热方式就是把为了保护系统,可慢慢的把流量放进来,慢慢的把阀值增长到设置的阀值。
排队等待
从字面上面就能够猜到,匀速排队,让请求以均匀的速度通过,阀值类型必须设成QPS,否则无效。
上图的设置含义:/test-b的每秒1次请求,超过的话就排队等待,等待的超时时间为10000毫秒。
我们再次利用Postman工具,循环请求/test-b,我们看看控制台的日志输出
我们可以发现test-b的每隔1秒执行一次,这么多的请求没有被拒绝,而且进入的排队。
排队的应用场景是什么呢?
比如有时候系统在某一个时刻会出现大流量,之后流量就恢复稳定,可以采用这种排队模式,大流量来时可以让流量请求先排队,等恢复了在慢慢进行处理
总结
Sentinel的流控方式还是比较实用的,功能比较强大,也是阿里通过自己的实战总结提炼的。小伙伴们要去实战体验一下哦,谢谢!!!
对本文内容感兴趣的朋友,欢迎大家在留言区进行交流讨论!
往期推荐:
第一篇:SpringCloudAlibaba之Nacos
第二篇:SpringCloudAlibaba之Nacos配置中心
第三篇:SpringCloudAlibaba之Nacos多环境多项目管理
第四篇:SpringCloudAlibaba之Nacos共享配置、灰度配置
第五篇:SpringCloudAlibaba之Nacos集群、持久化
第六篇:SpringCloudAlibaba之Sentinel框架工作原理
本文主要介绍了关于在线是什么意思(阿里解决方案SpringCloud)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/96015.html