1. Tracks requests per client using their client ID
2. Enforces a configurable rate limit (e.g., 100 requests per minute)
3. Uses a sliding window algorithm (not fixed window — a burst at window boundaries shouldn't allow 2x the limit)
4. Is thread-safe for concurrent access from multiple goroutines/threads
5. Returns true from allow() if the request should be permitted, false if rate limited