1. 概述
1.1 插件名称
- RateLimiter 插件
1.2 适用场景
- 在网关集群环境下进行流量控制
- 根据特定规则进行流量控制
- 可以到接口级别,也可以到参数级别。
1.3 插件功能
- 基于redis进行流量控制
1.4 插件代码
-
核心模块
shenyu-plugin-ratelimiter. -
核心类
org.apache.shenyu.plugin.ratelimiter.RateLimiterPlugin -
核心类
org.apache.shenyu.plugin.ratelimiter.executor.RedisRateLimiter
1.5 添加自哪个shenyu版本
- ShenYu 2.4.0
1.6 技术方案
1.6.1 采用redis令牌桶算法进行限流
- 系统以恒定的速率产⽣令牌,然后将令牌放⼊令牌桶中。
- 令牌桶有⼀个容量,当令牌桶满了的时候,再向其中放⼊的令牌就会被丢弃。
- 每次⼀个请求过来,需要从令牌桶中获取⼀个令牌,如果有令牌,则提供服务;如果没有令牌,则拒绝服务。
- 流程图:
