SpringCloud Alibaba学习(六):Sentinel的流控规则
如果不知道如何配置sentinel或者不知道如何打开文章中的一些网页,可以参考我的上一篇文章: SpringCloud Alibaba学习(五):Sentinel的介绍与搭建
一、基本介绍
二、配置方法
三、流控模式
1、 直接-->快速失败(系统默认)
当我们把流控模式配置为:直接;
把流控效果配置为:快速失败;
单机阈值设置为:1
浏览器访问,快速刷新两次,可以看到,直接熔断。
这是因为此时的单机数量超过了每秒钟一次请求。
2、关联
(1)是什么
当与A关联的资源B达到阀值后,就限流A自己
(2)配置方法
将testB关联给testA,那么B达到阈值时,就会限流A。
(3)测试
用postman模拟并发密集地访问testB,压垮testB ,来看看testA是否被限流。
然后新建一个collection,就能在右边看到
点击后,再次访问testA,可以看到,testA已经熔断。
(4)应用场景
例如:在交易微服务中, 如果订单模块收到的请求太多,就应该限流支付模块。
3、链路
多个请求调用同一个微服务
三、流控效果
1、直接->快速失败(默认的流控处理)
直接失败,抛出异常: Blocked by Sentinel (flow limiting)
2、预热
(1)是什么
阈值除以coldFactor(默认值为3),经过预热时长后才会达到阈值 。
(2)配置方式
案例中,阀值为10+预热时长设置5秒。系统初始化的阀值为10 / 3 约等于3,即阀值刚开始为3;然后过了5秒后阀值才慢慢升高恢复到10。
testA:
testB:
(3)测试
快速点击刷新testB
可以看到,一开始是会限流的,但是五秒钟之后,快速点击就不会限流了 。
(4)应用场景
秒杀系统在开启的瞬间,会有很多流量上来,很有可能把系统打死。预热方式就是为了保护系统,可慢慢地把流量放进来,慢慢地让阀值增长到设置的阀值。
3、排队等待
(1)是什么
(2)配置方法
匀速排队,让请求以均匀的速度通过,阀值类型必须设成QPS,否则无效。
设置含义:/testB每秒1次请求,超过的话就排队等待,等待的超时时间为20000毫秒。
(3)测试
在8401的控制类中加上@Slf4j的注解,方便看到后台打印
再次使用postman发送请求
四、阈值类型
1、QPS
(1)是什么
Queries-per-second(QPS): 每秒钟的请求数量 ,当访问数量超过这个值时,就会限流。
(2)配置方法
前面已经配置过(前面所有的例子都是配置的QPS)
(3)测试
测试结果参考前面
2、线程数
(1)是什么
当一秒内访问的线程数达到这个值时,就会限流
(2)配置方法
如果testA的线程数超过1个,就会限流。
(3)测试
首先还是疯狂刷新testA,可以看到testA不会被限流了。这是因为我们始终只有一个线程在访问。
那我们就让浏览器开两个页面,一起访问testA 。
为了更好地看到结果,我们让testA的运行时间变长。
两个线程1秒内一起访问,可以看到被限流了。
3、QPS和线程数的区别
当一大堆请求发过来的时候,如果选择QPS,多余的请求根本就不会被放进来,直接访问超时;而如果选择的是线程数,请求全部会放进来,但是不会管它,多余的请求会报错。
用一个不太恰当的比方:QPS的理念是拒敌于国门之外;线程数的理念是开门揖盗,关门打狗。
相关文章
- 7月份国内高端手机市场苹果竟然占据了63%,但我很期待8月的成绩
- 腾讯QQ更新!上线“美体”功能 小姐姐实测:秒变大长腿
- 针对用户操作失误,如何给产品的体验加分?
- 腾讯出品!手机银行适老化设计探索(附超多干货)
- 腾讯内测曝光,刷手支付来了?业内专家:应用前景不乐观
- 腾讯出品!7 种人机交互设计模型科普
- 新版 iOS/iPadOS 15 开发工具优先考虑 5G 而非 Wi-Fi
- 上线不足半月!腾讯“小借条”功能遭举报:涉嫌不正当竞争
- 为什么手机越来越贵了?
- 应用程序现代化的11个秘密
- 腾讯高手都在学的「感知性模式设计」是什么?
- 看了 800 多份简历和作品集,我总结了这份求职避坑指南
- 微信里可以开借条了:提供规范模版、还款提醒等功能
- 支付宝上线长辈模式,互联网平台适老化为何如此迫切?
- 中国5G手机销量排行榜:华为仍是第一,小米反而被反超
- 云数据中心需要基础设施即代码(IaC)
- 谷歌推出面向iOS/Android移动平台的Chrome 92软件更新
- 10年大数据平台经验,总结出这份数据建设干货(内含多张架构图)
- iPad版腾讯QQ HD彻底停止服务 已无法登录账号
- Google Play 服务将停止支持 “Jelly Bean” 平台