Описание проекта
По алгоритмам хотим и вариант с корзиной токенов для сглаживания коротких всплесков, и счётчик со скользящим окном для точного учёта в пределах окна, выбираемые на уровне политики. Счётчики должны храниться в Redis, чтобы несколько узлов API видели одинаковую картину потребления без расхождений, а сама проверка добавляла лишь миллисекунду-две задержки. Помимо простых лимитов нужны полноценные уровни квот с месячными или суточными лимитами, учёт потребления по каждому ключу и способ возвращать вызывающей стороне остаток квоты. При превышении лимита сервис обязан отвечать статусом 429, отдавать стандартные заголовки лимитов, включая limit, remaining и reset, и добавлять подсказку Retry-After, чтобы корректные клиенты сами снижали нагрузку.
В поставку входят небольшая админ-панель или формат конфигурации для описания тарифов и привязки ключей, хранилище метрик для биллинга и аналитики, а также понятная документация. Расскажите, как вы планируете атомарные операции в Redis, как избегаете гонок при высокой конкурентности и как будете нагрузочно тестировать ограничитель до вывода в бой.
— Политики на ключ с алгоритмами корзины токенов и скользящего окна
— Уровни квот с суточными и месячными лимитами
— Общие счётчики на Redis с минимальной добавленной задержкой
— Учёт потребления и отчёты для биллинга
— Корректные ответы 429 с заголовками limit, remaining, reset и Retry-After
— Админ-конфиг тарифов и привязки ключей, документация и нагрузочные тесты