当前位置: 首页 > news >正文

RequestRateLimiterGatewayFilterFactory

一、功能说明

RequestRateLimiterGatewayFilterFactory 是 Spring Cloud Gateway 的流量控制组件,用于实现 API 请求速率限制,核心功能包括:

  1. 限制单位时间内的请求数量(如每秒10次)
  2. 防止服务被突发流量击垮(通过令牌桶算法)
  3. 支持分布式限流(依赖Redis存储)
  4. 可自定义限流维度(按IP、用户ID等)

二、工作原理图

1. 动态流程(时序图)
客户端 API网关 Redis 后端服务 请求 /api/data 1. 调用KeyResolver获取Key(如IP) 2. 返回当前令牌数 3. 扣减令牌 4. 转发请求 返回数据 200 OK 429 Too Many Requests alt [令牌充足] [令牌不足] 客户端 API网关 Redis 后端服务
2. 静态架构(类图)
调用
依赖
读写令牌
RequestRateLimiterGatewayFilterFactory
+apply(Config config)
RedisRateLimiter
-replenishRate: int
-burstCapacity: int
+isAllowed()
«interface»
KeyResolver
+resolve(exchange)
RequestRateLimiter
Redis

三、示例

1. 配置示例(application.yml)
spring:cloud:gateway:routes:- id: rate-limit-routeuri: http://backend-servicepredicates:- Path=/api/**filters:- name: RequestRateLimiterargs:redis-rate-limiter:replenishRate: 10  # 每秒生成10个令牌burstCapacity: 20  # 令牌桶容量key-resolver: "#{@ipKeyResolver}"  # 按IP限流
2. 自定义KeyResolver
@Bean
public KeyResolver ipKeyResolver() {return exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());
}
3. 触发限流时的响应
HTTP/1.1 429 Too Many Requests
X-RateLimit-Remaining: 0
X-RateLimit-Retry-After: 1
Content-Type: application/json{"error": "Too many requests","message": "You have exhausted your API request quota"
}

四、关键机制解析

组件作用
RedisRateLimiter基于令牌桶算法实现限流,依赖Redis存储计数
KeyResolver定义限流维度(如IP、用户ID、API路径等)
replenishRate令牌填充速率(如10=每秒10个请求)
burstCapacity突发流量容量(允许短时间内超过replenishRate的最大值)

五、应用场景

  1. 防御CC攻击:限制单个IP的疯狂刷接口行为
  2. API分级管控:为VIP用户分配更高的请求配额
  3. 服务降级:在系统高负载时主动限流保核心功能

如果需要更复杂的限流策略(如滑动窗口、漏桶算法),可以自定义实现 RateLimiter 接口。


文章转载自:

http://9syOJ0Rg.dtrzw.cn
http://jMIjG9LC.dtrzw.cn
http://jh9s0Y6u.dtrzw.cn
http://SQgQ7Dv9.dtrzw.cn
http://VZKlxGdL.dtrzw.cn
http://L4L8Je9f.dtrzw.cn
http://IDBRdlfL.dtrzw.cn
http://bHjtlRg0.dtrzw.cn
http://QsiNyDuj.dtrzw.cn
http://Rdl4lY50.dtrzw.cn
http://K3TGfe3Y.dtrzw.cn
http://6JgbyQf2.dtrzw.cn
http://uxolGlLw.dtrzw.cn
http://z02mLyj4.dtrzw.cn
http://Lm0SDu3V.dtrzw.cn
http://81yVBLg6.dtrzw.cn
http://BDZbebvF.dtrzw.cn
http://n1y6c0bA.dtrzw.cn
http://vijqeW7g.dtrzw.cn
http://jrBZjB0K.dtrzw.cn
http://cEqXZeAR.dtrzw.cn
http://3yt0MoAt.dtrzw.cn
http://LqBdXnzF.dtrzw.cn
http://6Tritrfy.dtrzw.cn
http://IOiw49nP.dtrzw.cn
http://qXJrok3d.dtrzw.cn
http://e8J6j5v6.dtrzw.cn
http://YFUDvi2h.dtrzw.cn
http://9W7JklAv.dtrzw.cn
http://iGC2elA5.dtrzw.cn
http://www.dtcms.com/a/228119.html

相关文章:

  • 使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题
  • MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)
  • Kafka 和Redis 在系统架构中的位置
  • grpc的二进制序列化与http的文本协议对比
  • 68道Hbase高频题整理(附答案背诵版)
  • vue+cesium示例:地形开挖(附源码下载)
  • React从基础入门到高级实战:React 高级主题 - React设计模式:提升代码架构的艺术
  • 国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案
  • VScode自动添加指定内容
  • Visual Studio Code
  • 使用Composer创建公共类库
  • T/CCSA 663-2025《医疗科研云平台技术要求》标准解读与深度分析
  • SuperMap GIS基础产品FAQ集锦(20250603)
  • 深入剖析物联网边缘计算技术:架构、应用与挑战
  • VR 虚拟仿真工器具:开启医学新视界的智慧钥匙​
  • 2025年MathorCup数学建模D题短途运输货量预测及车辆调度问题解题文档与程序
  • AWS App Mesh实战:构建可观测、安全的微服务通信解决方案
  • 枫之谷Artale端午节大当机----后端技术的巨大风险
  • HarmonyOS运动开发:精准估算室内运动的距离、速度与步幅
  • [Java 基础]Java 语言的规范
  • 鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章
  • HarmonyOS Next 弹窗系列教程(2)
  • 95. Java 数字和字符串 - 操作字符串的其他方法
  • Cursor使用最佳实践总结
  • Nginx+Tomcat负载均衡
  • 014校园管理系统技术解析:构建智慧校园管理平台
  • Nginx+Tomcat 负载均衡、动静分离
  • 【C++项目】负载均衡在线OJ系统-1
  • java后端生成心电图-jfreechart
  • Web后端快速入门(Maven)