使用漏桶演算法,規定桶子大小,流速大小,讓請求以勻速進入系統業務處理層;
工具類:
publicclass
bucketlimitmanage
funnel funnel =funnelmap.get(key);
return funnel.watering(1);
}private
static
class
funnel
/*** 根據上次水流動的時間,騰出已流出的空間
*/private
void
makespace()
leftquota +=leaked;
//如果剩餘大於容量,則剩餘等於容量
if (leftquota >capacity)
leakingts =now;
}/*** 漏斗漏水**
@param
quota 流量
* @return
是否有足夠的水可以流出(是否允許訪問)
*/public
boolean watering(int
quota)
return
false
; }
}}
漏桶演算法與令牌桶演算法
漏桶演算法 leaky bucket 是網路世界中流量整形 traffic shaping 或速率限制 rate limiting 時經常使用的一種演算法,它的主要目的是控制資料注入到網路的速率,平滑網路上的突發流量。漏桶演算法提供了一種機制,通過它,突發流量可以被整形以便為網路提供乙個穩定的流量。...
漏桶演算法和令牌桶演算法
漏桶演算法 水 請求 先進入漏桶裡,漏桶以一定的速度出水 介面迴圈去獲取請求 當水流入速度過大會直接溢位,然後拒絕請求。可見這裡有兩個變數,乙個是桶的大小,支援流量最大時可以存放多少的水 請求 另乙個是水桶漏洞的大小,在某些情況下,漏桶演算法不能有效地使用網路資源,因為漏桶的漏出速率是固定的引數,所...
限流演算法之漏桶演算法 令牌桶演算法
每個api介面都是有訪問上限的,當訪問頻率或者併發量超過其承受範圍時候,我們就必須考慮限流來保證介面的可用性或者降級可用性。即介面也需要安裝上保險絲,以防止非預期的請求對系統壓力過大而引起的系統癱瘓。通常的策略就是拒絕多餘的訪問,或者讓多餘的訪問排隊等待服務,或者引流。如果要準確的控制qps,簡單的...