Vodiči

Šta je rate limiting? Objašnjenje bez žargona za one koji prave aplikacije

Rate limiting je pravilo koje ograničava koliko zahtjeva neko može poslati sistemu u zadanom vremenu, na primjer 5 pokušaja prijave u minuti ili 100 API poziva na sat. Kad se dostigne limit, daljnji zahtjevi se odbijaju (obično greškom 429 Too Many Requests) dok se vremenski prozor ne resetuje. Štiti aplikacije od zloupotrebe, sprječava da jedan teški korisnik uspori stvari svima i zaustavlja troškove koji izmiču kontroli.

Susrećete se s rate limitingom sa dvije strane: servisi koje pozivate ograničavaju vas, a vaša aplikacija treba ograničavati svoje korisnike.

Zašto je rate limiting važan kad pravite uz AI

Aplikacije napravljene uz AI često se povezuju s plaćenim servisima: AI modeli, e-mail, SMS, mape. Svaki poziv košta novac. Zato je rate limiting i sigurnosna i budžetska funkcija.

  • Kontrola troškova. Ako vaša aplikacija ima kutiju „pitaj AI“ i nema limita, bot joj može poslati hiljade zahtjeva preko noći. Plaćate svaki od njih.
  • Sigurnost. Bez limita na formi za prijavu, napadač može isprobati hiljade lozinki za jedan nalog. Limit od nekoliko pokušaja u minuti to čini nepraktičnim.
  • Ostajanje online. Jedna loša skripta, ponekad i vaš vlastiti kod zaglavljen u petlji, može preopteretiti bazu i srušiti aplikaciju.
  • Poštovanje limita drugih servisa. Kad vaša aplikacija prečesto poziva vanjski API, vi dobijete 429 greške, a funkcije se pokvare za vaše korisnike.

AI alati će napraviti ono što tražite. Ako ne spomenete limite, često ih nema.

Analogija iz svakodnevnog života

Zamislite pravilo u kafiću o besplatnom dopunjavanju: „Jedno besplatno dopunjavanje po gostu po posjeti.“

  • Ne sprječava nikoga da uživa u kafi.
  • Sprječava jednu osobu da stoji na šanku cijeli dan i dopunjava termos za cijeli ured.
  • Kad neko zatraži četvrto dopunjavanje, konobar ljubazno kaže „ne sada“. To je 429.

Dobar rate limit je nevidljiv za obične kupce i primijeti ga samo neko ko radi nešto neobično.

Kako rate limiting radi

Rate limiter treba tri stvari:

DioNa koje pitanje odgovaraPrimjeri
KoČiji se zahtjevi broje?Po korisničkom nalogu, po IP adresi, po API ključu
KolikoKoliki je limit?5, 60, 1.000 zahtjeva
Za koje vrijemePreko kojeg prozora?U sekundi, minuti, satu, danu

Kad stigne zahtjev, aplikacija provjeri brojač za taj „ko“. Ako je ispod limita, zahtjev prolazi i brojač raste. Ako je preko limita, zahtjev se odbija.

Postoji nekoliko uobičajenih načina brojanja:

MetodaKako radiKompromis
Fiksni prozorBrojač se resetuje po satu, npr. svake minute tačnoJednostavno, ali dopušta nalet na granici dva prozora
Klizni prozorGleda posljednjih 60 sekundi od sadaGlatko, malo više računanja
Token bucketSvaki korisnik ima kantu koja se puni stalnom brzinom; svaki zahtjev uzima tokenDopušta kratke nalete uz stabilan prosjek

Brojači moraju biti spremljeni na brzom i zajedničkom mjestu. Na jednom malom serveru dovoljna je memorija. Kad aplikacija radi na više mašina, brojač obično živi u zajedničkom skladištu poput Redisa ili baze, inače svaka mašina broji posebno i stvarni limit postaje nekoliko puta veći.

Kako izgleda odgovor kad je limit dostignut

Kad je zahtjev preko limita, dobro ponašan API odgovara s:

  • Statusnim kodom 429 Too Many Requests.
  • Često zaglavljem Retry-After, koje kaže koliko sekundi treba čekati.
  • Ponekad zaglavljima koja pokazuju vaš limit i koliko zahtjeva vam je ostalo u ovom prozoru (nazivi variraju od provajdera do provajdera).

Vaša aplikacija treba na 429 odgovoriti čekanjem i ponovnim pokušajem kasnije, idealno s eksponencijalnim backoffom, što znači da se čeka malo duže nakon svakog neuspjelog pokušaja (1 sekunda, pa 2, pa 4), umjesto da se servis bombarduje.

Radni primjer: AI asistent za pisanje

Recimo da ste napravili aplikaciju u kojoj korisnici nalijepe tekst i dobiju AI prepis.

Bez limita: neko napiše skriptu koja pošalje 20.000 zahtjeva preko noći. Račun vašeg AI provajdera naraste, a vaš nalog dostigne vlastiti rate limit provajdera, pa pravi korisnici cijelo jutro vide greške.

Uz razumne limite:

  1. Po prijavljenom korisniku: 30 prepisa na sat u besplatnom paketu, 300 u plaćenom. Preko limita korisnik vidi: „Dostigli ste limit za ovaj sat. Pokušajte ponovo za 12 minuta ili nadogradite paket.“
  2. Po IP adresi na formi za registraciju: 5 registracija na sat, da botovi ne bi pravili hiljade besplatnih naloga i tako zaobišli limit po korisniku.
  3. Limit potrošnje postavljen u kontrolnoj tabli vašeg AI provajdera, kao posljednja linija odbrane ako sve ostalo zakaže.
  4. Rukovanje limitima provajdera: ako AI provajder vrati 429, vaš server čeka i pokuša još jednom ili dva puta, pa prikaže prijateljsku poruku „zauzeti smo, pokušajte ponovo“.

Limiti se provjeravaju na serveru. Limit koji postoji samo u pregledaču, na primjer onemogućavanje dugmeta nakon 30 klikova, može zaobići svako ko direktno zove vaš API.

Ključni pojmovi

PojamZnačenje
Rate limitMaksimalan broj zahtjeva dozvoljen u vremenskom prozoru.
KvotaVeća dozvola, često po danu ili mjesecu, ponekad vezana za plaćeni paket.
429HTTP statusni kod za „previše zahtjeva“.
Retry-AfterZaglavlje odgovora koje kaže koliko dugo čekati prije ponovnog pokušaja.
ThrottlingUsporavanje ili odbijanje zahtjeva preko limita. Često se koristi kao sinonim.
Eksponencijalni backoffSve duže čekanje između pokušaja.
Nalet (burst)Kratak skok mnogo zahtjeva odjednom.
Brute-force napadIsprobavanje ogromnog broja lozinki ili kodova dok jedan ne uspije.

Česte zablude

  • „Rate limiting je samo za velike aplikacije.“ Male aplikacije su također mete, jer botovi skeniraju cijeli internet tražeći otvorene forme i AI krajnje tačke. Cijena zloupotrebe ne zavisi od vaše veličine.
  • „Dovoljno je sakriti dugme.“ Limiti u pregledaču su ljubaznost, a ne zaštita. Pravi limiti moraju se provoditi na serveru.
  • „Limiti po IP adresi su uvijek pošteni.“ Mnogo ljudi dijeli jednu IP adresu: kancelarija, škola, mobilna mreža. Limiti po korisniku su pošteniji kad su ljudi prijavljeni.
  • „429 znači da je servis pokvaren.“ Znači da ga pozivate prečesto. Provjerite kod za petlje i keširajte rezultate koji se rijetko mijenjaju, pogledajte šta je keširanje.
  • „Rate limiting zamjenjuje limit potrošnje.“ Koristite oboje. Limiti u vašoj aplikaciji mogu imati greške; limit potrošnje kod provajdera je vaša rezerva.

Šta tražiti od vašeg AI alata

  • „Dodaj rate limiting na serveru za prijavu, registraciju, reset lozinke i AI krajnju tačku. Predloži razumne limite.“
  • „Ograniči svakog prijavljenog korisnika na [N] AI zahtjeva na sat i prikaži jasnu poruku s vremenom čekanja kad ga dostigne.“
  • „Kad vanjski API vrati 429, pokušaj ponovo s eksponencijalnim backoffom do 3 puta, pa prikaži prijateljsku grešku.“
  • „Gdje se čuvaju brojači rate limita? Hoće li raditi ako aplikacija radi na više mašina?“
  • „Bilježi svaki put kad korisnik ili IP dostigne limit, da mogu uočiti zloupotrebu.“
  • „Koje vanjske servise ova aplikacija poziva i koji su njihovi rate limiti?“

Rate limiting u Mythexu

Dokumentacija Mythexa je direktna po ovom pitanju za AI funkcije: rate limitima, sigurnosti i kontroli troškova u aplikacijama koje pravite upravljate vi. Pogledajte Izgradnju AI aplikacije. Zatražite limite u istoj poruci u kojoj tražite funkciju. Na Pro paketu objavljeni servis može raditi na do tri mašine kad je saobraćaj velik (pogledajte ograničenja hostinga), pa tražite brojače koji žive u bazi, a ne u memoriji jednog servera.

Srodno štivo: šta je API, kako koristiti LLM API-je i kontrolna lista sigurnosti za aplikacije napravljene uz AI.

Pitanja

Šta je rate limiting jednostavno rečeno?

Rate limiting je pravilo koje ograničava koliko zahtjeva korisnik, uređaj ili aplikacija mogu poslati u datom periodu, na primjer 5 pokušaja prijave u minuti ili 100 API poziva na sat. Zahtjevi preko limita se odbijaju dok se vremenski prozor ne resetuje.

Šta znači greška 429 Too Many Requests?

HTTP status 429 znači da ste poslali previše zahtjeva u prekratkom vremenu i dostigli rate limit. Odgovor često uključuje zaglavlje Retry-After koje kaže koliko dugo treba čekati. Rješenje je usporiti, pokušati ponovo nakon pauze ili smanjiti učestalost poziva servisu.

Zašto moja aplikacija sa AI-jem treba rate limiting?

Svaki AI zahtjev košta novac u tokenima. Bez limita, jedan korisnik ili bot može poslati hiljade zahtjeva, napraviti veliki račun ili potrošiti vašu kvotu kod provajdera, pa funkcija prestane raditi za sve. Limiti po korisniku drže troškove predvidivim.

Da li je rate limiting isto što i throttling?

Usko su povezani i često se koriste kao sinonimi. Rate limiting obično znači odbijanje zahtjeva preko limita, dok throttling može značiti i usporavanje ili stavljanje zahtjeva u red umjesto njihovog odmah odbijanja.

Da li rate limiting zaustavlja DDoS napade?

Pomaže protiv malih poplava i zloupotrebe od pojedinih korisnika ili IP adresa, ali veliki distribuirani napad dolazi s mnogo adresa istovremeno. Zaštita od tih napada obično se radi na mrežnom nivou ili na nivou CDN-a, prije nego što saobraćaj stigne do vaše aplikacije.

Mythex · Pricing · Izradite bilo šta uz AI · Šabloni za web stranice i aplikacije · Mythex u poređenju · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা 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 Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)