SpringBoot系列之基于Redis的分布式限流器
SpringBoot 系列之基于 Redis 的分布式限流器
图文并茂,代码即拷即用,支持 4 种算法(固定窗口 / 滑动窗口 / 令牌桶 / 漏桶)
一、为什么要用分布式限流?
单机 Guava-RateLimiter 在集群下会 各玩各的,流量漂移,无法全局控量。
把计数器放到 Redis 里,借助 Lua 原子脚本,即可实现 毫秒级、跨节点 的精准限流。
二、4 种算法简介
1️⃣ 固定窗口
把每 1 秒当作一个“闸门”,闸门内计数 ≤ N 放行,到点就清零。
优点:最简单;缺点:闸门交界瞬间可能双倍流量。
2️⃣ 滑动窗口
把 1 秒切成很多 100 ms 小格,实时统计最近 1 s 内的小格总和。
优点:无临界突发;缺点:需要维护有序集合。