Спроектируйте ограничение запросов по RPM для URL из очереди: лимит задаётся отдельно для каждого домена и считается в фиксированных минутных окнах. Как не превышать лимиты?

Перед отправкой атомарно резервируйте слот в счётчике «домен + минутное окно». Если лимит исчерпан, отложите URL до следующего окна, не отправляя запрос заранее.

Короткий ответ

Что ответить на собеседовании

Перед отправкой атомарно резервируйте слот в счётчике «домен + минутное окно». Если лимит исчерпан, отложите URL до следующего окна, не отправляя запрос заранее.

Подробный разбор

Ответ с пояснениями

Перед отправкой атомарно резервируйте слот в счётчике «домен + минутное окно». Если лимит исчерпан, отложите URL до следующего окна, не отправляя запрос заранее.

Все workers должны использовать один лимитер или согласованное хранилище. Проверка и увеличение счётчика выполняются одной операцией, например Lua-скриптом; время окна лучше брать у общего источника. Повторы и перенаправления на другой домен тоже учитываются по контракту. После резервирования отправляйте сразу: долго отложенный запуск может попасть в другое окно. Фиксированные окна допускают всплеск около границы двух минут — это свойство выбранного алгоритма, а не rolling RPM.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее