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.