Назад к задачам
Junior — Senior
7

Проектирование и реализация ограничителя запросов

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

API‑шлюз принимает POST и GET запросы, включающие такие компоненты как балансировщик нагрузки (LB), модуль авторизации (Auth), TLS и ограничитель запросов (RL).

Необходимо спроектировать и внедрить механизм ограничения запросов (Rate Limiter):

  • Определить, где лучше разместить ограничитель — непосредственно в API‑шлюзе, перед каждым микросервисом или в виде глобального сервиса.
  • Поддержать различные типы лимитов: по IP‑адресу, по пользователю (created_by), по конкретному endpoint.
  • Выбрать подходящие алгоритмы ограничения: Token Bucket, Leaky Bucket, фиксированное/скользящее окно.
  • Решить, где хранить состояние ограничителя — в оперативной памяти, в Redis или в распределённом хранилище.
  • Описать поведение при превышении лимита: возврат HTTP‑кода 429, запись в лог, возможная блокировка клиента.