> 核心關(guān)鍵詞:API?速率限制、流控算法、令牌桶、漏桶、滑動(dòng)窗口、分布式限流、Redis 限流


二、主流流控算法剖析

算法 突發(fā)支持 實(shí)現(xiàn)難度 平滑輸出 適用場景
固定窗口 ? ?? ? 簡單限流、低并發(fā)場景
滑動(dòng)窗口 ? ???? ? 精準(zhǔn)限流、高并發(fā)場景
漏桶 ? ???? ? 平滑流出、勻速處理
令牌桶 ? ?????? ? 支持突發(fā)與持續(xù)限速
  1. 固定窗口(Fixed Window):以固定時(shí)間段計(jì)數(shù),簡單易實(shí)現(xiàn),但易產(chǎn)生“窗口邊界突發(fā)”問題。
  2. 滑動(dòng)窗口(Sliding Window):持續(xù)統(tǒng)計(jì)指定時(shí)長內(nèi)請求數(shù),消除邊界效應(yīng),適合精細(xì)化限流。
  3. 漏桶(Leaky Bucket):將突發(fā)請求平滑放入隊(duì)列,勻速處理,適合輸出均衡。
  4. 令牌桶(Token Bucket):以恒定速率產(chǎn)生令牌,允許短時(shí)突發(fā),兼顧靈活與穩(wěn)定。

三、單節(jié)點(diǎn)與分布式限流實(shí)戰(zhàn)

3.1 單節(jié)點(diǎn)限流

http {
  limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s;
  server {
    location /api/ {
      limit_req zone=api_limit burst=200 nodelay;
      proxy_pass http://backend;
    }
  }
}

3.2 分布式限流

-- Redis Lua 腳本(Token Bucket 示例)
local key, rate, burst = KEYS[1], tonumber(ARGV[1]), tonumber(ARGV[2])
local now = redis.call('incrby', key..':ts', 0)
if now == 0 then
  redis.call('set', key..':tokens', burst)
  redis.call('set', key..':ts', ARGV[3])
end
local last_ts = tonumber(redis.call('get', key..':ts'))
local tokens = tonumber(redis.call('get', key..':tokens'))
local delta = math.max(0, tonumber(ARGV[3]) - last_ts)
local new_tokens = math.min(burst, tokens + delta * rate)
if new_tokens < 1 then
  return 0
else
  redis.call('set', key..':tokens', new_tokens - 1)
  redis.call('set', key..':ts', ARGV[3])
  return 1
end

四、多維度與動(dòng)態(tài)限流

  1. 按用戶/IP/Token:分別對不同維度進(jìn)行限流,支持更靈活的策略。
  2. 組合規(guī)則:如同時(shí)限制 user+endpoint+minute,實(shí)現(xiàn)精準(zhǔn)防護(hù)。
  3. 動(dòng)態(tài)閾值調(diào)整:接入配置中心(Nacos、Apollo)實(shí)現(xiàn)在線調(diào)優(yōu)。

> 實(shí)戰(zhàn)技巧:在秒殺或大促場景,預(yù)先調(diào)大 burst 值,活動(dòng)結(jié)束后快速降回正常水平。


五、過載保護(hù)與降級(jí)策略


六、監(jiān)控與告警


七、最佳實(shí)踐與落地建議

  1. 算法選型:根據(jù)業(yè)務(wù)特點(diǎn),優(yōu)先選用 令牌桶滑動(dòng)窗口
  2. 分層限流:邊緣(Nginx/Gateway)、服務(wù)內(nèi)部雙層限流提升可靠性。
  3. 動(dòng)態(tài)配置:熱更新限流參數(shù),無需重啟服務(wù)。
  4. 日志埋點(diǎn):追蹤限流事件、分析用戶行為。
  5. 定期演練:模擬高并發(fā)場景驗(yàn)證限流策略有效性。

八、總結(jié)與未來展望

本文系統(tǒng)介紹了 API?速率限制 的核心 流控算法,并結(jié)合 單節(jié)點(diǎn)分布式 環(huán)境的 實(shí)戰(zhàn)方案,提供了動(dòng)態(tài)調(diào)優(yōu)、過載保護(hù)與監(jiān)控告警等完整解決方案。未來,可借助 AI 異常流量識(shí)別Envoy 智能限流 等技術(shù),進(jìn)一步提升系統(tǒng)彈性與智能化運(yùn)維水平。

原文引自YouTube視頻:https://www.youtube.com/watch?v=mQCJJqUfn9Y

上一篇:

Akamai API Security 如何保護(hù) Web 應(yīng)用程序免受攻擊
最后一篇
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對比試用API 限時(shí)免費(fèi)