概述

当流量突然增大的时候,我们常常会希望系统从空闲状态到繁忙状态的切换的时间长一些。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。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 演示了如何使用冷启动。

  1. 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 代表期待系统进入稳定状态的时间(即预热时长)。

  1. coldSystem() 则是通过调节 qpsInColdPeriod 的大小,让系统长时间的处于冷的状态。

  2. simulateTraffic() 则通过调节 threadCount 的大小,来模拟大流量的情况

  3. 观察输出:

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-限流 冷启动相关推荐

  1. Sentinel 限流原理

    Sentinel 限流原理 一.限流规则 在Sentinel中,限流的直接表现形式是,在执行Entry nodeA =SphU.entry(resourceName) 的时候抛出 FlowExcept ...

  2. Alibaba Sentinel限流功能

    以下文章来源方志朋的博客,回复"666"获面试宝典 前言 上周经历了合作方未按照约定在客户端进行缓存,以高QPS调用我这边某个接口的问题,当时带来的影响是接口RT变高,当时如果QP ...

  3. Sentinel限流熔断

    Sentinel作用:当我们 在系统负载过高时,可以通过Sentinel进行限流.降级.熔断三种措施来保护系统其提供了一个轻量级的控制台,提供机器发现,单机资源实时监控预计规则管理等功能. Senti ...

  4. sentinel限流入门

    为什么限流 前端时间遇到的一次大型故障:订单服务应查询量巨大拖垮服务,导致公司核心系统系统瘫痪.那么如何避免此类事情再次发生,公司内部做了大量的服务下线或者尽可能减少服务调用的工作:除此之外,服务提供 ...

  5. Sentinel限流规则使用总结

    文章目录 一.Sentinel限流/熔断规则 二.网关限流原理 三.自问自答QA 四.总结 一.Sentinel限流/熔断规则 目前Sentinel支持以下五种限流/熔断规则:基于资源限流(FlowR ...

  6. 三、Sentinel限流熔断

    Sentinel限流熔断 文章目录 Sentinel限流熔断 一.Sentinel简介 1. 背景分析 2. Sentinel概述 3. 安装Sentinel服务 4. 访问Sentinal服务 二. ...

  7. SpringCloudSpringCloud Alibaba、微服务架构、网站架构演变过程、Nacos、Feign远程调用、Load Balancer负载均衡、Sentinel限流、Hystriy

    什么是微服务? 微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信.这些服务围绕业务能力来划分,并通过自动化部署机制来独立 ...

  8. Sentinel限流及其滑动窗口算法

    Sentinel限流及其滑动窗口算法 Sentinel的限流原理 滑动时间窗口算法 Sentinel的限流原理 限流效果,对应有DefaultController快速失败 WarmUpControll ...

  9. 构建SpringCloud 项目初始环境(四)—Sentinel限流熔断应用实践

    一.Sentinel简介 1.背景分析 在我们日常生活中,经常会在淘宝.天猫.京东.拼多多等平台上参与商品的秒杀.抢购以及一些优惠活动,也会在节假日使用12306 手机APP抢火车票.高铁票,甚至有时 ...

  10. Sentinel限流熔断应用实践

    文章目录 一.Sentinel 1.Sentinel简介 背景分析 Sentinel概述 安装Sentinel服务 idea配置sentinel启动: 访问Sentinal服务 2.Sentinel限 ...

最新文章

  1. 将oracle导出成文本文件,oracle 数据能否导出成纯文本文件呢?
  2. socket绑定的ip为INADDR_ANY 的意义 htonl(INADDR_ANY)(0.0.0.0所有地址、不确定地址、任意地址)(htonl和htons区别)
  3. FFmpeg转OpenCV Mat显示
  4. JUnit与EasyMock合作
  5. 漫步数学分析十六——紧集与连集的像
  6. c语言随机产生四位数,习题:随机产生N个四位正整数,将其中的素数选出,并升序排列之输…...
  7. 3-点的坐标及最远距离问题
  8. 如何用 60 行代码爬取知乎神回复?
  9. 结构梁配筋最牛插件_老师傅总结建筑结构设计技巧经验,看完涨知识了
  10. linux为360路由器刷机,[详细]360路由器刷openwrt、不死uboot、双系统 、wifi中继
  11. DELL存储SCv3020组件概念
  12. 用Python做一个游戏辅助脚本,完整编程思路分享
  13. STL容器之vector
  14. 给虚拟机下载安装jdk,hadoop等(非常详细的步骤)
  15. 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(约瑟夫环问题)
  16. [matlab]三维画图
  17. 2023年全国最新会计专业技术资格精选真题及答案18
  18. 斐讯n1刷鸿蒙系统,【总结】在N1上面成功刷入armbian并启动的步骤
  19. 基于layui图片管理器
  20. 地图切片的概念与原理

热门文章

  1. 分布式任务调度:海量任务处理elastic-Job解决方案(一)
  2. 如何在vue中引入阿里巴巴矢量图标库里面的图标
  3. Application在安卓中的应用
  4. 史上最全八大排序讲解时间复杂度篇(0基础都能看懂)
  5. 网页端接入海康摄像头画面操作指南
  6. Jenny DAO 运营月报|2021 年 12 月
  7. r library car_大样本OLS模型假设及R实现
  8. 自动化测试—业务线仿真回归流程剖析
  9. Mentor Xpedition VX2.11入门遇到的问题和解决方案 (1)
  10. 启动Tomcat报错org.hibernate.cfg.Environment.clinit HHH000206: hibernate.properties not found