在高并发的应用场景下,合理的限流策略是保证系统稳定性的重要手段之一。限流可以防止系统资源被耗尽,避免雪崩效应的发生。本文将介绍如何使用 Spring AOP 和 Guava RateLimiter 实现API限流,并支持自定义限流超时时间。
引入依赖
首先,需要在 pom.xml 中引入 Guava 依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
定义注解
其次,定义一个 @ApiRateLimit
注解,在需要限流的方法上标注该注解:
import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ApiRateLimit {