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

Posted

tags:

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

参考技术A

简述:
Spring Cloud Zuul RateLimit项目Github地址:
https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit
该包实现了在Zuul对每个服务进行限流

微服务开发中有时需要对API做限流保护,防止网络攻击,比如做一个短信验证码API,限制客户端的请求速率能在一定程度上抵御短信轰炸攻击,降低损失。微服务网关是每个请求的必经入口,非常适合做一些API限流、认证之类的操作,本文介绍Zuul如何进行限流操作

个人建议:如果在网关做细粒度的限流,后面微服务业务变化的话网关也要跟着变,而且后面涉及到微服务之间的调用,这个网关限流做不了。所以在网关上不能做细粒度的限流,网关主要为服务器硬件设备的并发处理能力做限流,细粒度的限流还是交给专门的熔断限流微服务去处理,这样利于各微服务之间的解构和各团队的协同开发

1、限流策略

2、可用的实现

Bucket4j实现需要相关的bean @Qualifier("RateLimit"):

3、常见的配置属性

policy的相关属性

4、发生错误如何处理

1、导入依赖

2、启动类标注解

3、配置文件

4、启动后进行访问
由于我们配置的是一秒只允许3个请求,当我们超过时,会抛出过多请求异常

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

实例:

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

自定义RateLimitKeyGenerator的实现:

到此本文就结束啦!
参考:

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

SpringCloud zuul 实现限流

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

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

SpringCloud微服务安全网关安全 3-8 用开源项目spring-cloud-zuul-ratelimit 做网关上的限流

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

SpringCloud系列之网关gateway-14.网关层的其他妙用 - 限流