Недавно в одном стартапе команда развернула новый API без rate limiting. За три часа бот-скрипт сломался и прислал 12 миллионов запросов. Сервисы легли, база данных загорелась (образно), трафик клиентов ушёл. История банальна, повторяется еженедельно в разных командах. Почему? Потому что rate limiting — штука, которую замечают только когда всё падает. Давайте разбираться без лирики.
Что Нам Нужно На Самом Деле
Цели rate limiter:
- Защита инфраструктуры: чтобы один клиент не съел все ресурсы
- Предсказуемость latency: отсутствие внезапных 99-й перцентилей
- Контроль бизнес-логики: платные API, защита от спама
- Fairness: честный боевые условия для всех клиентов
Распространённая ошибка: считать rate limiting тривиальным if/else
. Начнём с выбора алгоритма.