AOP + Redisson 实现接口级限流机制(注解式优雅接入)
🧭 前言
在高并发系统中,限流是保护后端服务的一道重要“保险”。尤其是开放的 API 接口,如果没有限流策略,容易被恶意调用,造成雪崩效应。
本篇将结合 Redis + Redisson,实现在 Spring Boot 项目中通过自定义注解优雅地接入接口限流。
🎯目标需求
-
✅ 基于注解
@RateLimiter控制接口访问频率; -
✅ 支持自定义限流时间窗口和请求次数;
-
✅ 支持基于 IP 或自定义 key 维度限流;
-
✅ 使用 Redisson 分布式锁/令牌桶机制,保证集群下生效;
-
✅ 超过限流阈值后返回友好提示,不继续执行业务逻辑。
🧱技术选型
-
Redis:作为分布式限流的数据中枢;
-
Redisson:提供分布式锁、RateLimiter 等限流组件;
-
AOP:统一拦截使用
@RateLimiter注解的方法; -
Spring Boot:快速整合和注解配置。
🔧注解定义
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface RateLimiter { String key() default ""; // 限流 key,支持 SpEL long time() default 60; // 时间窗口(单位:秒) long count() default 10; // 最大访问次数 boolean perIp() default true; // 是否按 IP 限流 }

浙公网安备 33010602011771号