NewLimiterFromConfig 从配置创建限流器
(config Config)
| 93 | |
| 94 | // NewLimiterFromConfig 从配置创建限流器 |
| 95 | func NewLimiterFromConfig(config Config) Limiter { |
| 96 | if config.Algorithm == "sliding_window" { |
| 97 | return NewSlidingWindowLimiter(config.RequestsPerIP, config.WindowSize) |
| 98 | } |
| 99 | |
| 100 | // 默认使用令牌桶 |
| 101 | rate := config.RequestsPerIP / int(config.WindowSize.Seconds()) |
| 102 | if rate == 0 { |
| 103 | rate = 1 |
| 104 | } |
| 105 | capacity := config.BurstSize |
| 106 | if capacity == 0 { |
| 107 | capacity = config.RequestsPerIP |
| 108 | } |
| 109 | |
| 110 | return NewTokenBucketLimiter(rate, capacity, config.WindowSize) |
| 111 | } |
no test coverage detected