限流中间件
koa-rate-limit是koa的限流中间件。核心是基于Redis实现,所以在使用的时候确保已经安装Redis。
提供的能力:
- 基本的限流实现,基于固定窗口的限流算法
- 支持API级的限流,遵循路由匹配原则的限流规则匹配
开发中的能力:
- 令牌桶限流算法的实现
- 基于用户IP的限流
- 限流配置的动态配置
使用说明
安装
# npm npm i koa-rate-limit # yarn yarn add koa-rate-limit
使用示例
;;;; ; ;WindowRateLimiter.initnew Redis, limiterConfig, 'prefix'; app.useWindowRateLimiter.limiter; ;router.get'/hello',; app.userouter.routes; app.use; app.listen3000;
使用示例说明
关于Redis和ioredis的使用,请参考下面的文档:
Redis使用指南
ioredis使用指南
关于koa中间件的使用,请参考下面的文档:
koa中间件机制详解
关于配置文件的说明 中间件使用的配置文件通常是下面的格式:
;
本中间件是对接口进行限流,使用接口的path作为限流的key,若提供了prefix,则key为:${prefix}${key}:
this.key = prefix ? `${prefix}${key}` : key;
这里的key的生成方式如下:
// 替换path中的'/'为'_'
const key = path.replace(/\//g, '_');
限流的规则如下:
- 根据接口的path计算出key
- 查找与key最匹配的限流配置,遵循最佳匹配原则
- 若没有与key最匹配的限流配置,则检查默认配置
支持功能
功能:
- 支持接口级别的限流
- 支持固定窗口限流算法和令牌桶限流算法
版本记录
1.0.0
- 基于固定窗口限流算法实现KOA中间件
- 支持接口级别的限流