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

1、maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

2、服务网关完整的配置文件如下

server:port: 8801
spring:application:name: gatewaycloud:consul:host: localhostport: 8500discovery:service-name: gatewaygateway:discovery:locator:enabled: falselower-case-service-id: trueroutes:- id: logserviceuri: lb://logservicepredicates:- Path=/log/**filters:- StripPrefix=1- id: orderserviceuri: lb://orderservicepredicates:- Path=/order/**- Method=GETfilters:- StripPrefix=1- name: RequestRateLimiterargs:# #{@beanName} 限流key, bean对象名称,实现KeyResolver接口resolve方法的类对象。key-resolver: "#{@urlKeyResolver}"# 令牌桶每秒填充10个令牌redis-rate-limiter.replenishRate: 10# 突发20个redis-rate-limiter.burstCapacity: 50# 每次请求消耗1个redis-rate-limiter.requestedTokens: 1redis:host: localhostport: 6379database: 8# 配置日志
logging:level:org.springframework.cloud.gateway: debug

3、KeyResolver 针对接口进行限流

@Component
public class KeyResolverConfig {/*** 根据Url进行限流*/@Beanpublic KeyResolver urlKeyResolver() {return exchange -> Mono.just(exchange.getRequest().getURI().getPath());}
}

4、使用jmeter进行压测,20秒发送300个请求,get方式进行http请求,

http://localhost:8801/order/order

5、查看服务网关控制台日志里

成功转发的信息如下:

ratelimit.RedisRateLimiter     : response: Response{allowed=true, headers={X-RateLimit-Remaining=23, X-RateLimit-Requested-Tokens=1, X-RateLimit-Burst-Capacity=50, X-RateLimit-Replenish-Rate=10}, tokensRemaining=-1}

失败的信息:

response: Response{allowed=false, headers={X-RateLimit-Remaining=0, X-RateLimit-Requested-Tokens=1, X-RateLimit-Burst-Capacity=50, X-RateLimit-Replenish-Rate=10}, tokensRemaining=-1}

失败的大约有60个。

SpringCloud Gateway 服务网关,限流相关推荐

  1. 微服务网关限流鉴权-wei-fu-wu-wang-guan-xian-liu--jian-quan

    title: 微服务网关限流&鉴权 date: 2022-01-06 14:40:45.047 updated: 2022-01-06 14:40:45.047 url: https://ww ...

  2. 未付服务网关限流作用

    网关限流 网关可以做很多的事情,比如,限流,当我们的系统 被频繁的请求的时候,就有可能 将系统压垮,所以 为了解决这个问题,需要在每一个微服务中做限流操作,但是如果有了网关,那么就可以在网关系统做限流 ...

  3. SpringCloud Gateway 服务网关,断言

    SpringCloud Gateway 是SpringCloud 生态系中的网关,不仅提供统一路由功能,通过 Filter 过滤链实现网关的基本功能,比如用户验证,鉴权,限流等功能.它使用非阻塞模式, ...

  4. SpringCloud - GateWay服务网关

    文章目录 一. Gateway概述 1.Gateway是什么 2. Gateway作用 3. 微服务架构中网关的位置 4. SpringCloud Gateway概念 5. SpringCloud G ...

  5. SpringCloud Gateway 服务网关,过滤器

    SpringCloud Gateway 过滤器有 pre 和 post 两种方式,请求首先经过 pre 过滤器处理,成功后被转发到对应的服务,然后经过 post 过滤器处理,将结果返回客户端.这种机制 ...

  6. Spring Cloud :Gateway 网关限流(五)

    目录 一.概述 1. 为什么需要限流 二.限流算法 1. 计数器算法 2. 漏桶算法 3. 令牌桶算法 四.Gateway 限流 1. 添加依赖 2. 配置文件 3. 限流规则配置类 Spring C ...

  7. 微服务网关GateWay 过滤+路由+限流

    文章目录 1 微服务网关概述 2 微服务网关微服务搭建 3 微服务网关跨域 4 微服务网关过滤器 5 微服务网关限流 5.1 思路分析 5.2 令牌桶算法 5.3 网关限流代码实现 1 微服务网关概述 ...

  8. 微服务网关鉴权:gateway使用、网关限流使用、用户密码加密、JWT鉴权

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  9. 微服务网关鉴权——gateway使用、网关限流使用、用户密码加密、JWT鉴权

    文章目录 微服务网关鉴权 课程目标 1.微服务网关Gateway 1.1 微服务网关概述 1.2 微服务网关微服务搭建 1.3 微服务网关跨域 1.4 微服务网关过滤器 2 网关限流 2.1 思路分析 ...

最新文章

  1. uos连接服务器共享文件夹,使用UOS系统共享文件给其他设备的的办法
  2. django中的form.is_valid()总是返回False
  3. 【EntityFramework系列教程五,翻译】在ASP.NET MVC程序中借助EntityFramework读取相关数据...
  4. 无法执行任何java命令,报错OutOfMemoryError: Cannot create GC thread. Out of system resources
  5. loj10135. 「一本通 4.4 练习 2」祖孙询问
  6. 17-基于51单片机的银行排队叫号系统设计
  7. 浏览器中在线预览pdf文件(不使用插件)
  8. Zblog主题,Zblog响应式主题,免费Zblog主题
  9. STRIX z490i 10700k Monterey12.3黑苹果EFI分享
  10. 冒泡排序算法-java实现
  11. java服务器测速_服务器测速,php在线测速
  12. STM32F03学习笔记之ADC配置(含DMA配置)
  13. 华为交换机ARP防网关冲突
  14. 移动硬盘变本地硬盘,小编教你移动硬盘变本地硬盘怎么办
  15. 通俗易懂的讲讲TCP的三次握手
  16. NTT(快速数论变换)模板
  17. b站python直播批量发送弹幕_Python实现自动发送B站直播弹幕软件
  18. linux开发板tftp 搭建,iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动
  19. html 摄像头代码,web HTML5 调用摄像头的代码
  20. openwrt上opkg更新报错opkg_download: Failed to download .............

热门文章

  1. 【英语学习】【Daily English】U03 Leisure Time L04 I need to squeeze in some time for reading
  2. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(5) - 控制转移指令
  3. Intel超线程技术 Hyper-Threading Technology (1) - 引言与历史
  4. Pentium 4处理器架构/微架构/流水线 (10) - NetBurst执行核详解 - 高速缓存/数据预取
  5. 领航机器人广告段子_教育机器人广告宣传语_段子网收录最新段子
  6. eclipse可以写前端吗_学生:“老师,可以写老师吗?”语文老师怎么做才不尴尬?...
  7. UE4在VS2013中各个编译配置代表意义
  8. 10年老兵给程序员的10条建议! 1
  9. setTimeOut与setInterval的区别
  10. 请郎平回归执教中国女排