Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
7
Проектирование и реализация ограничителя запросов
Условие задачи
API‑шлюз принимает POST и GET запросы, включающие такие компоненты как балансировщик нагрузки (LB), модуль авторизации (Auth), TLS и ограничитель запросов (RL).
Необходимо спроектировать и внедрить механизм ограничения запросов (Rate Limiter):
- Определить, где лучше разместить ограничитель — непосредственно в API‑шлюзе, перед каждым микросервисом или в виде глобального сервиса.
- Поддержать различные типы лимитов: по IP‑адресу, по пользователю (created_by), по конкретному endpoint.
- Выбрать подходящие алгоритмы ограничения: Token Bucket, Leaky Bucket, фиксированное/скользящее окно.
- Решить, где хранить состояние ограничителя — в оперативной памяти, в Redis или в распределённом хранилище.
- Описать поведение при превышении лимита: возврат HTTP‑кода 429, запись в лог, возможная блокировка клиента.