Zuul上实现限流(spring-cloud-zuul-ratelimit)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zuul上实现限流(spring-cloud-zuul-ratelimit)相关的知识,希望对你有一定的参考价值。

参考技术A Spring Cloud Zuul RateLimit项目Github地址:

https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit

该包实现了在Zuul对每个服务进行限流。提供的几种限流方式:

pom.xml增加依赖:

配置示例:

配置命名空间:zuul.ratelimit

Policy属性:

1. 启动一个Zuul服务和一个API服务,配置正常的路由规则。访问API:

2. 按照上面的使用方式,重新启动配置有RateLimit的Zuul。相关配置:

3. 在postman中集中运行12次相同的API调用,结果中有两次调用返回429:

4. 查看对应的Response Headers和Body的信息:

如果希望自己控制key的策略,可以通过自定义RateLimitKeyGenerator的实现来增加自己的策略逻辑。

实例:

根据请求上的参数来对请求进行限流。比如有一个请求是http://localhost:8765/api-a//hello2?name=kevin,对相同的name值进行限流。我们设置了1分钟内,限流10次,那么如果1分钟内,name是kevin的请求超过10次,就会发生限流。

RateLimitKeyGenerator的实现:

测试

同时发送13个请求,其中name=kevin的有11次,name=marry的有2次,测试结果如下:

以上是关于Zuul上实现限流(spring-cloud-zuul-ratelimit)的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud使用Zuul限流(spring-cloud-zuul-ratelimit)

SpringCloud使用Zuul限流(zuul+ratelimit)

Spring Cloud Zuul微服务网关的API限流

SpringCloud---zuul权限校验接口限流

SpringCloud zuul 实现限流

SpringCloud----zuul权限校验接口限流