网关限流比较简单的方式就是在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网关之限流实现相关推荐

  1. 14 基于网关Spring Cloud Zuul的接口限流实现方案

    在Spring Cloud Zuul网关中,限流业务是放在前置过滤器实现的,也就是在请求被Zuul转发给微服务之前进行限流.另外,当前置过滤器中同时存在限流.鉴权.身份认证等业务时,应该将限流业务放在 ...

  2. Redis 集群分布式锁与 API 网关分布式限流

    https://www.infoq.cn/article/FoQGIk*BzdQWJJ0tKqrJ Redis 集群的历史 Redis 在 3.0 前一般有两种集群方案,一是 proxy(Twempr ...

  3. 秒杀项目之网关服务限流熔断降级分布式事务

    目录 一.网关服务限流熔断降级 二.Seata--分布式事务 2.1 分布式事务基础 2.1.1 事务 2.1.2 本地事务 2.1.3 分布式事务 2.1.4 分布式事务场景 2.2 分布式事务解决 ...

  4. 基于gateway网关实现限流

    前言 在前面的限流方案介绍中,我们谈到了网关在微服务体系架构中的重要作用,网关不经具备大家熟知的动态路由,请求拦截等功能外,还可以基于网关实现分布式环境下的限流,下面我们以gatway为例,用代码进行 ...

  5. SpringCloud Gateway 服务网关,限流

    SpringCloud Gateway 提供了基于Redis 和lua脚本实现的令牌桶算法进行限流,即 RequestRateLimiterGatewayFilterFactory类,通过设置过滤器实 ...

  6. 【Kong】网关-rate-limiting限流

    目录 路由添加限流插件 测试结果 路由添加限流插件 ROUTES-->[路由NAME/ID]-->Plugins-->ADD Plugin 每秒1个请求 测试结果 postman的R ...

  7. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!...

    本文同步Java知音社区,专注于Java 作者:kosamino http://www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服 ...

  8. 网关的作用是什么_SpringCloud中Zuul网关原理及其配置,看它就够了

    正文 Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务 ...

  9. 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!

    作者:kosamino www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首 ...

最新文章

  1. MySQL like 通配符是_MySql模糊查询like通配符使用详细介绍
  2. 022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件
  3. 数据类型之字符串练习
  4. mysql 内置功能 函数 date_format函数
  5. Android Activity界面切换添加动画特效 (转载修改)
  6. canvas.clipPath canvas.clipRect() 无效的原因
  7. Java http响应状态码_如何获得HttpClient返回状态码和响应正文?
  8. idea vscode快捷键
  9. matlab菲涅尔衍射光强分布,求助!!!用颜色表示的菲涅尔衍射的光强分布图
  10. Firemonkey
  11. 获取深户股市列表api_网易163 财经股票接口
  12. 微软模拟飞行2020 数字化建模分析
  13. (1)前言-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
  14. unity相机旋转带阻尼效果
  15. 2020第二届长安杯电子数据竞赛试题(二次修改版),本人亲解,尽量做到细致仔细,镜像百度网盘奉上,建议大家联系一下,弘连题目还是很好的(强烈推荐)
  16. 服务器指令显示字幕,gdc服务器字幕设置
  17. HDU 5761 多校联合 Rower BO
  18. 这没啥挑的,全新java前后端开发需掌握的框架及技术
  19. Unity个人记录07-动画系统
  20. huan shen总结

热门文章

  1. vue中怎么引入字体包(超详细)
  2. PS首行缩进2个字符的正确设置方法介绍
  3. 香港城市 大学 计算机 专业排名,香港城市大学优势专业及优势专业排名(QS世界排名)...
  4. 电子计算机模拟考试word,职高计算机模拟考试-
  5. 张国华:大型空港综合交通枢纽规划设计技术体系研究
  6. 字符串匹配算法:KMP算法
  7. todoMVC 案例一
  8. Vue 自定义组件添加点击(@click)事件
  9. 详解多旋翼飞行器的传感器技术
  10. 项目实战视频课程:美团小程序(Node.js+Express+支付)-李宁-专题视频课程