网关限流功能使用

环境说明

依赖项版本
PIGX5.10
架构模式微服务

PIGX 提供对微服务级别的 在线动态限流 能力,支持按 QPS、IP 维度、总次数等进行流量限制。

操作入口

操作路径:pigx-ui → 路由管理 → 选择目标微服务

参数说明

配置项说明
IP 限制限制每个客户端 IP 的访问频率(单位:次/秒,QPS)
总数限制限制整个微服务服务的总访问 QPS(单位:次/秒)
  • 生效机制:保存即可生效 ,无需重启

原理解析

PIGX 的微服务限流能力底层基于 Spring Cloud Gateway 的 RedisRateLimiter 组件 实现,采用经典的 令牌桶(Token Bucket)算法 进行请求调度与限流。

1. Redis 作为分布式计数器

限流的核心数据(令牌数量、恢复速率等)全部存储在 Redis 中,使得所有网关节点共享同一限流状态,实现真正的 分布式限流

2. 令牌桶算法(Token Bucket)工作机制

  • 系统按照设定的速率(如每秒 100 次)向“桶”中加入令牌
  • 每个请求都会尝试从桶中获取 1 个令牌
  • 如果有令牌 → 请求放行
  • 如果令牌不足 → 返回 429 Too Many Requests
  • 桶的容量限制了瞬时突发流量
  • 令牌恢复速率保证整体 QPS 不超过阈值

这种算法能同时兼容 平稳限流一定程度的突发流量

3. 支持两类限流模式

  • IP 限流:按客户端 IP 单独创建令牌桶
  • 总数限流:整个服务共用一个令牌桶,控制整体 QPS

4. 实时生效、无需重启

由于限流规则由网关动态加载,变更后立即同步到 Redis,全网关节点立刻可见,实现毫秒级生效。