Leiðbeiningar

Hvað er hraðatakmörkun? Einföld leiðsögn fyrir smíði forrita

Hraðatakmörkun (rate limiting) er regla sem setur þak á hversu margar beiðnir einhver getur sent til kerfis á tilteknum tíma, til dæmis 5 innskráningartilraunir á mínútu eða 100 API-köll á klukkustund. Þegar mörkunum er náð eru frekari beiðnir hafnaðar (yfirleitt með villukóðanum 429 Too Many Requests) þar til tímabilið endurstillist. Hún verndar forrit gegn misnotkun, kemur í veg fyrir að einn mjög virkur notandi hægi á þjónustunni fyrir alla og stöðvar stjórnlausan kostnað.

Þú kemst í snertingu við hraðatakmörkun frá tveimur hliðum: þjónusta sem þú kallar á takmarkar þig, og þitt eigið forrit ætti að takmarka notendur sína.

Af hverju hraðatakmörkun skiptir máli þegar þú smíðar með gervigreind

Forrit sem smíðuð eru með gervigreind tengjast oft greiddri þjónustu, svo sem gervigreindarlíkönum, tölvupósti, SMS og kortaþjónustu, og hvert kall kostar peninga. Þess vegna er hraðatakmörkun bæði öryggiseiginleiki og fjárhagsleg vörn.

  • Stjórn á kostnaði. Ef forritið þitt er með reit fyrir „spyrja gervigreind“ og engin takmörk, getur vélmenni sent þúsundir beiðna yfir nótt. Þú borgar fyrir hverja þeirra.
  • Öryggi. Án takmarka á innskráningarformið getur árásarmaður prófað þúsundir lykilorða á einum aðgangi. Takmark upp á nokkrar tilraunir á mínútu gerir það óraunhæft.
  • Að halda sér uppi. Eitt handrit sem hagar sér illa, stundum þinn eigin kóði fastur í lykkju, getur ofhlaðið gagnagrunninn þinn og slökkt á forritinu.
  • Að virða takmörk annarra þjónusta. Þegar forritið þitt kallar of oft á utanaðkomandi API færðu sjálfur villurnar 429 og eiginleikar bila fyrir notendurna þína.

Smíðatól gervigreindar smíðar það sem þú biður um. Ef þú minnist ekki á takmörk eru þau oft látin vera.

Hversdagslíking

Hugsaðu um ókeypis áfyllingarreglu á kaffihúsi: „Ein ókeypis áfylling á hvern viðskiptavin í hverri heimsókn.“

  • Hún kemur ekki í veg fyrir að neinn njóti kaffisins.
  • Hún kemur í veg fyrir að einn maður standi við afgreiðsluna allan daginn og fylli á brúsa fyrir alla skrifstofuna.
  • Þegar einhver biður um fjórðu áfyllinguna segir afgreiðslufólkið kurteislega „ekki núna“. Það er 429.

Góð hraðatakmörkun er ósýnileg venjulegum viðskiptavinum og tekin eftir aðeins hjá þeim sem gerir eitthvað óvenjulegt.

Hvernig hraðatakmörkun virkar

Hraðatakmarkari þarf þrjá hluti:

ÞátturSpurningin sem hann svararDæmi
HverHvers beiðnir eru taldar?Á hvern notandareikning, á hverja IP-tölu, á hvern API-lykil
Hversu margarHver eru mörkin?5, 60, 1.000 beiðnir
Á hvaða tímaÁ hvaða tímabili?Á sekúndu, mínútu, klukkustund, dag

Þegar beiðni berst athugar forritið fjöldann fyrir þennan „hver“. Undir mörkunum fer beiðnin í gegn og talan hækkar. Yfir mörkunum er beiðnin hafnað.

Það eru nokkrar algengar aðferðir við talningu:

AðferðHvernig hún virkarMálamiðlun
Fast tímabil (fixed window)Talningin endurstillist á klukkunni, til dæmis á hverri mínútuEinföld, en leyfir sprengingu á mörkum tveggja tímabila
Rennandi tímabil (sliding window)Horfir á síðustu 60 sekúndur frá núnaJafnari, aðeins meiri útreikningur
Tókenfata (token bucket)Hver notandi hefur fötu sem fyllist með jöfnum hraða; hver beiðni tekur eitt tókenLeyfir stuttar sprengingar en heldur meðaltalinu stöðugu

Talningarnar þurfa að vera geymdar á stað sem er hraður og deilt. Á einum litlum þjóni dugar minnið. Þegar forritið keyrir á nokkrum vélum býr teljarinn yfirleitt í sameiginlegri geymslu eins og Redis eða gagnagrunninum, annars telur hver vél fyrir sig og raunveruleg mörk verða margfalt hærri.

Hvernig svar með hraðatakmörkun lítur út

Þegar beiðni er yfir mörkunum svarar vel hannað API á þennan hátt:

  • Stöðukóði 429 Too Many Requests.
  • Oft hausinn Retry-After, sem segir hve margar sekúndur á að bíða.
  • Stundum hausar sem sýna mörkin og hversu margar beiðnir eru eftir í þessu tímabili (heiti eru mismunandi eftir þjónustuveitum).

Forritið þitt ætti að bregðast við 429 með því að bíða og reyna aftur síðar, helst með veldisvaxandi bið (exponential backoff), það er að bíða lengur eftir hverja misheppnaða tilraun (1 sekúndu, svo 2, svo 4) í stað þess að berja á þjónustuna.

Dæmi: gervigreindarskrifaðstoðarmaður

Segjum að þú hafir smíðað forrit þar sem notendur líma texta og fá endurskrif með gervigreind.

Án takmarka: einhver skrifar handrit sem sendir 20.000 beiðnir yfir nótt. Reikningurinn frá gervigreindarþjónustunni hækkar og aðgangurinn þinn lendir í eigin hraðatakmörkum þjónustunnar, svo raunverulegir notendur sjá villur allan morguninn.

Með skynsamlegum takmörkum:

  1. Á hvern innskráðan notanda: 30 endurskrif á klukkustund í ókeypis áætluninni, 300 í greiddri. Yfir mörkunum sér notandinn: „Þú hefur náð takmarki þessarar klukkustundar. Reyndu aftur eftir 12 mínútur, eða uppfærðu.“
  2. Á hverja IP-tölu á skráningarforminu: 5 skráningar á klukkustund, til að stöðva vélmenni sem búa til þúsundir ókeypis aðganga til að komast framhjá takmörkum á hvern notanda.
  3. Útgjaldaþak stillt í mælaborði gervigreindarþjónustunnar, sem síðasta varnarlína ef allt annað bregst.
  4. Meðhöndlun takmarka þjónustunnar: ef gervigreindarþjónustan skilar 429 bíður þjónninn þinn og reynir aftur einu sinni eða tvisvar og sýnir síðan vinalegan skilaboð um að kerfið sé upptekið, reyndu aftur.

Takmörkin eru athuguð á þjóninum. Takmörk sem eru aðeins til í vafranum, til dæmis að slökkva á hnappnum eftir 30 smelli, er hægt að komast framhjá af hverjum sem kallar beint á API-ið þitt.

Helstu hugtök

HugtakMerking
Hraðatakmörk (rate limit)Hámarksfjöldi beiðna sem leyfður er á tímabili.
Kvóti (quota)Stærri heimild, oft á dag eða mánuð, stundum tengd greiddri áætlun.
429HTTP-stöðukóðinn fyrir „of margar beiðnir“.
Retry-AfterSvarhaus sem segir hve lengi á að bíða áður en reynt er aftur.
Inngjöf (throttling)Að hægja á eða hafna beiðnum umfram mörk. Oft notað sem samheiti.
Veldisvaxandi bið (exponential backoff)Að bíða sífellt lengur á milli tilrauna.
Sprenging (burst)Stutt hrina af mörgum beiðnum í einu.
Árás með handahófsleit (brute-force)Að prófa gríðarlegan fjölda lykilorða eða kóða þar til einn virkar.

Algengar ranghugmyndir

  • „Hraðatakmörkun er bara fyrir stór forrit.“ Lítil forrit eru líka skotmörk, því vélmenni skanna allt netið eftir opnum eyðublöðum og gervigreindarendapunktum. Kostnaður af misnotkun fer ekki eftir stærð þinni.
  • „Það nægir að fela hnappinn.“ Takmarkanir í vafranum eru kurteisi, ekki vörn. Raunveruleg takmörk verða að vera framfylgd á þjóninum.
  • „Takmörk á hverja IP-tölu eru alltaf sanngjörn.“ Margir geta deilt einni IP-tölu, til dæmis á skrifstofu, í skóla eða á farsímaneti. Takmörk á hvern notanda eru sanngjarnari þegar fólk er skráð inn.
  • „Villa 429 þýðir að þjónustan sé biluð.“ Hún þýðir að þú kallar á hana of oft. Athugaðu kóðann þinn fyrir lykkjum og geymdu niðurstöður sem breytast sjaldan í skyndiminni, sjá hvað er skyndiminni.
  • „Hraðatakmörkun kemur í stað útgjaldaþaks.“ Notaðu bæði. Takmörk í forritinu geta innihaldið villur; útgjaldaþak veitunnar er varaáætlunin þín.

Hvað þú átt að biðja smíðatólið um

  • „Bættu hraðatakmörkun á þjóni við innskráningu, skráningu, endurstillingu lykilorðs og gervigreindarendapunktinn. Stingdu upp á skynsamlegum mörkum.“
  • „Takmarkaðu hvern innskráðan notanda við [N] gervigreindarbeiðnir á klukkustund og sýndu skýr skilaboð með biðtímanum þegar það gerist.“
  • „Þegar utanaðkomandi API skilar 429 skaltu reyna aftur með veldisvaxandi bið allt að 3 sinnum og sýna síðan vinalega villu.“
  • „Hvar eru teljarar hraðatakmarkana geymdir? Virka þeir enn ef forritið keyrir á fleiri en einni vél?“
  • „Skráðu í hvert skipti sem notandi eða IP-tala nær mörkum, svo ég geti séð misnotkun.“
  • „Hvaða utanaðkomandi þjónustur kallar þetta forrit á og hver eru hraðatakmörk þeirra?“

Hraðatakmörkun í Mythex

Skjöl Mythex eru hreinskilin um þetta varðandi gervigreindareiginleika: hraðatakmörk, öryggi og kostnaðarstýring í forritum sem þú smíðar eru á þinni ábyrgð. Sjá smíði gervigreindarforrits. Biddu agentinn um takmörk í sömu skilaboðum og þú biður um eiginleikann. Á Pro getur birt þjónusta keyrt á allt að þremur vélum þegar umferðin er mikil (sjá takmörk hýsingar), svo biddu um teljara sem búa í gagnagrunninum en ekki í minni einnar þjónustuvélar.

Tengt efni: hvað er API, hvernig nota á LLM-forritaskil og öryggislisti fyrir forrit smíðuð með gervigreind.

Spurningar

Hvað er hraðatakmörkun í einföldu máli?

Hraðatakmörkun er regla sem setur þak á hversu margar beiðnir notandi, tæki eða forrit getur sent á tilteknu tímabili, til dæmis 5 innskráningartilraunir á mínútu eða 100 API-köll á klukkustund. Beiðnir umfram mörkin eru hafnaðar þar til tímabilið endurstillist.

Hvað þýðir villan 429 Too Many Requests?

HTTP-staðan 429 þýðir að þú hefur sent of margar beiðnir á of stuttum tíma og rekist á hraðatakmörk. Svarið inniheldur oft hausinn Retry-After sem segir hversu lengi á að bíða. Lagfæringin er að hægja á sér, reyna aftur eftir hlé eða draga úr því hversu oft forritið kallar á þjónustuna.

Af hverju þarf gervigreindarknúna forritið mitt hraðatakmörkun?

Sérhver beiðn til gervigreindar kostar þig peninga í táknum. Án takmarkana geta einn notandi eða vélmenni sent þúsundir beiðna, sett upp háan reikning eða klárað kvóta þjónustuveitunnar, og þannig slökkt á eiginleikanum fyrir alla. Takmörk á hvern notanda halda kostnaðinum fyrirsjáanlegum.

Er hraðatakmörkun það sama og inngjöf (throttling)?

Þetta tengist náið og er oft notað til skiptis. Hraðatakmörkun þýðir yfirleitt að hafna beiðnum umfram mörkin, en inngjöf getur líka þýtt að hægja á þeim eða setja þær í biðröð í stað þess að hafna þeim beint.

Stöðvar hraðatakmörkun DDoS-árásir?

Hún hjálpar gegn litlum flóðum og misnotkun frá einstökum notendum eða IP-tölum, en stór dreifð árás kemur frá mörgum vistföngum í einu. Vörn gegn þeim fer yfirleitt fram á netkerfis- eða CDN-stigi, áður en umferðin nær til forritsins þíns.

Mythex · Pricing · Smíðaðu hvað sem er með gervigreind · Sniðmát fyrir vefsíður og forrit · Mythex í samanburði · Orðasafn um forritasmíði með gervigreind · Ókeypis verkfæri fyrir forritasmíði með gervigreind · 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 Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)