advanced

Rate limiting

Защищайте сервисы per-user, per-IP лимитами, token bucket, sliding window и распределёнными стратегиями.

Rate limiting защищает сервисы, ограничивая запросы per user, IP, API key или tenant — token bucket, leaky bucket, fixed window или sliding window. Распределённые лимиты нуждаются в shared counters (Redis) и аккуратной синхронизации времени.

| Стратегия | Поведение | |-----------|-----------| | Token bucket | Допускает burst до размера bucket | | Sliding window | Плавнее fixed window за минуту | | Per-tenant | Справедливость в multi-tenant SaaS | | Global | Защита shared dependencies |

Возвращайте **429** с `Retry-After` и стабильным телом ошибки. Лимиты на edge (API gateway, CDN) и на дорогих internal endpoints.

На интервью: token bucket vs sliding window; race conditions distributed limit; отличие от throttling очередей; UX для ограниченных клиентов.

Типовые ошибки: лимиты только на edge; per-IP наказывает NAT; нет observability кого throttle'ят.

Компромисс — защита стабильности против блокировки легитимного burst.

Чеклист:

  • Лимиты на edge и hot internal paths.
  • Shared store для multi-instance.
  • Метрики отказов.
  • Лимиты в API contracts.