Базові даніAPI

Обмеження частоти запитів

Атомарні серверні обмеження частоти. GCRA однією командою або іменовані обмежувачі зі ковзним вікном, token bucket чи leaky bucket. Lua не потрібен.

атомарна команда на запит
1
алгоритми
4
скриптів Lua
0
Крок 1 з 5
Дозволено

10 запитів на хвилину для користувача 42. Відповідь повідомляє: дозволено, ліміт і скільки лишилося.

Приклад сесіїplaying
# Дозволено
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

Анімований покроковий розбір з реальними командами HotKV і прикладами відповідей. Натисніть будь-який крок, щоб перейти до нього. Команди та відповіді залишаються англійською, так само, як ви вводите й бачите їх у HotKV.

Проблема

API без обмежень відділяє від збою один клієнт, що поводиться неправильно. Перевірка в коді застосунку означає читання, обчислення і запис, а паралельні запити проскакують у проміжках між ними. Багато команд зрештою підтримують скрипт Lua лише для того, щоб зробити це атомарним.

Як це вирішує HotKV

GCRA.LIMIT вирішує й записує одним кроком, тож паралельні клієнти не можуть обидва пройти на тому самому стані, а ліміт поповнюється плавно, а не скидається на межах вікон. Для лімітів, якими ви керуєте за іменем, RATELIMIT.CREATE налаштовує обмежувач зі ковзним вікном, token bucket чи leaky bucket зі статистикою дозволеного й відхиленого.

Крок за кроком

Що відбувається, команда за командою

  1. 01

    Дозволено

    10 запитів на хвилину для користувача 42. Відповідь повідомляє: дозволено, ліміт і скільки лишилося.

    GCRA.LIMIT ratelimit:user:42 60000 10
  2. 02

    Сплеск від бота

    Скрейпер вичерпує свій дозвіл на сплеск, і йому кажуть, скільки чекати. Відхилений запит нічого не змінює.

    GCRA.LIMIT ratelimit:bot:7 60000 10
  3. 03

    Іменований обмежувач для плану

    Клієнти безкоштовного плану отримують 100 запитів на хвилину у ковзному вікні.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Запит із вагою

    Кінцева точка експорту коштує 20 одиниць, тож вона використовує більше дозволу.

    RATELIMIT.CHECK free_plan customer:881 COST 20
  5. 05

    Подивіться, що зробив обмежувач

    Налаштування, відстежувані ключі та підсумки дозволених і відхилених запитів.

    RATELIMIT.STATS free_plan
Де це доречно

Реальні сценарії

Публічні API

Кожен ключ API отримує ліміт за планом, зі сплесками для добросовісних клієнтів і точним Retry-After для решти.

Форми входу та реєстрації

Спроби на IP і на акаунт обмежуються, щоб уповільнити credential stuffing.

Вихідні виклики

Виклики API партнера чи провайдера LLM тримаються нижче їхньої квоти в усіх воркерах парку.

Вбудовано

Що ви отримуєте

GCRA однією командою

Плавне поповнення зі сплесками, атомарні перевірка й оновлення, час повтору при відмові.

GCRA.LIMITGCRA.RESET

Іменовані обмежувачі

Ковзне вікно, token bucket чи leaky bucket, створені раз і перевіряються для кожного ключа.

RATELIMIT.CREATERATELIMIT.CHECK

Запити з вагою

Дорогі виклики можуть рахуватися як кілька запитів. GCRA.LIMIT приймає лічильник, RATELIMIT.CHECK значення COST.

COST

Статистика

Підсумки дозволеного й відхиленого для кожного обмежувача.

RATELIMIT.STATS

Поширені запитання

Чи потрібен мені скрипт Lua для обмеження частоти?

Ні. І GCRA.LIMIT, і RATELIMIT.CHECK виконують усю перевірку однією атомарною командою.

Що мені використовувати?

GCRA.LIMIT не потребує налаштування й працює на кожному плані. Іменовані обмежувачі RATELIMIT.* додають вибір алгоритму та статистику й входять до планів Performance і Scale.

Скільки коштує відхилений запит?

Нічого. Відхилений виклик GCRA не змінює обмежувач, тож клієнт, що повторює спробу, не штрафується далі.

Пов'язані сценарії використання

Спробуйте на власному навантаженні

HotKV розмовляє протоколом Redis, тож ви можете направити на нього наявний клієнт і виконувати ті самі команди.