NewSlidingWindowLimiter 创建滑动窗口限流器
(limit int, windowDuration time.Duration)
| 158 | |
| 159 | // NewSlidingWindowLimiter 创建滑动窗口限流器 |
| 160 | func NewSlidingWindowLimiter(limit int, windowDuration time.Duration) *SlidingWindowLimiter { |
| 161 | limiter := &SlidingWindowLimiter{ |
| 162 | windows: make(map[string]*window), |
| 163 | limit: limit, |
| 164 | window: windowDuration, |
| 165 | } |
| 166 | |
| 167 | // 启动清理 goroutine |
| 168 | go limiter.cleanup() |
| 169 | |
| 170 | return limiter |
| 171 | } |
| 172 | |
| 173 | // Allow 检查是否允许请求 |
| 174 | func (l *SlidingWindowLimiter) Allow(key string) bool { |
no test coverage detected