Skip to content

限流 ​

yeah-flowcontrol 提供注解式接口限流。它适合登录、验证码、上传和公开查询等需要控制请求频率的入口。

基本用法 ​

java
@RateLimit(
    groupType = GroupType.IP,
    limitGroupCount = 20,
    timeWindow = 60_000,
    description = "同一IP一分钟最多请求20次"
)

分组方式 ​

类型含义适用场景
NONE不分组整个接口统一统计
IP按来源 IP匿名登录、验证码、公开接口
CUSTOMSpEL 自定义分组用户名、业务主体、终端等维度

主要参数:

  • limitCount:整体限制数量。
  • limitGroup:允许的分组数量。
  • limitGroupCount:每个分组内数量。
  • timeWindow:时间窗口,单位毫秒。
  • bucketSize:窗口桶大小。
  • dynamicTimeWindow:是否使用动态时间窗口。
  • global:是否作为全局规则参与统计。
  • description:规则说明。

登录的两层保护 ​

管理后台登录当前包含:

  1. IP 维度接口限流,防止单一来源高频请求。
  2. 用户名 + 终端维度失败次数与临时锁定。

两者职责不同。解除登录限制只清理账号失败统计,不应关闭 IP 接口限流。

使用原则 ​

  • 匿名接口优先按 IP,再结合业务主体。
  • 已登录高价值操作可以按用户 ID 分组。
  • 不要把真实 Token、手机号等直接放进可读 Redis Key;必要时使用稳定摘要。
  • 限流异常应返回明确提示,但不要泄露内部计数细节。
  • 分布式部署必须确保所有实例共享同一计数存储。

当前边界

注解中的全局限流参数仍属于待完善能力。使用前以当前代码实现为准,不要只根据注解字段推断已经支持全部策略。

YeahBoot 官方技术文档