Dane podstawoweAPI

Limitowanie zapytań

Atomowe limity zapytań po stronie serwera. GCRA jednym poleceniem lub nazwane limitery z oknem przesuwnym, token bucket lub leaky bucket. Bez Lua.

atomowe polecenie na żądanie
1
algorytmy
4
skryptów Lua
0
Krok 1 z 5
Dozwolone

10 żądań na minutę dla użytkownika 42. Odpowiedź mówi: dozwolone, limit i ile zostało.

Przykładowa sesjaplaying
# Dozwolone
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

Animowany przegląd z prawdziwymi poleceniami HotKV i przykładowymi odpowiedziami. Kliknij dowolny krok, aby do niego przejść. Polecenia i odpowiedzi pozostają po angielsku, dokładnie tak, jak je wpisujesz i widzisz w HotKV.

Problem

API bez limitów jest o jednego źle zachowującego się klienta od awarii. Wykonanie kontroli w kodzie aplikacji oznacza odczyt, obliczenie i zapis, a równoległe żądania prześlizgują się w lukach między nimi. Wiele zespołów kończy, utrzymując skrypt Lua tylko po to, by uczynić to atomowym.

Jak radzi sobie z tym HotKV

GCRA.LIMIT decyduje i zapisuje w jednym kroku, więc równoległi klienci nie mogą obaj przejść na tym samym stanie, a limit odnawia się płynnie zamiast resetować się na granicach okien. Dla limitów zarządzanych po nazwie RATELIMIT.CREATE konfiguruje limiter z oknem przesuwnym, token bucket lub leaky bucket, ze statystykami tego, co dozwolił i odrzucił.

Krok po kroku

Co się dzieje, polecenie po poleceniu

  1. 01

    Dozwolone

    10 żądań na minutę dla użytkownika 42. Odpowiedź mówi: dozwolone, limit i ile zostało.

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

    Seria od bota

    Scraper zużywa swój zapas na szczyty, a potem dowiaduje się, jak długo czekać. Odrzucone żądanie niczego nie zmienia.

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

    Nazwany limiter dla planu

    Klienci planu darmowego dostają 100 żądań na minutę w oknie przesuwnym.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Żądanie ważone

    Endpoint eksportu kosztuje 20 jednostek, więc zużywa więcej limitu.

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

    Zobacz, co zrobił limiter

    Ustawienia, śledzone klucze i sumy dozwolonych i odrzuconych żądań.

    RATELIMIT.STATS free_plan
Gdzie się sprawdza

Scenariusze z życia

Publiczne API

Każdy klucz API dostaje limit zależny od planu, ze szczytami dla dobrze zachowujących się klientów i precyzyjnym Retry-After dla reszty.

Formularze logowania i rejestracji

Próby na IP i na konto są limitowane, aby spowolnić credential stuffing.

Wywołania wychodzące

Wywołania API partnera lub dostawcy LLM są utrzymywane poniżej ich limitu na wszystkich workerach floty.

Wbudowane

Co dostajesz

GCRA jednym poleceniem

Płynne odnawianie ze szczytami, atomowa kontrola i aktualizacja, czas ponowienia przy odmowie.

GCRA.LIMITGCRA.RESET

Nazwane limitery

Okno przesuwne, token bucket lub leaky bucket, tworzone raz i sprawdzane dla każdego klucza.

RATELIMIT.CREATERATELIMIT.CHECK

Żądania ważone

Kosztowne wywołania mogą liczyć się jako kilka żądań. GCRA.LIMIT przyjmuje liczbę, RATELIMIT.CHECK parametr COST.

COST

Statystyki

Sumy dozwolonych i odrzuconych dla każdego limitera.

RATELIMIT.STATS

Częste pytania

Czy potrzebuję skryptu Lua do limitowania zapytań?

Nie. Zarówno GCRA.LIMIT, jak i RATELIMIT.CHECK wykonują całą kontrolę jako jedno atomowe polecenie.

Którego powinienem użyć?

GCRA.LIMIT nie wymaga konfiguracji i działa w każdym planie. Nazwane limitery RATELIMIT.* dodają wybór algorytmu i statystyki i są częścią planów Performance i Scale.

Ile kosztuje odrzucone żądanie?

Nic. Odrzucone wywołanie GCRA zostawia limiter bez zmian, więc klient, który ponawia, nie jest dalej karany.

Powiązane przypadki użycia

Wypróbuj na własnym obciążeniu

HotKV mówi protokołem Redis, więc możesz skierować na niego istniejącego klienta i uruchomić te same polecenia.