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微服务安全网关安全 3-8 用开源项目spring-cloud-zuul-ratelimit 做网关上的限流