简述

Spring Cloud Zuul RateLimit项目Github地址:

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

该包实现了在Zuul对每个服务进行限流。提供的几种限流方式:

1. 认证用户(Authenticated User)

使用已认证的用户名(username)或'anonymous'

2. 原始请求(Request Origin)

使用用户的原始请求

3. URL

使用上游请求的地址

4. 针对每个服务的全局配置

该方式不会验证Request Origin,Authenticated User或URL

使用该方式只需不设置‘type’参数即可

使用方式

pom.xml增加依赖:

<dependency>

<groupId>com.marcosbarbero.cloud</groupId>

<artifactId>spring-cloud-zuul-ratelimit</artifactId>

<version>1.3.2.RELEASE</version>

</dependency>

配置示例:

zuul:

ratelimit:

key-prefix: your-prefix  #对应用来标识请求的key的前缀

enabled: true

repository: REDIS  #对应存储类型(用来存储统计信息)

behind-proxy: true  #代理之后

default-policy: #可选 - 针对所有的路由配置的策略,除非特别配置了policies

limit: 10 #可选 - 每个刷新时间窗口对应的请求数量限制

quota: 1000 #可选-  每个刷新时间窗口对应的请求时间限制(秒)

refresh-interval: 60 # 刷新时间窗口的时间,默认值 (秒)

type: #可选 限流方式

- user

- origin

- url

policies:

myServiceId: #特定的路由

limit: 10 #可选- 每个刷新时间窗口对应的请求数量限制

quota: 1000 #可选-  每个刷新时间窗口对应的请求时间限制(秒)

refresh-interval: 60 # 刷新时间窗口的时间,默认值 (秒)

type: #可选 限流方式

- user

- origin

- url

通用应用程序配置

配置命名空间:zuul.ratelimit

说明:使用不同的repository,需要在pom中加入相关的依赖包。

Policy属性:

测试

1. 启动一个Zuul服务和一个API服务,配置正常的路由规则。访问API:

2. 按照上面的使用方式,重新启动配置有RateLimit的Zuul。相关配置:

3. 在postman中集中运行12次相同的API调用,结果中有两次调用返回429:

4. 查看对应的Response Headers和Body的信息:

自定义Key策略

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

实例:

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

RateLimitKeyGenerator的实现:

测试

同时发送13个请求,其中name=kevin的有11次,name=marry的有2次,测试结果如下:

作者:zlup
链接:https://www.jianshu.com/p/d165e12df1da
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Zuul上实现限流(spring-cloud-zuul-ratelimit)的更多相关文章

  1. Spring Cloud Zuul 限流详解(附源码)(转)

    在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选择,只需要编写一个过滤器就可以了,关键在于如何实现限流的算法. ...

  2. Spring Cloud(十二):Spring Cloud Zuul 限流详解(附源码)(转)

    前面已经介绍了很多zuul的功能,本篇继续介绍它的另一大功能.在高并发的应用中,限流往往是一个绕不开的话题.本文详细探讨在Spring Cloud中如何实现限流. 在 Zuul 上实现限流是个不错的选 ...

  3. Spring Cloud Zuul API服务网关之请求路由

    目录 一.Zuul 介绍 二.构建Spring Cloud Zuul网关 构建网关 请求路由 请求过滤 三.路由详解 一.Zuul 介绍 ​ 通过前几篇文章的介绍,我们了解了Spring Cloud ...

  4. spring cloud zuul参数调优

    zuul 内置参数 zuul.host.maxTotalConnections 适用于ApacheHttpClient,如果是okhttp无效.每个服务的http客户端连接池最大连接,默认是200. ...

  5. Spring Cloud Zuul 中文文件上传乱码

    原文地址:https://segmentfault.com/a/1190000011650034 1 描述 使用Spring Cloud Zuul进行路由转发时候吗,文件上传会造成中文乱码“?”.1. ...

  6. Spring Cloud Zuul 概览

    什么是API网关 网关这个词其实是一个硬件概念.因为按照定义,网络网关出现在网络的边缘,所以防火墙和代理服务器等相关功能 往往与之集成在一起.在家庭网络 和小型企业中,宽带路由器通常充当网络网关.它将 ...

  7. 服务网关Spring Cloud Zuul

    Spring Cloud Zuul 开发环境 idea 2019.1.2 jdk1.8.0_201 Spring Boot 2.1.9.RELEASE Spring Cloud Greenwich S ...

  8. Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。

    时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式. 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制 ...

  9. 笔记:Spring Cloud Zuul 快速入门

    Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了 ...

随机推荐

  1. mpvue-docs基于vue来开发微信小程序

    http://mpvue.com/和https://tencent.github.io/wepy/

  2. jmeter学习笔记(一)

    1.添加JSON Path Extractor >>下载地址:http://jmeter-plugins.org/downloads/all/,下载 JMeterPlugins-Extra ...

  3. 三、糖醋鲤鱼(Sweet and sour carp)

    糖醋鲤鱼是用鲤鱼制作的一道山东济南传统名菜,为鲁菜的代表菜品之一 ,色泽金黄,外焦内嫩,酸甜可口,香鲜味美. 菜品历史 <诗经>载:岂食其鱼,必河之鲤.<济南府志>上早有&qu ...

  4. 解决TCPDF中文乱码,PHP

    /* **主要是这个单词控制 stsongstdlight **/ $this->SetFont('stsongstdlight', 'B', 10);

  5. jenkins配置演示

    构建代码的几个名词: make:linux或者windows最原始的编译工具,在Linux下编译程序常用make,windows下对应的工具为nmake.它负责组织构建的过程,负责指挥编译器如何编译, ...

  6. win10常用快捷键

    记住Win10一些常用的快捷键,在使用电脑的过程中,可以快速的切换不同的功能窗口,减少鼠标的操作.大大提高工作效率.来看看下面这些常用的. Win键+Tab:激活任务视图 Win键+A:激活操作中心 ...

  7. python语法_json_pickle

    ---恢复内容开始--- dic = {"name":"kevin","age":"20"} f = open(&quo ...

  8. HBuilder git使用-建立仓库,邀请用户

    1.git环境配置好后,在Github上注册好帐号 2. 创建一个Respository(代码仓库) 3.邀请其他小组用户(必须的,要不别人提交不了修改) 4.把邀请链接要COPY给其他用户 5. 其 ...

  9. postman run之前需要手动调整顺序

    最近刚入坑postman,记录下遇到的坑: 1.先用postman interceptor录制好脚本,在postman中,将History的脚本导入Collections,由于项目接口之间需要toke ...

  10. .NET 应用架构电子书中文版

    <.NET 微服务:容器化 .NET 应用架构指南> 本书主要介绍了基于容器和微服务的应用架构和设计原则,以及基于 .NET Core 和 Docker 容器的应用程序开发实践.为了让大家 ...