接口限流的四種算法

固定窗口計數器算法

單位時間內超閾值的請求被丟棄。ide

單位時間內可接收的請求有可能爲閾值的2倍。性能

例:10秒爲一單位,閾值5.blog

第一個10秒的後5秒接收請求5個,中止接收。接口

第二個10秒的籤5秒接收請求5個,中止接收。隊列

兩個窗口並無超過閾值,但先後兩個5秒就是一單位時間,接收了10個請求。消息隊列

滑動窗口計數器it

接口限流的四種算法

每5秒可經過5個請求。class

第6秒,前5秒的請求總和3<5,可經過2個請求,多的丟棄。請求

第七、8秒,前5秒的請求總和=5,不經過任何請求。

第9秒,前5秒的請求總和4<5,可經過1個請求,多的丟棄。

以此類推。

漏桶算法

其實就是生產-消費模式的消息隊列。

全部請求都放入消息隊列(桶)中,消費者以固定頻率從桶內取請求並處理。請求數超過桶的閾值則丟棄或排隊。

消費者獲取請求的頻率是固定的,在突發大流量請求的狀況下,即使桶內請求已滿且消費者自身性能足夠的狀況下,響應速度也沒法提升。

令牌桶算法

令牌以固定頻率生成並放入桶中,令牌滿了則丟棄。

請求從桶內獲取令牌,有令牌則執行,無令牌則丟棄。

相比漏桶,即使有突發大流量請求進來,只要有令牌就能夠及時獲得執行。

相關文章
相關標籤/搜索