1,计数器法
原理
计数器法通过简单的计数机制来限制单位时间内的请求数量。例如,可以维护一个计数器来记录当前时间窗口内的请求数,如果请求数超过预设的限流阈值,就拒绝后续的请求。
实现方式
• 在每个时间窗口(如1秒钟)内,维护一个计数器,随着每个请求的到来递增计数器。
• 当计数器达到阈值时,拒绝后续请求。
• 到下一个时间窗口时,计数器重置为0。
优点
• 简单易实现:实现原理简单,不需要复杂的数据结构。
• 适合固定时间窗口:对于稳定的流量场景,该方法能很好地限制每秒的请求数。
缺点
• 突发流量处理不佳:在窗口临近结束时,短时间内可能涌入大量请求,导致瞬时流量过高。比如在时间窗口重置时,可能瞬间允许大量请求通过,导致服务压力增大。
2,滑动窗口计数器法
原理
滑动窗口计数器法是计数器法的改进版。它将固定的时间窗口进一步细分为更小的时间片,并使用多个计数器来记录每个时间片的请求数,以此实现更精细的流量控制。
实现方式
• 将时间窗口划分为若干个较小的时间片,每个时间片维护一个独立的计数器。
• 在每个时间片内累积请求数,并根据滑动的时间窗口动态计算总的请求量。<