Class FixedWindowRateLimiter
java.lang.Object
tech.riemann.nif.web.ratelimit.FixedWindowRateLimiter
- All Implemented Interfaces:
RateLimiter
固定窗口限流器
核心思想: 1. 在固定时间窗口内计数 2. 超过阈值则拒绝请求 3. 窗口结束后重置计数
适用场景:简单限流,对精度要求不高的场景
缺点: - 窗口边界可能出现2倍流量(前一个窗口最后1秒 + 后一个窗口第1秒)
- Author:
- Kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription获取支持的限流算法booleantryAcquire(String key, double permitsPerSecond) 尝试获取许可(默认1秒窗口)booleantryAcquire(String key, int permits, long windowSizeMs) 尝试获取许可(自定义时间窗口)
-
Constructor Details
-
FixedWindowRateLimiter
public FixedWindowRateLimiter() -
FixedWindowRateLimiter
public FixedWindowRateLimiter(int maxKeys)
-
-
Method Details
-
tryAcquire
Description copied from interface:RateLimiter尝试获取许可(默认1秒窗口)- Specified by:
tryAcquirein interfaceRateLimiter- Parameters:
key- 限流keypermitsPerSecond- 每秒允许的请求数- Returns:
- 是否获取成功
-
tryAcquire
Description copied from interface:RateLimiter尝试获取许可(自定义时间窗口)- Specified by:
tryAcquirein interfaceRateLimiter- Parameters:
key- 限流keypermits- 时间窗口内允许的请求数windowSizeMs- 时间窗口大小(毫秒)- Returns:
- 是否获取成功
-
getAlgorithm
Description copied from interface:RateLimiter获取支持的限流算法- Specified by:
getAlgorithmin interfaceRateLimiter- Returns:
- 限流算法
-