limit-count-advanced
limit-count-advanced 插件使用固定窗口或滑动窗口算法,通过限制给定时间间隔内的请求数量来限制请求速率。超过配置配额的请求将被拒绝。
具体来说:
- 固定窗口算法在不重叠的时间间隔内跟踪请求。如果请求计数在任何间隔内超过配额,多余的请求将立即被拒绝,直到下一个时间窗口开始。
- 滑动窗口算法在重叠的间隔内跟踪请求,通过计算过去配置的时间段内的最近请求来平滑速率限制,而不管间隔何时开始。此方法减少了流量峰值,并且更有效地在一段时间内均匀分布请求。
此外,你可能还会看到以下速率限制响应头,其名称可以使用插件元数据进行自定义:
X-RateLimit-Limit:总配额X-RateLimit-Remaining:剩余配额X-RateLimit-Reset:计数器重置前的剩余秒数
偶尔,你可能会观察到 X-RateLimit-Remaining 出现较小的负值。这是可以接受的,因为滑动窗口算法是一种近似值。
示例
除了 limit-count 插件功能外,该插件还支持滑动窗口算法。请参考 limit-count 插件以获取固定窗口示例,这些示例也可以在 limit-count-advanced 中配置。
以下示例演示了如何使用 limit-count-advanced 进行滑动窗口算法的速率限制。