Алгоритмы rate limiting в Go. Token bucket, sliding window.

Ответ

Token bucket: буфер токенов пополняется с заданной скоростью; запрос забирает токен; при отсутствии - отказ. В Go: golang.org/x/time/rate (Limiter с Allow, Reserve). Sliding window: счетчик запросов в окне; окно двигается. Реализация: хранить метки времени запросов или приближение (счетчик + время). Fixed window проще, но возможны всплески на границах. Для распределенного лимита - Redis с INCR и EXPIRE.

limiter := rate.NewLimiter(10, 20) // 10/sec, burst 20
if !limiter.Allow() { return ErrRateLimit }
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.