外观
一句话答案
五种限流算法:计数器、固定窗口、滑动窗口、漏桶(匀速)、令牌桶(允许突发,最灵活),Sentinel 用滑动窗口。
核心要点
| 算法 | 特点 |
|---|---|
| 计数器 | 简单但有边界突发 |
| 固定窗口 | 临界点翻倍问题 |
| 滑动窗口 | 解决临界问题 |
| 漏桶 | 匀速流出 |
| 令牌桶 | 允许突发(Guava RateLimiter) |
生产: Sentinel(滑动窗口) / Guava RateLimiter(令牌桶) / Nginx(漏桶)
追问与易错
追问方向:
- 令牌桶和漏桶区别?
- Sentinel 用哪种算法?
- 分布式限流怎么做?
易错点:
- ❌ 固定窗口没问题——有临界点翻倍问题
- ❌ 漏桶最好——不允许突发某些场景不适合
💡 记忆锚点
漏桶vs令牌桶:漏桶像水龙头匀速滴水(无论水压多大出水恒定,适合匀速场景),令牌桶像发门票(攒够票可以一次性进一批人,允许突发流量)。固定窗口的坑:两个窗口交界处可能瞬间通过两倍流量,滑动窗口解决这个问题。生产用Sentinel(滑动窗口)或Guava(令牌桶)。