限流降级与流量效果控制器(下)

本文介绍了Sentinel的WarmUpController如何实现冷启动,以及其与Guava的SmoothRateLimiter的区别。WarmUpController在预设的冷启动周期内逐渐增加流量限制,以达到稳定的性能状态。同时,文章讨论了Guava的SmoothRateLimiter的冷启动原理,包括Token Bucket算法、冷启动系数、令牌生成速率等,并对比了Sentinel的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接​​​​​​​

WarmUpController

Warm Up,冷启动。在应用升级重启时,应用自身需要一个预热的过程,预热之后才能到达一个稳定的性能状态,比如说,接口预热阶段完成 JIT 即时编译、完成一些单例对象的创建、线程池的创建、各种连接池的初始化、或者执行首次需要加锁执行的代码块。

冷启动并非只在应用重启时需要,在一段时间没有访问的情况下,连接池存在大量过期连接需要待下次使用才移除掉并创建新的连接、一些热点数据缓存过期需要重新查数据库写入缓存等,这些场景下也需要冷启动。

WarmUpController 支持设置冷启动周期(冷启动时长),默认为 10 秒,WarmUpController 在这 10 秒内会控制流量平缓的增长到限量阈值。例如,对某个接口限制 QPS 为 200,10 秒预热时间,那么这 10 秒内,相当于每秒的限流阈值分别为:5qps、15qps、35qps、70qps、90qps、115qps、145qps、170qps、190qps、200qps,当然,这组数据只是假设。

如果要使用 WarmUpController,则限量规则阈值类型必须配置为 GRADE_QPS,例如:

 FlowRule flowRule = new FlowRule();
 // 限流 QPS 阈值
 flowRule.setCount(200);
 // 流量控制效果配置为使用冷启动控制器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴就业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值