SpringCloud Alibaba学习(六):Sentinel的流控规则

简介: SpringCloud Alibaba学习(六):Sentinel的流控规则

如果不知道如何配置sentinel或者不知道如何打开文章中的一些网页,可以参考我的上一篇文章:     SpringCloud Alibaba学习(五):Sentinel的介绍与搭建


一、基本介绍



a912bc3127d4482d82acbc7868871bd0.png


二、配置方法



4542d9f1b26742469e6c271af4286608.png


三、流控模式



1、 直接-->快速失败(系统默认)


aefadc7989a9469b8de4519e417e1144.png


当我们把流控模式配置为:直接;

把流控效果配置为:快速失败;

单机阈值设置为:1


浏览器访问,快速刷新两次,可以看到,直接熔断。

这是因为此时的单机数量超过了每秒钟一次请求。


94505bc5504a45aa98273f8fea15417c.png


2、关联


(1)是什么

               

当与A关联的资源B达到阀值后,就限流A自己


(2)配置方法

             

将testB关联给testA,那么B达到阈值时,就会限流A。

b739b0d506ea4e638199b66a0906668c.png


(3)测试

               

用postman模拟并发密集地访问testB,压垮testB ,来看看testA是否被限流。

a06e0cc8b2f7416895a702c48f4fcd26.png036fa7be11724418a8bb4f56fc1717a8.png


然后新建一个collection,就能在右边看到

33e5d3c80b064540a74cf0a2fd39a16d.png78247fea76144250b5e4ca6786ee04b2.png925de5f92a484133b9c3349b5d248e23.png


点击后,再次访问testA,可以看到,testA已经熔断。

f61e1e2ed0554e27956a7ffc2a94b533.png

(4)应用场景

               

例如:在交易微服务中, 如果订单模块收到的请求太多,就应该限流支付模块。


3、链路

       

多个请求调用同一个微服务


三、流控效果



1、直接->快速失败(默认的流控处理)

       

直接失败,抛出异常: Blocked by Sentinel (flow limiting)


2、预热


(1)是什么

             

阈值除以coldFactor(默认值为3),经过预热时长后才会达到阈值 。

9e7d8446e3a44e46a674162a97da1502.png


(2)配置方式

               

案例中,阀值为10+预热时长设置5秒。系统初始化的阀值为10 / 3 约等于3,即阀值刚开始为3;然后过了5秒后阀值才慢慢升高恢复到10。  

       

testA:

fa79325338c54709a2167fa83f82d17b.png testB:

7658f69a546b404d96578890bae332f1.png


(3)测试

             

快速点击刷新testB

             

可以看到,一开始是会限流的,但是五秒钟之后,快速点击就不会限流了 。


(4)应用场景

               

秒杀系统在开启的瞬间,会有很多流量上来,很有可能把系统打死。预热方式就是为了保护系统,可慢慢地把流量放进来,慢慢地让阀值增长到设置的阀值。


3、排队等待


(1)是什么

55826b2eedae4e719b5a40eec7878fc8.png


(2)配置方法

               

匀速排队,让请求以均匀的速度通过,阀值类型必须设成QPS,否则无效。

               

设置含义:/testB每秒1次请求,超过的话就排队等待,等待的超时时间为20000毫秒。

a44de66a984344d987702dd756f9fb12.png


(3)测试

             

在8401的控制类中加上@Slf4j的注解,方便看到后台打印

3c43b6719a13488d9d765c2184e540ea.png

再次使用postman发送请求

c6b8c82f3f8e423dbc966f930705ade0.pngd25fe1f8c5494b16b0cc51fd32e0512f.png


四、阈值类型



1、QPS


(1)是什么

               

Queries-per-second(QPS):  每秒钟的请求数量 ,当访问数量超过这个值时,就会限流。


(2)配置方法

             

前面已经配置过(前面所有的例子都是配置的QPS)


(3)测试

             

测试结果参考前面

 

2、线程数


(1)是什么

               

当一秒内访问的线程数达到这个值时,就会限流


(2)配置方法

             

如果testA的线程数超过1个,就会限流。

b8bc29ffcc294e46bdac258c5be492f9.png


(3)测试


首先还是疯狂刷新testA,可以看到testA不会被限流了。这是因为我们始终只有一个线程在访问。


那我们就让浏览器开两个页面,一起访问testA 。


为了更好地看到结果,我们让testA的运行时间变长。

4b34a587b91d4b38afe4237f65a64d3f.png


两个线程1秒内一起访问,可以看到被限流了。


3、QPS和线程数的区别


当一大堆请求发过来的时候,如果选择QPS,多余的请求根本就不会被放进来,直接访问超时;而如果选择的是线程数,请求全部会放进来,但是不会管它,多余的请求会报错。


用一个不太恰当的比方:QPS的理念是拒敌于国门之外;线程数的理念是开门揖盗,关门打狗。  


相关文章
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
4958 2
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
1999 9
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
3022 13
Spring Cloud Alibaba:一站式微服务解决方案
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
4035 1
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
1504 4
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
4042 8
Sentinel学习圣经:从入门到精通 Sentinel,最全详解 (40+图文全面总结)
尼恩给大家做一下系统化、体系化的梳理,联合社群小伙伴,来一个Sentinel学习圣经:从入门到精通Sentinel。

热门文章

最新文章