天天看点

6. Alibaba Sentinel 流控效果之预热Warn Up

名词解释预热Warm Up

Warm Up:根据coldFactor(冷加载因子,默认3)的值,从阈值/codeFacotor,经过预热时长,才达到设置的QPS阈值

官网手册地址:flow-control

概念:Warm Up方式,即预热/冷启动方式。该方式主要用于系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮的情况。

预热公式:初始阈值= 设定阈值/coldFactor(默认值为3),经过预热一段时间后才会达到设定的阈值。

预热的访问过程系统允许通过的QPS曲线如下图:

6. Alibaba Sentinel 流控效果之预热Warn Up

设置图如下

6. Alibaba Sentinel 流控效果之预热Warn Up

使用场景:一般秒杀系统中会有这样的流控设置,为了防止秒杀瞬间造成系统崩溃。

使用案例

6. Alibaba Sentinel 流控效果之预热Warn Up

上图的设置表示: 访问/testA资源时, 一开始阈值是 10(设定单机阈值)/3 (coldFactor默认3),经过30秒的预热后才能到达设定阈值30 的效果。

查看效果

为了能查看到QPS阈值有一个慢慢上升的过程,我们需要保持一个快速的访问。 这时我们可以使用ApacheJMeter 多线程循环访问来达到这个目的。

  1. 设置线程组,需要循环永远
    6. Alibaba Sentinel 流控效果之预热Warn Up
  2. 设置HTTP请求
    6. Alibaba Sentinel 流控效果之预热Warn Up
  3. 设置请求间隔时间,这里设置30毫秒,保证请求的QPS在30以上,只有这样刚开始的部分流量才会被拦截,过30秒后保持在30以内的QPS
    6. Alibaba Sentinel 流控效果之预热Warn Up

运行Jemter查看流控效果:

6. Alibaba Sentinel 流控效果之预热Warn Up

上图蓝色线为被流控的请求 绿色线为通过的请求

通过上图可以看出, 在一开始的时候, 通过的QPS为10,被拦截的请求有20多, 慢慢的通过的请求就增加上去,拦截的请求越来越少。 最后通过30秒的事件, 通过的QPS稳定在30以内。