一、流控效果---快速失败[默认的流控处理]
直接拒绝(RuleConstant.CONTROL_BEHAVIOR_DEFAULT)方式是默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException。这种方式适用于对系统处理能力确切已知的情况下,比如通过压测确定了系统的准确水位时。
源码:com.alibaba.csp.sentinel.slots.block.flow.controller.DefaultController
测试---流控效果---快速失败--阈值类型[QPS]
快速失败:直接失败,抛异常
image.png
=========================================================================================
二、流控效果---Warm Up(预热)
Warm UpWarm Up(RuleConstant.CONTROL_BEHAVIOR_WARM_UP)方式,即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。
测试---流控效果---预热---阈值类型[QPS]
Warm Up:根据codeFactor(冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS阈值。
- 新建流控规则,流控效果设置为预热
流控效果---预热在5秒内最大阈值是3(10/codeFactor),超过5秒,最大阈值为10
- 测试效果
在5秒内狂点 http://localhost:8401/testA,发现超过3次就报错
超过3次就报错
超过5秒狂点 http://localhost:8401/testA,发现超过3次就不报错,超过10次才报错
=========================================================================================
三、流控效果---排队等待
排队等待匀速排队(RuleConstant.CONTROL_BEHAVIOR_RATE_LIMITER)方式会严格控制请求通过的间隔时间,也即是让请求以均匀的速度通过,对应的是漏桶算法。
测试---流控效果---排队等待--阈值类型[QPS]
排队等待:匀速排队,让请求以匀速的速度通过,阈值类型必须设置为 QPS ,否则无效。
- 新建流控规则,流控效果设置为排队等待
网友评论