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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Zuul微服务网关的API限流相关的知识,希望对你有一定的参考价值。

参考技术A 微服务开发中有时需要对API做限流保护,防止网络攻击,比如做一个短信验证码API,限制客户端的请求速率能在一定程度上抵御短信轰炸攻击,降低损失。

微服务网关是每个请求的必经入口,非常适合做一些API限流、认证之类的操作,这里有一个基于zuul微服务网关的API限流库:

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

比如我们要对 user-service 这个服务进行限流,限制每个请求源每分钟最多只能请求10次。

首先在项目中添加 spring-cloud-zuul-ratelimit 依赖:

然后再添加如下配置即可:

对API限流是基于Zuul过滤器完成的,默认情况下限流数据是记录在内存中的,实际上是用ConcurrentHashMap保存,当然也提供了多种存储方式,包括Redis、Consul、Spring Data JPA,使用这三种存储方式要添加相关依赖。

然后再添加存储配置,比如使用Redis的配置:

限流过滤器是在请求被转发之前调用的

限流类型主要包括url、origin、user三种

在过滤器的run方法中判断请求剩余次数,小于0就拦截请求:

可以看到,单位时间内剩余请求次数小于0时抛出ZuulRuntimeException,直接返回客户端TOO_MANY_REQUESTS异常消息,达到拦截请求的效果。

https://github.com/yunTerry/spring-cloud-netflix

以上是关于Spring Cloud Zuul微服务网关的API限流的主要内容,如果未能解决你的问题,请参考以下文章

基于spring-cloud的微服务API网关zuul

spring cloud 学习 - zuul 微服务网关

干货分享微服务spring-cloud(6.Api网关服务zuul)

Spring Cloud(Dalston.SR5)--Zuul 网关-微服务集群

Spring Cloud Zuul 快速入门

Spring Cloud:API网关服务——Spring Cloud Zuul