Rate Limiter 是一种限流算法,用于控制系统中的资源使用率。它可以用于限制用户的访问速度,防止系统被过度访问,从而导致系统崩溃或性能下降。 通常用于网络服务、 API 接口和数据库等领域,以确保系统的稳定性和可靠性。
原理
Rate limiter 的基本原理是通过设定一个访问速率的上限来限制资源的使用。当有多个用户同时访问系统时,Rate limiter 会根据预先设定的速率来限制每个用户的访问速度,从而保证系统的负载均衡和性能。 Rate limiter 可以通过多种方式实现,包括基于时间的限流、基于流量的限流和基于请求次数的限流等。不同的限流算法可以根据具体的应用场景和需求来选择。
基本使用
工具类
import com.google.common.util.concurrent.RateLimiter;
import org.springframework.stereotype.Service;
@Service
public class ApiRateLimiter {
/*每秒控制60个许可*/
RateLimiter rateLimiter = RateLimiter.create(60.0);
/**
* 获取令牌
*/
public boolean tryAcquire() {
return rateLimiter.tryAcquire();
}
}
调用控制
if (apiRateLimiter.tryAcquire()) {
// 有令牌才会执行方法
}