漏桶算法的原理就像它的名字一樣,我們維持一個漏鬥,它有恒定的流出速度,不管水流流入的速度有多快,漏鬥出水的速度始終保持不變,類似于消息中間件,不管消息的生産者請求量有多大,消息的處理能力取決于消費者。
漏桶的容量=漏桶的流出速度*可接受的等待時長。在這個容量範圍内的請求可以排隊等待系統的處理,超過這個容量的請求,才會被抛棄。
在漏桶限流算法中,存在下面幾種情況:
- 當請求速度大于漏桶的流出速度時,也就是請求量大于目前服務所能處理的最大極限值時,觸發限流政策。
-
請求速度小于或等于漏桶的流出速度時,也就是服務的處理能力大于或等于請求量時,正常執行。
漏桶算法有一個缺點:當系統在短時間内有突發的大流量時,漏桶算法處理不了。