淺談限流


       對於大流量高並發常見的手段:緩存,中間件削峰,限流,降級。今天淺談一下常見的限流手段。

  限流概念:限流的目的是通過對並發訪問/請求進行限速,或者對一個時間窗口內的請求進行限速來保護系統,一旦達到限制速率則可以拒絕服務、排隊或等待、降級等處理。

  常見的限流手段:常用的限流算法有兩種:漏桶算法和令牌桶算法。

       漏桶算法:漏桶算法思路很簡單,水(請求)先進入到漏桶里,漏桶以一定的速度出水,當水流入速度過大會直接溢出,可以看出漏桶算法能強行限制數據的傳輸速率。對於很多應用場景來說,除了要求能夠限制數據的平均傳輸速率外,還要求允許某種程度的突發傳輸。這時候漏桶算法可能就不合適了,令牌桶算法更為適合。

 

     令牌桶算法:令牌桶算法的原理是系統會以一個恆定的速度往桶里放入令牌,而如果請求需要被處理,則需要先從桶里獲取一個令牌,當桶里沒有令牌可取時,則拒絕服務,令牌桶算法通過發      放令牌,根據令牌的rate頻率做請求頻率限制,容量限制等。

  通常使用Google開源工具包Guava提供的限流工具類RateLimiter來實現控制速率,該類基於令牌桶算法來完成限流,非常易於使用,而且非常高效。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM