原文链接
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);
// 流量控制效果配置为使用冷启动控制器