天天看點

【5分鐘背八股】令牌桶限流算法是什麼?

令牌桶算法,是增加一個大小固定的容器,也就是令牌桶,系統以恒定的速率向令牌桶中放入令牌,如果有用戶端來請求,先需要從令牌桶中拿一個令牌,拿到令牌,才有資格通路系統,這時令牌桶中少一個令牌。當令牌桶滿的時候,再向令牌桶生成令牌時,令牌會被抛棄。

在令牌桶算法中,存在以下幾種情況:

  1. 請求速度大于令牌的生成速度:那麼令牌桶中的令牌會被取完,後續再進來的請求,由于拿不到令牌,會被限流。
  2. 請求速度等于令牌的生成速度:那麼此時系統處于平穩狀态。
  3. 請求速度小于令牌的生成速度:那麼此時系統的通路量遠遠低于系統的并發能力,請求可以被正常處理。

令牌桶算法,由于有一個桶的存在,可以處理短時間大流量的場景。這是令牌桶和漏桶的一個差別。