天天看點

高并發下的四種限流方法

高并發場景下,需要将使用者的流量進行限流

現在整理四種限流的方法:

計數器,也就是固定視窗法

計數器算法是使用計數器在周期内累加通路次數,當達到設定的限流值時,觸發限流政策。下一個周期開始時,進行清零,重新計數。

高并發下的四種限流方法

缺點:當出現臨界值的時候,會出現1秒鐘超過上線的問題。

高并發下的四種限流方法

滑動視窗算法

滑動視窗算法是将時間周期分為N個小周期,分别記錄每個小周期内通路次數,并且根據時間滑動删除過期的小周期。

如下圖,假設時間周期為1min,将1min再分為2個小周期,統計每個小周期的通路數量,則可以看到,第一個時間周期内,通路數量為75,第二個時間周期内,通路數量為100,超過100的通路則被限流掉了

高并發下的四種限流方法

漏桶算法

漏桶算法是通路請求到達時直接放入漏桶,如目前容量已達到上限(限流值),則進行丢棄(觸發限流政策)。漏桶以固定的速率進行釋放通路請求(即請求通過),直到漏桶為空。

高并發下的四種限流方法

令牌桶算法

令牌桶算法是程式以r(r=時間周期/限流值)的速度向令牌桶中增加令牌,直到令牌桶滿,請求到達時向令牌桶請求令牌,如擷取到令牌則通過請求,否則觸發限流政策