1局冰、計數(shù)器(固定窗口)算法
?????????? 計數(shù)器算法是使用計數(shù)器在周期內(nèi)累加訪問次數(shù)测蘑,當(dāng)達(dá)到設(shè)定的限流值時,觸發(fā)限流策略康二。下一個周期開始時碳胳,進(jìn)行清零,重新計數(shù)沫勿。
?????????? 計數(shù)器算法方式限流對于周期比較長的限流挨约,存在很大的弊端,會出現(xiàn)臨界問題(前一個周期最后的小時間段內(nèi)和下一個周期的最開始時間段內(nèi)相加的并發(fā)量遠(yuǎn)遠(yuǎn)大于服務(wù)器可承載并發(fā)數(shù))产雹。
2诫惭、滑動窗口算法
?????????? 滑動窗口算法是將時間周期分為N個小周期,分別記錄每個小周期內(nèi)訪問次數(shù)蔓挖,并且根據(jù)時間滑動刪除過期的小周期夕土。
?????????? 滑動窗口的格子劃分的越多,那么滑動窗口的滾動就越平滑瘟判,限流的統(tǒng)計就會越精確怨绣。
3、漏桶算法
?????????? 漏桶算法是訪問請求到達(dá)時直接放入漏桶拷获,如當(dāng)前容量已達(dá)到上限(限流值)篮撑,則進(jìn)行丟棄(觸發(fā)限流策略)。漏桶以固定的速率進(jìn)行釋放訪問請求(即請求通過)刀诬,直到漏桶為空咽扇。
4、令牌桶算法
?????????? 令牌桶算法是程序以r(r=時間周期/限流值)的速度向令牌桶中增加令牌陕壹,直到令牌桶滿质欲,請求到達(dá)時向令牌桶請求令牌,如獲取到令牌則通過請求糠馆,否則觸發(fā)限流策略