Sentinel-限流 冷启动
概述
当流量突然增大的时候,我们常常会希望系统从空闲状态到繁忙状态的切换的时间长一些。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。Warm Up(冷启动,预热)模式就是为了实现这个目的的。
这个场景主要用于启动需要额外开销的场景,例如建立数据库连接等。
它的实现是在 Guava 的算法的基础上实现的。然而,和 Guava 的场景不同,Guava 的场景主要用于调节请求的间隔,即 Leaky Bucket,而 Sentinel 则主要用于控制每秒的 QPS,即我们满足每秒通过的 QPS 即可,我们不需要关注每个请求的间隔,换言之,我们更像一个 Token Bucket。
我们用桶里剩余的令牌来量化系统的使用率。假设系统每秒的处理能力为 b,系统每处理一个请求,就从桶中取走一个令牌;每秒这个令牌桶会自动掉落b个令牌。令牌桶越满,则说明系统的利用率越低;当令牌桶里的令牌高于某个阈值之后,我们称之为令牌桶"饱和"。
当令牌桶饱和的时候,基于 Guava 的计算上,我们可以推出下面两个公式:
rate(c)=m*c+ coldrate
其中,rate 为当前请求和上一个请求的间隔时间,而 rate 是和令牌桶中的高于阈值的令牌数量成线形关系的。cold rate 则为当桶满的时候,请求和请求的最大间隔。通常是 coldFactor * rate(stable)
。
通常冷启动的过程系统允许通过的 QPS 曲线如下图所示:
默认 coldFactor
为 3,即请求 QPS 从 threshold / 3
开始,经预热时长逐渐升至设定的 QPS 阈值。
Demo 示例
WarmUpFlowDemo 演示了如何使用冷启动。
warmupFlowRule()
通过设置下列的参数,构建了一个流控规则:
FlowRule rule = new FlowRule();
rule.setResource(resourceName);
rule.setCount(20);
rule.setGrade(RuleConstant.GRADE_QPS);
rule.setLimitApp("default");
rule.setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_WARM_UP);
rule.setWarmUpPeriodSec(10);
其中,CONTROL_BEHAVIOR_WARM_UP
表示启用冷启动模式,warmUpPeriodSec
代表期待系统进入稳定状态的时间(即预热时长)。
coldSystem()
则是通过调节qpsInColdPeriod
的大小,让系统长时间的处于冷的状态。simulateTraffic()
则通过调节threadCount
的大小,来模拟大流量的情况观察输出:
Large amount of traffic is coming
88 send qps is: 2061
1528883307808,total:2061, pass:9, block:2053
87 send qps is: 3699
1528883308808,total:3699, pass:7, block:3692
86 send qps is: 3898
1528883309808,total:3898, pass:7, block:3893
85 send qps is: 3713
1528883310808,total:3713, pass:7, block:3708
84 send qps is: 3756
1528883311808,total:3756, pass:8, block:3749
83 send qps is: 3750
1528883312808,total:3750, pass:9, block:3741
82 send qps is: 3492
1528883313806,total:3492, pass:10, block:3482
81 send qps is: 3923
1528883314808,total:3923, pass:11, block:3913
80 send qps is: 3176
1528883315820,total:3176, pass:13, block:3163
79 send qps is: 3729
1528883316821,total:3729, pass:22, block:3708
78 send qps is: 3534
1528883317820,total:3534, pass:20, block:3514
可以看到第 10 秒的时候,系统开始稳定的接受 20 个请求。
Sentinel-限流 冷启动相关推荐
- Sentinel 限流原理
Sentinel 限流原理 一.限流规则 在Sentinel中,限流的直接表现形式是,在执行Entry nodeA =SphU.entry(resourceName) 的时候抛出 FlowExcept ...
- Alibaba Sentinel限流功能
以下文章来源方志朋的博客,回复"666"获面试宝典 前言 上周经历了合作方未按照约定在客户端进行缓存,以高QPS调用我这边某个接口的问题,当时带来的影响是接口RT变高,当时如果QP ...
- Sentinel限流熔断
Sentinel作用:当我们 在系统负载过高时,可以通过Sentinel进行限流.降级.熔断三种措施来保护系统其提供了一个轻量级的控制台,提供机器发现,单机资源实时监控预计规则管理等功能. Senti ...
- sentinel限流入门
为什么限流 前端时间遇到的一次大型故障:订单服务应查询量巨大拖垮服务,导致公司核心系统系统瘫痪.那么如何避免此类事情再次发生,公司内部做了大量的服务下线或者尽可能减少服务调用的工作:除此之外,服务提供 ...
- Sentinel限流规则使用总结
文章目录 一.Sentinel限流/熔断规则 二.网关限流原理 三.自问自答QA 四.总结 一.Sentinel限流/熔断规则 目前Sentinel支持以下五种限流/熔断规则:基于资源限流(FlowR ...
- 三、Sentinel限流熔断
Sentinel限流熔断 文章目录 Sentinel限流熔断 一.Sentinel简介 1. 背景分析 2. Sentinel概述 3. 安装Sentinel服务 4. 访问Sentinal服务 二. ...
- SpringCloudSpringCloud Alibaba、微服务架构、网站架构演变过程、Nacos、Feign远程调用、Load Balancer负载均衡、Sentinel限流、Hystriy
什么是微服务? 微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信.这些服务围绕业务能力来划分,并通过自动化部署机制来独立 ...
- Sentinel限流及其滑动窗口算法
Sentinel限流及其滑动窗口算法 Sentinel的限流原理 滑动时间窗口算法 Sentinel的限流原理 限流效果,对应有DefaultController快速失败 WarmUpControll ...
- 构建SpringCloud 项目初始环境(四)—Sentinel限流熔断应用实践
一.Sentinel简介 1.背景分析 在我们日常生活中,经常会在淘宝.天猫.京东.拼多多等平台上参与商品的秒杀.抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票.高铁票,甚至有时 ...
- Sentinel限流熔断应用实践
文章目录 一.Sentinel 1.Sentinel简介 背景分析 Sentinel概述 安装Sentinel服务 idea配置sentinel启动: 访问Sentinal服务 2.Sentinel限 ...
最新文章
- 将oracle导出成文本文件,oracle 数据能否导出成纯文本文件呢?
- socket绑定的ip为INADDR_ANY 的意义 htonl(INADDR_ANY)(0.0.0.0所有地址、不确定地址、任意地址)(htonl和htons区别)
- FFmpeg转OpenCV Mat显示
- JUnit与EasyMock合作
- 漫步数学分析十六——紧集与连集的像
- c语言随机产生四位数,习题:随机产生N个四位正整数,将其中的素数选出,并升序排列之输…...
- 3-点的坐标及最远距离问题
- 如何用 60 行代码爬取知乎神回复?
- 结构梁配筋最牛插件_老师傅总结建筑结构设计技巧经验,看完涨知识了
- linux为360路由器刷机,[详细]360路由器刷openwrt、不死uboot、双系统 、wifi中继
- DELL存储SCv3020组件概念
- 用Python做一个游戏辅助脚本,完整编程思路分享
- STL容器之vector
- 给虚拟机下载安装jdk,hadoop等(非常详细的步骤)
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(约瑟夫环问题)
- [matlab]三维画图
- 2023年全国最新会计专业技术资格精选真题及答案18
- 斐讯n1刷鸿蒙系统,【总结】在N1上面成功刷入armbian并启动的步骤
- 基于layui图片管理器
- 地图切片的概念与原理
热门文章
- 分布式任务调度:海量任务处理elastic-Job解决方案(一)
- 如何在vue中引入阿里巴巴矢量图标库里面的图标
- Application在安卓中的应用
- 史上最全八大排序讲解时间复杂度篇(0基础都能看懂)
- 网页端接入海康摄像头画面操作指南
- Jenny DAO 运营月报|2021 年 12 月
- r library car_大样本OLS模型假设及R实现
- 自动化测试—业务线仿真回归流程剖析
- Mentor Xpedition VX2.11入门遇到的问题和解决方案 (1)
- 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found