Vodniki

Kaj je omejevanje hitrosti? Preprost vodnik za gradnike aplikacij

Omejevanje hitrosti (rate limiting) je pravilo, ki omeji, koliko zahtev lahko nekdo pošlje sistemu v določenem času – na primer 5 poskusov prijave na minuto ali 100 klicev API-ja na uro. Ko je meja dosežena, nadaljnje zahteve zavrnemo (običajno z napako 429 Too Many Requests), dokler se časovno okno ne ponastavi. Tako aplikacije ščitimo pred zlorabo, preprečimo, da bi en požrešen uporabnik upočasnil vse ostale, in zaustavimo nenadzorovane stroške.

S omejevanjem hitrosti se srečate z dveh strani: storitve, ki jih kličete, omejujejo vas, vaša lastna aplikacija pa bi morala omejevati njene uporabnike.

Zakaj je omejevanje hitrosti pomembno, ko gradite z AI

Aplikacije, zgrajene z AI, se pogosto povezujejo s plačljivimi storitvami – modeli AI, e-pošto, SMS-om, zemljevidi – in vsak klic stane denar. Zato je omejevanje hitrosti hkrati varnostna in proračunska funkcija.

  • Nadzor stroškov. Če ima vaša aplikacija okence »vprašaj AI« in nobene omejitve, lahko bot čez noč pošlje tisoče zahtev. Plačate vsako od njih.
  • Varnost. Brez omejitve na obrazcu za prijavo lahko napadalec poskusi tisoče gesel za en račun. Omejitev nekaj poskusov na minuto to naredi nepraktično.
  • Ostajanje na spletu. Ena napačno delujoča skripta – včasih tudi vaša lastna koda v zanki – lahko preobremeni bazo podatkov in ugasne aplikacijo.
  • Spoštovanje omejitev drugih storitev. Če vaša aplikacija zunanji API kliče prepogosto, vi dobite napake 429, funkcije pa se pokvarijo za vaše uporabnike.

Gradniki z AI bodo zgradili, kar zahtevate. Če omejitev ne omenite, jih pogosto ni.

Vsakdanja primerjava

Pomislite na pravilo brezplačnih dolivanj v kavarni: »Eno brezplačno dolivanje na gosta na obisk.«

  • Nikomur ne preprečuje, da bi užival v kavi.
  • Preprečuje, da bi nekdo ves dan stal ob pultu in dolival kavo za celo pisarno.
  • Ko nekdo zahteva četrto dolivanje, natakar vljudno reče »zdaj ne« – to je ta 429.

Dobra omejitev je za običajne strank nevidna in opazi se le pri nekom, ki počne nekaj nenavadnega.

Kako deluje omejevanje hitrosti

Omejevalnik hitrosti potrebuje tri stvari:

DelVprašanje, na katero odgovarjaPrimeri
KdoČigave zahteve se štejejo?Po uporabniškem računu, po IP naslovu, po API ključu
KolikoKakšna je omejitev?5, 60, 1.000 zahtev
V kakšnem časuKakšno je časovno okno?Na sekundo, minuto, uro, dan

Ko prispe zahteva, aplikacija preveri število za tega »koga«. Pod mejo: zahteva gre skozi in števec se poveča. Čez mejo: zahteva se zavrne.

Obstaja nekaj običajnih načinov štetja:

MetodaKako delujeKompromis
Fiksno oknoŠtevec se ponastavi ob uri – npr. vsako minuto ob polni minutiPreprosto, a dovoli sunek na robu dveh oken
Drseče oknoPogleda zadnjih 60 sekund od zdajBolj gladko, malo več računanja
Žetonski koš (token bucket)Vsak uporabnik ima koš, ki se polni s stalno hitrostjo; vsaka zahteva porabi žetonDovoli kratke sunke, pri čemer povprečje ostane stabilno

Števci morajo biti shranjeni na hitrem in deljenem mestu. Na enem majhnem strežniku deluje pomnilnik. Ko aplikacija teče na več strojih, števec ponavadi živi v deljeni shrambi, kot sta Redis ali baza podatkov – sicer vsak stroj šteje zase in dejanska meja postane večkratnik.

Kako izgleda odgovor pri omejitvi

Ko je zahteva čez mejo, dober API odgovori z:

  • statusno kodo 429 Too Many Requests;
  • pogosto z glavo Retry-After, ki pove, koliko sekund počakati;
  • včasih z glavami, ki kažejo vašo mejo in koliko zahtev vam je v tem oknu še ostalo (imena se pri ponudnikih razlikujejo).

Vaša aplikacija se na 429 odzove tako, da počaka in poskusi pozneje – idealno z eksponentnim zakasnitvenim čakanjem (exponential backoff), kar pomeni, da po vsakem neuspelem poskusu počakate malo dlje (1 sekundo, nato 2, nato 4), namesto da storitev neprestano bombardirate.

Delovni primer: pomočnik za pisanje z AI

Recimo, da ste zgradili aplikacijo, v kateri uporabniki prilepijo besedilo in dobijo prepis z AI.

Brez omejitev: nekdo napiše skripto, ki čez noč pošlje 20.000 zahtev. Račun vašega ponudnika AI poskoči, vaš račun pa zadene lastno omejitev hitrosti pri ponudniku, zato pravi uporabniki vse dopoldne vidijo napake.

Z razumnimi omejitvami:

  1. Na prijavljenega uporabnika: 30 prepisov na uro v brezplačnem paketu, 300 v plačljivem. Čez mejo uporabnik vidi: »Dosegli ste omejitev za to uro. Poskusite čez 12 minut ali nadgradite.«
  2. Na IP naslov na obrazcu za prijavo: 5 prijav na uro, da boti ne ustvarjajo tisočev brezplačnih računov za obhod omejitve na uporabnika.
  3. Omejitev porabe, nastavljena v nadzorni plošči vašega ponudnika AI, kot zadnja obramba, če vse drugo odpove.
  4. Obravnava omejitev ponudnika: če ponudnik AI vrne 429, vaš strežnik počaka in poskusi enkrat ali dvakrat, nato pokaže prijazno sporočilo »zaseden, poskusite znova«.

Omejitve se preverjajo na strežniku. Omejitev, ki obstaja le v brskalniku – na primer onemogočanje gumba po 30 klikih – lahko zaobide vsak, ki pokliče vaš API neposredno.

Ključni pojmi

PojemPomen
Omejitev hitrosti (rate limit)Največje število zahtev, dovoljenih v časovnem oknu.
KvotaVečji obseg, ponavadi na dan ali mesec, včasih vezan na plačljiv paket.
429HTTP statusna koda za »preveč zahtev«.
Retry-AfterGlava odgovora, ki pove, koliko časa počakati pred ponovnim poskusom.
ThrottlingUpočasnjevanje ali zavračanje zahtev čez mejo. Pogosto uporabljeno kot sinonim.
Eksponentno čakanje (exponential backoff)Vse daljše čakanje med poskusi.
Sunek (burst)Kratek nalet mnogih zahtev naenkrat.
Napad z grobo silo (brute force)Poskušanje ogromnega števila gesel ali kod, dokler eno ne deluje.

Pogosta napačna razumevanja

  • »Omejevanje hitrosti je samo za velike aplikacije.« Majhne aplikacije so tarče, ker boti pregledujejo cel internet za odprte obrazce in konce AI. Strošek zlorabe ni odvisen od vaše velikosti.
  • »Dovolj je skriti gumb.« Omejitve v brskalniku so prijaznost, ne zaščita. Prave omejitve morajo veljati na strežniku.
  • »Omejitve po IP naslovu so vedno poštene.« Veliko ljudi si lahko deli en IP naslov – pisarna, šola, mobilno omrežje. Omejitve po uporabniku so pravičnejše, ko so ljudje prijavljeni.
  • »Napaka 429 pomeni, da je storitev pokvarjena.« Pomeni, da jo kličete preveč pogosto. Preverite svojo kodo za zanke in shranjujte v predpomnilnik rezultate, ki se redko spreminjajo – glejte kaj je predpomnjenje.
  • »Omejevanje hitrosti nadomesti omejitev porabe.« Uporabite obe. Omejitve v vaši aplikaciji so lahko polne napak; omejitev porabe pri ponudniku je vaša zadnja varovalka.

Kaj vprašati svojega gradnika z AI

  • »Dodaj omejevanje hitrosti na strani strežnika za prijavo, registracijo, ponastavitev gesla in konec za AI. Predlagaj razumne omejitve.«
  • »Vsakemu prijavljenemu uporabniku omeji [N] zahtev AI na uro in ob dosegu meje pokaži jasno sporočilo s časom čakanja.«
  • »Ko zunanji API vrne 429, poskusi znova z eksponentnim čakanjem do 3-krat, nato pokaži prijazno napako.«
  • »Kje so shranjeni števci omejitev? Ali bodo delovali, če aplikacija teče na več strojih?«
  • »Beleži vsakič, ko uporabnik ali IP naleti na omejitev, da lahko opazim zlorabo.«
  • »Katere zunanje storitve ta aplikacija kliče in kakšne so njihove omejitve hitrosti?«

Omejevanje hitrosti v Mythex

Mythexova dokumentacija je pri tem jasna za funkcije AI: omejitve hitrosti, varnost in nadzor stroškov v aplikacijah, ki jih gradite, so vaša stvar – glejte Gradnja aplikacije z AI. Agenta prosite, naj doda omejitve v istem sporočilu, v katerem zahtevate funkcijo. Pri paketu Pro se lahko objavljena storitev ob veliki obremenitvi razširi na do tri stroje (glejte omejitve gostovanja), zato zahtevajte števce, ki živijo v bazi podatkov, ne v pomnilniku enega strežnika.

Sorodno branje: kaj je API, kako uporabljati LLM API-je in kontrolni seznam varnosti za aplikacije, zgrajene z AI.

Vprašanja

Kaj je omejevanje hitrosti na kratko?

Omejevanje hitrosti je pravilo, ki omeji, koliko zahtev lahko uporabnik, naprava ali aplikacija pošlje v danem obdobju – na primer 5 poskusov prijave na minuto ali 100 klicev API-ja na uro. Zahteve čez mejo se zavrnejo, dokler se časovno okno ne ponastavi.

Kaj pomeni napaka 429 Too Many Requests?

HTTP statusna koda 429 pomeni, da ste poslali preveč zahtev v prekratkem času in ste zadeli omejitev hitrosti. Odgovor pogosto vsebuje glavo Retry-After, ki pove, koliko časa počakati. Rešitev je, da upočasnite, po premoru poskusite znova ali zmanjšate, kako pogosto vaša aplikacija kliče storitev.

Zakaj moja aplikacija z AI potrebuje omejevanje hitrosti?

Vsaka zahteva AI vas stane denar v tokenih. Brez omejitve lahko en uporabnik ali bot pošlje tisoče zahtev, poveča račun ali porabi kvoto ponudnika in tako za vse ugasne funkcijo. Omejitve na uporabnika ohranijo stroške predvidljive.

Ali je omejevanje hitrosti isto kot throttling?

Sta tesno povezana in pogosto uporabljena kot sinonima. Omejevanje hitrosti ponavadi pomeni zavračanje zahtev čez mejo, throttling pa lahko pomeni tudi upočasnitev ali čakalno vrsto namesto takojšnjega zavrnitve.

Ali omejevanje hitrosti ustavi napade DDoS?

Pomaga pri majhnih poplavah in zlorabah posameznih uporabnikov ali IP naslovov, vendar velik porazdeljen napad prihaja z mnogih naslovov hkrati. Zaščita pred tem se ponavadi izvaja na ravni omrežja ali CDN, preden promet doseže vašo aplikacijo.

Mythex · Pricing · Zgradite karkoli z AI · Predloge za spletna mesta in aplikacije · Mythex v primerjavi · Slovar pojmov gradnje aplikacij z AI · Brezplačna orodja za gradnjo aplikacij z AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)