Class TokenBucketRateLimiter
java.lang.Object
tech.riemann.nif.web.ratelimit.TokenBucketRateLimiter
- All Implemented Interfaces:
RateLimiter
令牌桶限流器
核心思想: 1. 系统以恒定速率生成令牌 2. 请求需要获取令牌才能执行 3. 桶满时丢弃新令牌 4. 允许一定程度的突发流量
适用场景:API接口限流,允许短时间内的突发请求
- 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
-
TokenBucketRateLimiter
public TokenBucketRateLimiter() -
TokenBucketRateLimiter
public TokenBucketRateLimiter(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:
- 限流算法
-