Как защитить публичный эндпоинт от перегрузки (rate limiting) с помощью алгоритма Token Bucket?

Token Bucket хранит запас токенов до ёмкости B и пополняет его со скоростью r. Запрос расходует токен: если его нет, запрос отклоняют или откладывают, ограничивая средний поток и всплески.

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

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

Token Bucket хранит запас токенов до ёмкости B и пополняет его со скоростью r. Запрос расходует токен: если его нет, запрос отклоняют или откладывают, ограничивая средний поток и всплески.

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

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

Token Bucket хранит запас токенов до ёмкости B и пополняет его со скоростью r. Запрос расходует токен: если его нет, запрос отклоняют или откладывают, ограничивая средний поток и всплески.

При запросе вычисляют tokens = min(B, tokens + r * elapsed), затем атомарно проверяют и уменьшают баланс. Ключ лимита выбирают по пользователю, API-ключу или сочетанию признаков; один IP плохо различает пользователей за NAT. Для нескольких экземпляров нужен общий атомарный счётчик или распределённая схема с оговорённой точностью. Возвращайте 429 и понятное время повтора. Лимит не заменяет ограничение параллельных тяжёлых операций, размера запроса и таймаутов; отдельно определите поведение при отказе хранилища лимитов.

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

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

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

Подробнее