当消费端请求骤增时,可以为其配置排队等待的流控规则,以稳定的速度逐步处理这些请求,起到“削峰填谷”的效果,从而避免流量骤增造成系统负载过高。

背景信息

在实际应用中,收到的请求是没有规律的。例如:某应用的处理请求的能力是每秒 10 个。在某一秒,突然到来了 30 个请求,而接下来两秒,都没有请求到达。在这种情况下,如果直接拒绝 20 个请求,应用在接下来的两秒就会空闲。所以,需要把骤增的请求平均到一段时间内,让系统负载保持在请求处理水位之内,同时尽可能地处理更多请求。

peak shaving_1

上图中,红色的部分代表超出消息处理能力的部分。把红色部分的消息平均到之后的空闲时间去处理,这样既可以保证系统负载处在一个稳定的水位,又可以尽可能地处理更多消息。通过配置流控规则,可以达到消息匀速处理的效果。

功能原理

AHAS 流控降级的排队等待功能,可以把骤增的大量请求匀速分配,以固定的间隔时间让请求通过,起到“削峰填谷”的效果,从而避免流量骤增造成系统负载过高的情况。堆积的请求将会被排队处理,当请求的预计排队时间超过最大超时时长时,AHAS 将拒绝这部分超时的请求。

例如:配置匀速模式下请求 QPS 为 5,则每 200 ms 处理一条请求,多余的处理任务将排队;同时设置了超时时间为 5s,则预计排队时长超过 5s 的处理任务将被直接拒绝。具体操作步骤,参见新建流控规则

示意图如下:

peak shaving_2