当消费端请求骤增时,可以为其配置排队等待的流控规则,以稳定的速度逐步处理这些请求,起到削峰填谷的效果,从而避免流量骤增造成系统负载过高。
背景信息
在实际应用中,收到的请求是没有规律的。例如:某应用的处理请求的能力是每秒10个。在某一秒,突然到来了30个请求,而接下来两秒,都没有请求到达。在这种情况下,如果直接拒绝20个请求,应用在接下来的两秒就会空闲。所以,需要把骤增的请求平均到一段时间内,让系统负载保持在请求处理水位之内,同时尽可能地处理更多请求。
上图中,黄色的部分代表超出消息处理能力的部分。把黄色部分的消息平均到之后的空闲时间去处理,这样既可以保证系统负载处在一个稳定的水位,又可以尽可能地处理更多消息。通过配置流控规则,可以达到消息匀速处理的效果。
功能原理
AHAS流控降级的排队等待功能,可以把骤增的大量请求匀速分配,以固定的间隔时间让请求通过,起到“削峰填谷”的效果,从而避免流量骤增造成系统负载过高的情况。堆积的请求将会被排队处理,当请求的预计排队时间超过最大超时时长时,AHAS将拒绝这部分超时的请求。
例如:配置匀速模式下请求QPS为5,则每200 ms处理一条请求,多余的处理任务将排队;同时设置了超时时间为5s,则预计排队时长超过5s的处理任务将被直接拒绝。具体操作步骤,请参见新建流控规则。
示意图如下: