SpringBoot系列之基于Redis的分布式限流器
SpringBoot 系列之基于 Redis 的分布式限流器
圖文并茂,代碼即拷即用,支持 4 種算法(固定窗口 / 滑動窗口 / 令牌桶 / 漏桶)
一、為什么要用分布式限流?
單機 Guava-RateLimiter 在集群下會 各玩各的,流量漂移,無法全局控量。
把計數器放到 Redis 里,借助 Lua 原子腳本,即可實現 毫秒級、跨節點 的精準限流。
二、4 種算法簡介
1?? 固定窗口
把每 1 秒當作一個“閘門”,閘門內計數 ≤ N 放行,到點就清零。
優點:最簡單;缺點:閘門交界瞬間可能雙倍流量。
2?? 滑動窗口
把 1 秒切成很多 100 ms 小格,實時統計最近 1 s 內的小格總和。
優點:無臨界突發;缺點:需要維護有序集合。