Определение простыми словами
Ratelimit (ограничение скорости) — это технология, которая позволяет контролировать, сколько запросов или операций может выполнить пользователь или система за определённый промежуток времени. Основная задача — предотвратить чрезмерную нагрузку на серверы или API, а также защитить сервисы от злоупотреблений и атак, например, DoS или brute force.
Проще говоря, если пользователь делает слишком много запросов за короткое время, ratelimit ограничит их количество, отклоняя лишние, тем самым обеспечивая стабильную работу всех пользователей.
Сравнение
| Метод | Описание | Преимущества | Ограничения |
|---|---|---|---|
| Fixed Window | Ограничение числа запросов в фиксированном временном окне (например, 100 запросов в минуту) | Прост в реализации | Может быть неравномерная нагрузка в конце окна |
| Sliding Log | Хранит список временных меток запросов и проверяет их за последние N секунд | Более равномерное распределение запросов | Требует больше памяти |
| Token Bucket | Позволяет накопление и расходование токенов, что даёт гибкость в ограничении | Поддерживает кратковременные всплески нагрузки | Сложнее в реализации |
| Leaky Bucket | Формирует равномерный поток запросов, очередь с постоянной скоростью | Плавное ограничение нагрузки | Менее гибкий при пиковых нагрузках |
Кейсы использования
- Защита API от превышения лимитов пользователями и ботами.
- Предотвращение DoS-атак и перегрузки веб-сервера.
- Ограничение количества повторных попыток аутентификации для защиты от подбора паролей.
- Регулирование пропускной способности при работе с облачными сервисами и микросервисами.
- Контроль ресурсов в многопользовательских приложениях и сервисах.
Негативный пример: Без правильной настройки ratelimit можно случайно заблокировать легитимного пользователя или снизить качество обслуживания при пиковых нагрузках.
Технические детали
Реализация ratelimit может производиться как на уровне веб-сервера, так и внутри приложений. Например, в nginx используется модуль limit_req_zone для ограничения запросов по IP-адресу или другим идентификаторам. Пример конфигурации:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location /api/ {
limit_req zone=one burst=5 nodelay;
}
}
}
Такие настройки контролируют не более 10 запросов в секунду с одним IP и позволяют кратковременные всплески до 15 запросов (burst=5).
Подробнее о защите от DDoS, nginx и firewall в нашем глоссарии.
🔥 Где это применяется
Частые вопросы
Зачем нужен ratelimit?
Ratelimit предотвращает перегрузку сервера и защищает от атак, ограничивая количество запросов за заданное время.
Где обычно применяется ratelimit?
В API, веб-серверах и сетевых устройствах для контроля доступа и предотвращения злоупотреблений.
Как отличается ratelimit от firewall?
Firewall блокирует или разрешает трафик на основе правил, ratelimit ограничивает частоту запросов для управления нагрузкой.