當面試官問你,“什麼是令牌桶限流演算法”! 你知道要怎麼回答,才能獲得面試官的青睞嗎? 大家好,我是Mic,一個工作了14年的Java程式員。 關於這個問題,面試官想考察哪些緯度?我們又該怎麼回答呢? 問題解析 限流策略,是在高併發流量下保護系統穩定性的一種策略。 所以這個問題,主要是互聯網公司會去考 ...
當面試官問你,“什麼是令牌桶限流演算法”!
你知道要怎麼回答,才能獲得面試官的青睞嗎?
大家好,我是Mic,一個工作了14年的Java程式員。
關於這個問題,面試官想考察哪些緯度?我們又該怎麼回答呢?
問題解析
限流策略,是在高併發流量下保護系統穩定性的一種策略。
所以這個問題,主要是互聯網公司會去考察。
當然,在實際業務開發中,限流無處不在,比如
- 線程池、連接池這些通過限制總的併發數量避免資源過度使用。
- Nginx反向代理伺服器上通過limit_conn模塊限制瞬時併發連接數
- 在方法層面通過Sentinel、RateLimiter等工具限制介面的併發請求數量等等
他們的核心目標,都是限制併發請求數量,避免系統被壓垮導致不可用的問題。
在限流的整個體系裡面,我認為有三個比較重要的緯度
- 資源,也就是針對什麼資源進行限流,比如介面,或者連接等
- 閾值,流量峰值達到多少後限制後續流量的訪問
- 觸發限流後的行為,比如熔斷、降級等
限流演算法是整個限流實現的核心,不同限流演算法,能夠對流量的精準控制粒度,以及是否能支持突發流量等情況進行控制常見的限流演算法,滑動視窗、令牌桶、漏桶等。
其中令牌桶是一種能夠處理突發流量的限流演算法,系統以恆定速率向令牌桶裡面添加令牌,然後每個請求都需要從令牌桶去獲取令牌才能訪問,如果獲取不到,就會觸發限流。
所以,我認為這道題考察兩個方面
- 對限流的整體認知
- 瞭解限流演算法對於限流本身的重要性
高手:
令牌桶是一種控制請求訪問速率的演算法。
它具體工作原理是:系統以一定速率生成令牌並放到令牌桶裡面。
然後所有的客戶端請求進入到系統後,先從令牌桶裡面獲取令牌,成功獲取到令牌表示可以正常訪問。
如果取不到令牌,說明請求流量大於令牌生成速率,也就是併發數超過系統承載的閾值,就會觸發限流的動作。
在流量較低的情況下,令牌桶可以緩存一定數量的令牌,所以令牌桶可以處理瞬時突發流量。
總結
好了,今天的分享就到這裡結束了。
如果喜歡我的作品,記得點贊、收藏、關註!
需要整套面試文檔掃下方!!!
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!