🟡 Средний · 2 очк. Безопасность
Зачем нужен rate limiting и как его обычно реализуют в Go?
A Для ускорения ответов сервера; реализуют через кеш в памяти
B Чтобы ограничить частоту запросов от клиента и защититься от DDoS и злоупотреблений
C Только для соблюдения лимитов внешних API; через очереди
D Для балансировки нагрузки между серверами
Объяснение вопроса

Rate limiting нужен, чтобы один клиент (или злоумышленник) не мог перегрузить сервер. Популярные схемы: token bucket, leaky bucket, скользящее окно.

limiter := rate.NewLimiter(rate.Every(time.Second), 10) // 10 запросов в секунду
if !limiter.Allow() {
    http.Error(w, "Too Many Requests", 429)
    return
}

Для распределенного сервиса счетчики хранят в Redis (INCR + EXPIRE). В Go часто используют golang.org/x/time/rate.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.