Základní dataAPI

Rate limiting

Atomické rate limity na straně serveru. GCRA jedním příkazem, nebo pojmenované limitery s posuvným oknem, token bucketem či leaky bucketem. Bez Lua.

atomický příkaz na požadavek
1
algoritmy
4
skriptů v Lua
0
Krok 1 z 5
Povoleno

10 požadavků za minutu pro uživatele 42. Odpověď říká, že je povoleno, jaký je limit a kolik zbývá.

Ukázková relaceplaying
# Povoleno
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

Animovaný průvodce se skutečnými příkazy HotKV a ukázkovými odpověďmi. Kliknutím na kterýkoli krok na něj přeskočíte. Příkazy a odpovědi zůstávají anglicky, přesně tak, jak je v HotKV zadáváte a vidíte.

Problém

API bez limitů je jednoho špatně se chovajícího klienta od výpadku. Provádět kontrolu v kódu aplikace znamená čtení, výpočet a zápis a souběžné požadavky mezi nimi proklouznou. Mnoho týmů končí s údržbou skriptu v Lua jen proto, aby byla kontrola atomická.

Jak to řeší HotKV

GCRA.LIMIT rozhodne a zaznamená v jednom kroku, takže souběžní klienti nemohou oba projít nad stejným stavem, a limit se doplňuje plynule místo resetu na hranicích oken. Pro limity, které spravujete podle názvu, RATELIMIT.CREATE nastaví limiter s posuvným oknem, token bucketem nebo leaky bucketem se statistikami toho, co povolil a zamítl.

Krok za krokem

Co se děje, příkaz po příkazu

  1. 01

    Povoleno

    10 požadavků za minutu pro uživatele 42. Odpověď říká, že je povoleno, jaký je limit a kolik zbývá.

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

    Nápor od bota

    Scraper vyčerpá svůj příděl pro špičku a poté se dozví, jak dlouho má čekat. Zamítnutý požadavek nic nemění.

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

    Pojmenovaný limiter pro plán

    Zákazníci s bezplatným plánem dostanou 100 požadavků za minutu v posuvném okně.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Vážený požadavek

    Endpoint exportu stojí 20 jednotek, takže spotřebuje víc z přídělu.

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

    Podívejte se, co limiter udělal

    Nastavení, sledované klíče a součty povolených a zamítnutých požadavků.

    RATELIMIT.STATS free_plan
Kam to zapadá

Scénáře z praxe

Veřejná API

Každý API klíč dostane limit podle plánu, se špičkami pro slušně se chovající klienty a přesným Retry-After pro ostatní.

Formuláře přihlášení a registrace

Pokusy na IP adresu a na účet se omezují, aby se zpomalilo credential stuffing.

Odchozí volání

Volání API partnera nebo poskytovatele LLM se udržují pod jejich kvótou napříč všemi workery ve flotile.

Zabudováno

Co dostanete

GCRA jedním příkazem

Plynulé doplňování se špičkami, atomická kontrola a aktualizace, čas opakování při zamítnutí.

GCRA.LIMITGCRA.RESET

Pojmenované limitery

Posuvné okno, token bucket nebo leaky bucket, vytvořené jednou a kontrolované pro každý klíč.

RATELIMIT.CREATERATELIMIT.CHECK

Vážené požadavky

Náročná volání se mohou počítat jako několik požadavků. GCRA.LIMIT bere počet, RATELIMIT.CHECK parametr COST.

COST

Statistiky

Součty povolených a zamítnutých pro každý limiter.

RATELIMIT.STATS

Časté otázky

Potřebuji pro rate limiting skript v Lua?

Ne. GCRA.LIMIT i RATELIMIT.CHECK provedou celou kontrolu jako jeden atomický příkaz.

Který mám použít?

GCRA.LIMIT nepotřebuje žádné nastavení a funguje v každém plánu. Pojmenované limitery RATELIMIT.* přidávají volbu algoritmu a statistiky a jsou součástí plánů Performance a Scale.

Kolik stojí zamítnutý požadavek?

Nic. Zamítnuté volání GCRA nechá limiter beze změny, takže klient, který zkusí znovu, není penalizován dál.

Související případy použití

Vyzkoušejte to na své zátěži

HotKV mluví protokolem Redisu, takže na něj můžete nasměrovat stávajícího klienta a spustit tytéž příkazy.