令牌桶演算法在限速中的應用

2021-08-18 18:12:19 字數 936 閱讀 2003

令牌桶中有初始容量,每來乙個請求從桶中獲取乙個令牌,並且在一定時間間隔中可以生成令牌,多餘的令牌被丟棄。可以實現限速功能。

主要針對不同使用者的請求進行限速,如果單獨使用google的ratelimiter可以控制請求的速率,如果超過限定的速率則進行等待,但是無法獲取使用者的請求速率。如果下可以根據不同的使用者進行限速。

* tokenbucket

/**

* 用於放令牌的桶

*/public

class

tokenbucket

public long getlastrefilltime()

public long getremainingtoken()

public

void

setlastrefilltime(long lastrefilltime)

public

void

setremainingtoken(long remainingtoken)

}

/**

* 限速1s內10個請求

*/public

class

ratelimitservice else else

//設定令牌桶中的remainingtoken和填充時間

tokenbucket.setlastrefilltime(refilltime);

//桶中沒有token了,並且上次獲取token完距現在不足以生成乙個token

if (tokennum == 0) else }}

}

public

class

ratelimitservicetest catch (interruptedexception e) }}

}

令牌桶 限速 限速之令牌桶和漏桶演算法

限速是大型服務裡面必備的功能,目的是對併發控制和請求進行限速來保護系統,讓系統不會因為單位時間內的請求數量太大,被打爆。對於超過了限速的那些請求,處理方法往往是 直接拒絕服務,排隊等待,或者降級處理。對於限速來說,最常用的兩個演算法是 令牌桶演算法和漏桶演算法,下面我們便來看下它們是怎麼回事。一 令...

常用的限流演算法 漏桶和令牌桶演算法

常用的限流演算法有兩種 漏桶演算法和令牌桶演算法。漏桶演算法與令牌桶演算法在表面看起來類似,很容易將兩者混淆。但事實上,這兩者具有截然不同的特性,且為不同的目的而使用。漏桶演算法與令牌桶演算法的區別在於 l 漏桶演算法能夠強行限制資料的傳輸速率。l 令牌桶演算法能夠在限制資料的平均傳輸速率的同時還允...

桶排序在海量資料中的應用

題目1 一年的全國高考考生人數為500 萬,分數使用標準分,最低100 最高900 沒有小數,你把這500 萬元素的陣列排個序。分析 對500w資料排序,如果基於比較的先進排序,平均比較次數為o 5000000 log5000000 1.112億。方法 建立801 900 100 個桶。將每個考生的...