分布式 介面限流 漏桶 令牌桶演算法

2022-06-06 13:27:09 字數 966 閱讀 6462

簡介:每乙個對外提供的api介面都是需要做流量控制的,不然會導致系統直接崩潰,如果api上的流量請求超過核定的數值,我們就得對請求進行分流或者直接拒絕等操作。

一、限流

1. 作用:由於業務應用系統的負載能力有限,為了防止非預期的請求對系統壓力過大而拖垮業務應用系統;

2. 大流量控制策略:分流、降級、限流;

3. 限流策略:客戶端限流、nginx限流、服務端限流和資料庫限流;

4. 限流演算法:漏桶演算法和令牌桶演算法,經常用在流量整形或速率限制中。

二.、漏桶演算法(leaky bucket)

1. 原理:把請求比作水,水先進入漏桶裡,漏桶以一定的速度出水,當水注入速率超過出水速率時就會導致水直接溢位,然後就拒絕請求服務;

2. 特點:能限制資料的傳輸速率,平滑網路上的突發流量,但不適合於有突發特徵的流量場景;

3. 應用場景:必須讀寫分離的情況下,限制讀取的速率。

三、令牌桶演算法(token bucket)

1. 原理:系統會以乙個恆定的速度往桶裡放入令牌,如果請求需要被處理,則先需要從桶裡獲取乙個令牌,當桶裡沒有令牌可取時,則拒絕服務;

2. 特點

a. 在能夠限制資料的平均傳輸速率外,還允許某種程度的突發傳輸;

b. 與漏桶演算法是相反的,乙個是「進水」,乙個是「出水」;

3. 應用場景:必須讀寫分離的情況下,限制寫的速率。

四、限流工具

1. 工具類:ratelimiter;  

2. 基於redis實現;

3. 使用semphore進行併發控制。

可參考:使用redis進行api防刷限流

開放api介面簽名驗證

分布式系統設計之限流演算法剖析 漏桶與令牌桶

限流機制主要用於對流入系統的請求流量進行限制,保證在任何時候進入系統的請求流 量都是可控的。即不能超過系統預設的最大流量值,超過則需要排隊等待或者直接拒絕,從 而避免高併發流量全部湧入系統,導致超出了系統的處理能力而出現系統機器宕機和服務不 可用問題。限流機制在實現層面,一般是基於漏桶演算法或令牌桶...

限流演算法之漏桶演算法 令牌桶演算法

每個api介面都是有訪問上限的,當訪問頻率或者併發量超過其承受範圍時候,我們就必須考慮限流來保證介面的可用性或者降級可用性。即介面也需要安裝上保險絲,以防止非預期的請求對系統壓力過大而引起的系統癱瘓。通常的策略就是拒絕多餘的訪問,或者讓多餘的訪問排隊等待服務,或者引流。如果要準確的控制qps,簡單的...

限流演算法之漏桶演算法 令牌桶演算法

每個api介面都是有訪問上限的,當訪問頻率或者併發量超過其承受範圍時候,我們就必須考慮限流來保證介面的可用性或者降級可用性。即介面也需要安裝上保險絲,以防止非預期的請求對系統壓力過大而引起的系統癱瘓。通常的策略就是拒絕多餘的訪問,或者讓多餘的訪問排隊等待服務,或者引流。如果要準確的控制qps,簡單的...