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

背景信息

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

dg_peak_filling

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

功能原理

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

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

dg_degradation_queue