Zuul网关之限流实现
网关限流比较简单的方式就是在pre的filter中使用令牌桶,因为是限流,所以过滤器排序要靠前,使用方法谷歌guava的RateLimiter组件,代码实现:
import com.google.common.util.concurrent.RateLimiter;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;/*** 限流过滤器*/
@Component
public class LimitFilter extends ZuulFilter {@Overridepublic String filterType() {return FilterConstants.PRE_TYPE;}@Overridepublic int filterOrder() {return -100;}@Overridepublic boolean shouldFilter() {return true;}//初始化一个令牌private static final RateLimiter limit = RateLimiter.create(1);@Overridepublic Object run() throws ZuulException {RequestContext ctx = RequestContext.getCurrentContext();if(limit.tryAcquire()){System.out.println("请求通过");return null;}else{System.out.println("被限流了");ctx.setSendZuulResponse(false);ctx.setResponseStatusCode(HttpStatus.TOO_MANY_REQUESTS.value());}return null;}
}
依赖的话不需要额外引入,如果引入了zuul之后就会自动加载依赖com.google.guava:guava:29.0-jre。
需要注意的事,对于网关来讲,zuul网关的实现都是Filter来实现,所以尽量不要在zuul网关中写RestController业务,因为对于ZuulFilter不会过滤自身的request请求。
Zuul网关之限流实现相关推荐
- 14 基于网关Spring Cloud Zuul的接口限流实现方案
在Spring Cloud Zuul网关中,限流业务是放在前置过滤器实现的,也就是在请求被Zuul转发给微服务之前进行限流.另外,当前置过滤器中同时存在限流.鉴权.身份认证等业务时,应该将限流业务放在 ...
- Redis 集群分布式锁与 API 网关分布式限流
https://www.infoq.cn/article/FoQGIk*BzdQWJJ0tKqrJ Redis 集群的历史 Redis 在 3.0 前一般有两种集群方案,一是 proxy(Twempr ...
- 秒杀项目之网关服务限流熔断降级分布式事务
目录 一.网关服务限流熔断降级 二.Seata--分布式事务 2.1 分布式事务基础 2.1.1 事务 2.1.2 本地事务 2.1.3 分布式事务 2.1.4 分布式事务场景 2.2 分布式事务解决 ...
- 基于gateway网关实现限流
前言 在前面的限流方案介绍中,我们谈到了网关在微服务体系架构中的重要作用,网关不经具备大家熟知的动态路由,请求拦截等功能外,还可以基于网关实现分布式环境下的限流,下面我们以gatway为例,用代码进行 ...
- SpringCloud Gateway 服务网关,限流
SpringCloud Gateway 提供了基于Redis 和lua脚本实现的令牌桶算法进行限流,即 RequestRateLimiterGatewayFilterFactory类,通过设置过滤器实 ...
- 【Kong】网关-rate-limiting限流
目录 路由添加限流插件 测试结果 路由添加限流插件 ROUTES-->[路由NAME/ID]-->Plugins-->ADD Plugin 每秒1个请求 测试结果 postman的R ...
- properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!...
本文同步Java知音社区,专注于Java 作者:kosamino http://www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服 ...
- 网关的作用是什么_SpringCloud中Zuul网关原理及其配置,看它就够了
正文 Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务 ...
- 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!
作者:kosamino www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首 ...
最新文章
- MySQL like 通配符是_MySql模糊查询like通配符使用详细介绍
- 022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件
- 数据类型之字符串练习
- mysql 内置功能 函数 date_format函数
- Android Activity界面切换添加动画特效 (转载修改)
- canvas.clipPath canvas.clipRect() 无效的原因
- Java http响应状态码_如何获得HttpClient返回状态码和响应正文?
- idea vscode快捷键
- matlab菲涅尔衍射光强分布,求助!!!用颜色表示的菲涅尔衍射的光强分布图
- Firemonkey
- 获取深户股市列表api_网易163 财经股票接口
- 微软模拟飞行2020 数字化建模分析
- (1)前言-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
- unity相机旋转带阻尼效果
- 2020第二届长安杯电子数据竞赛试题(二次修改版),本人亲解,尽量做到细致仔细,镜像百度网盘奉上,建议大家联系一下,弘连题目还是很好的(强烈推荐)
- 服务器指令显示字幕,gdc服务器字幕设置
- HDU 5761 多校联合 Rower BO
- 这没啥挑的,全新java前后端开发需掌握的框架及技术
- Unity个人记录07-动画系统
- huan shen总结
热门文章
- vue中怎么引入字体包(超详细)
- PS首行缩进2个字符的正确设置方法介绍
- 香港城市 大学 计算机 专业排名,香港城市大学优势专业及优势专业排名(QS世界排名)...
- 电子计算机模拟考试word,职高计算机模拟考试-
- 张国华:大型空港综合交通枢纽规划设计技术体系研究
- 字符串匹配算法:KMP算法
- todoMVC 案例一
- Vue 自定义组件添加点击(@click)事件
- 详解多旋翼飞行器的传感器技术
- 项目实战视频课程:美团小程序(Node.js+Express+支付)-李宁-专题视频课程