當面試官問你,“什么是令牌桶限流演算法”!
你知道要怎么回答,才能獲得面試官的青睞嗎?
大家好,我是Mic,一個作業了14年的Java程式員,
關于這個問題,面試官想考察哪些緯度?我們又該怎么回答呢?
問題決議
限流策略,是在高并發流量下保護系統穩定性的一種策略,
所以這個問題,主要是互聯網公司會去考察,
當然,在實際業務開發中,限流無處不在,比如
- 執行緒池、連接池這些通過限制總的并發數量避免資源過度使用,
- Nginx反向代理服務器上通過limit_conn模塊限制瞬時并發連接數
- 在方法層面通過Sentinel、RateLimiter等工具限制介面的并發請求數量等等
他們的核心目標,都是限制并發請求數量,避免系統被壓垮導致不可用的問題,
在限流的整個體系里面,我認為有三個比較重要的緯度
- 資源,也就是針對什么資源進行限流,比如介面,或者連接等
- 閾值,流量峰值達到多少后限制后續流量的訪問
- 觸發限流后的行為,比如熔斷、降級等

限流演算法是整個限流實作的核心,不同限流演算法,能夠對流量的精準控制粒度,以及是否能支持突發流量等情況進行控制常見的限流演算法,滑動視窗、令牌桶、漏桶等,
其中令牌桶是一種能夠處理突發流量的限流演算法,系統以恒定速率向令牌桶里面添加令牌,然后每個請求都需要從令牌桶去獲取令牌才能訪問,如果獲取不到,就會觸發限流,

所以,我認為這道題考察兩個方面
- 對限流的整體認知
- 了解限流演算法對于限流本身的重要性
高手:
令牌桶是一種控制請求訪問速率的演算法,
它具體作業原理是:系統以一定速率生成令牌并放到令牌桶里面,
然后所有的客戶端請求進入到系統后,先從令牌桶里面獲取令牌,成功獲取到令牌表示可以正常訪問,
如果取不到令牌,說明請求流量大于令牌生成速率,也就是并發數超過系統承載的閾值,就會觸發限流的動作,
在流量較低的情況下,令牌桶可以快取一定數量的令牌,所以令牌桶可以處理瞬時突發流量,
總結
好了,今天的分享就到這里結束了,
如果喜歡我的作品,記得點贊、收藏、關注!
需要整套面試檔案掃下方!!!
著作權宣告:本博客所有文章除特別宣告外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明來自
Mic帶你學架構!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力,歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術干貨!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/507145.html
標籤:其他
上一篇:統一網關Gateway的使用:
