Что такое rate limiting?

Middle
1.1k просмотров
AFK Offer AI

Rate limiting — ограничение количества запросов от клиента за период времени. Защищает от DDoS, брутфорса и злоупотреблений API.

В Go стандартный подход — token bucket через golang.org/x/time/rate:

limiter := rate.NewLimiter(rate.Every(time.Second), 10) // 10 req/sec

func rateLimitMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if !limiter.Allow() { http.Error(w, "too many requests", 429) return } next.ServeHTTP(w, r) }) }

Для per-user лимитов хранят limiter в map по IP или user_id. В распределённых системах используют Redis (INCR с TTL или скрипт sliding window). Возвращай заголовки X-RateLimit-Remaining, чтобы клиент знал свой лимит.

Следующий вопрос

Что такое view в БД?