幾種常見的限流演算法

2021-09-20 01:18:49 字數 566 閱讀 7389

1、令牌桶演算法

令牌桶演算法是比較常見的限流演算法之一,大概描述如下:

1)、所有的請求在處理之前都需要拿到乙個可用的令牌才會被處理;

2)、根據限流大小,設定按照一定的速率往桶裡新增令牌;

3)、桶設定最大的放置令牌限制,當桶滿時、新新增的令牌就被丟棄活著拒絕;

4)、請求達到後首先要獲取令牌桶中的令牌,拿著令牌才可以進行其他的業務邏輯,處理完業務邏輯之後,將令牌直接刪除;

5)、令牌桶有最低限額,當桶中的令牌達到最低限額的時候,請求處理完之後將不會刪除令牌,以此保證足夠的限流;

2、漏桶演算法

漏桶演算法其實很簡單,可以粗略的認為就是注水漏水過程,往桶中以一定速率流出水,以任意速率流入水,當水超過桶流量則丟棄,因為桶容量是不變的,保證了整體的速率

幾種限流演算法

思路很簡單,請求先進入到漏桶裡,漏桶以固定的速度出水,也就是處理請求,當水加的過快,則會直接溢位,也就是拒絕請求,可以看出漏桶演算法能強行限制資料的傳輸速率。但是對於很多場景來說,除了要求能夠限制資料的平均傳輸速率外,還要求允許某種程度的突發傳輸。這時候漏桶演算法可能就不合適了,令牌桶演算法更為適合...

常見的限流演算法

在高併發的系統中,往往需要在系統中做限流,一方面是為了防止大量的請求使伺服器過載,導致服務不可用,另一方面是為了防止網路攻擊。常見的限流方式,比如hystrix適用執行緒池隔離,超過執行緒池的負載,走熔斷的邏輯。在一般應用伺服器中,比如tomcat容器也是通過限制它的執行緒數來控制併發的 也有通過時...

常見的限流演算法

計數器演算法採用計數器實現限流有點簡單粗暴,一般我們會限制一秒鐘的能夠通過的請求數,比如限流qps為100,演算法的實現思路就是從第乙個請求進來開始計時,在接下去的1s內,每來乙個請求,就把計數加1,如果累加的數字達到了100,那麼後續的請求就會被全部拒絕。等到1s結束後,把計數恢復成0,重新開始計...