在面对突发流量洪峰(如双十一秒杀、DDOS 恶意爬取)时,服务限流是保护下游核心服务不被击穿的最后一道屏障。常见的限流算法各有其数学特征与工程权衡:1. 计数器固定窗口法:将时间划分为固定窗口,记录周期内请求数。缺点存在严重的“临界跳跃问题”——若在窗口边界前后短时间内涌入双倍流量,系统瞬间会被压垮。2. 滑动时间窗口法:将大窗口细分为多个格子,随着时间流逝淘汰过期格子。精度高且能平滑边界,但对于瞬时极端并发,依然无法实现匀速放行。3. 漏桶算法(Leaky Bucket):水(请求)以任意速率流入桶中,以恒定速率流出。其最大特点是输出极其平滑,但完全丧失了对突发突增流量(Burst)的容忍与弹性调度能力。4. 令牌桶算法(Token Bucket):以恒定速率往桶中投放令牌,请求到达时必须消耗指定数量的令牌,桶满则溢出放弃。该算法既能将长期平均请求速率限制在设定的水位,又允许在桶内有积攒令牌的前提下容忍突发的瞬时流量冲击。在分布式集群落地中,通常结合 Redis + Lua 脚本保证令牌获取与时间戳更新的原子性,配合接入层网关(如 Envoy/APISIX)在入口拦截非法流量,将计算损耗降至最低。