← 中文资源

简体中文版本

滑动窗口限流器

内存滑动窗口限流器,时钟可注入,窗口过期与突发行为在测试中确定性验证无需真实等待。

阅读英文原文

目标

实现按时间戳数组过滤的滑动窗口限流:窗口内命中数小于限额即放行并记录,remaining 反映当前余量,键之间彼此隔离。

要点

decide 逻辑集中在 check 一个方法内:过滤过期项、判定、追加、写回;demo 在 t=0 连打十个请求,输出前三个 true 后七个 false。

提示

状态是进程内的,多副本各自执行全额限额;跨进程严格性需要共享存储。

验证

node –test 四个用例覆盖放行/拒绝、窗口滑动、键隔离与余量;demo 输出十个判定值。 复现命令:

node --test limiter.test.mjs
node limiter.mjs

预期输出要点:The demo drives ten requests at t=0 against a limit of three, printing true for the first three and false for the rest.

实测证据:Node 22.23.2: node –test -> 4 passed; demo printed true,true,true then seven false verdicts for a limit of three at t=0.