Перейти к содержимому
Skip to content
← Все статьи

Стратегии ограничения частоты запросов для веб-API

Rate limiting контролирует, сколько запросов клиент может сделать к API документацию за определённый период. Защищает инфраструктуру от злоупотреблений, обеспечивает справедливое использование и предотвращает монополизацию ресурсов.

Зачем нужен rate limiting

Алгоритмы

Fixed Window

Подсчёт запросов в фиксированных окнах (например, за минуту). Сброс счётчика в начале окна.

Sliding Window Log

Хранит таймстамп каждого запроса. Считает за последние N секунд.

Sliding Window Counter

Гибрид: фиксированные окна с пропорциональным весом предыдущего. Если прошло 30% текущего окна — считаем 70% предыдущего + 100% текущего.

Token Bucket

Ведро наполняется токенами с постоянной скоростью. Каждый запрос потребляет токен. Пустое ведро = отказ. Позволяет контролируемые всплески.

Leaky Bucket

Запросы попадают в очередь и обрабатываются с фиксированной скоростью. Полная очередь = отброс.

Реализация на Redis

-- Sliding window counter (Lua-скрипт)
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local window = tonumber(ARGV[2])
local now = tonumber(ARGV[3])

redis.call('ZREMRANGEBYSCORE', key, 0, now - window)
local count = redis.call('ZCARD', key)

if count < limit then
    redis.call('ZADD', key, now, now .. math.random())
    redis.call('EXPIRE', key, window)
    return 0  -- разрешено
else
    return 1  -- ограничено
end

HTTP-заголовки ответа

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1679529600
Retry-After: 30

При ограничении — 429 Too Many Requests:

HTTP/1.1 429 Too Many Requests
Retry-After: 30
{"error": "Превышен лимит запросов. Повторите через 30 секунд."}

По чему ограничивать

Лучшие практики

Заключение

Rate limiting — необходимая инфраструктура для любого API. Начните со sliding window counter, реализуйте per-key лимиты и всегда сообщайте лимиты через заголовки. Хорошая реализация защищает сервис, сохраняя хороший developer experience.

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: Безопасность
Безопасность
Content Security Policy (CSP) — полное руководство по настройке
12.03.2026 · 14 просм.
Безопасность
Безопасность API: лучшие практики защиты
11.03.2026 · 15 просм.
Безопасность
WAF: что это и как защищает сайт
14.03.2026 · 13 просм.
Безопасность
Открытые порты сервера: как проверить и почему это важно для безопасности
13.03.2026 · 11 просм.