Rate Limiting ni Nini? Mwongozo wa Kueleweka kwa Wajenzi wa Apps
Rate limiting ni kanuni inayozuia idadi ya maombi ambayo mtu anaweza kutuma kwenye mfumo ndani ya muda uliowekwa — kwa mfano, majaribio 5 ya kuingia kwa dakika, au miito 100 ya API kwa saa. Kikomo kikifikiwa, maombi zaidi yanakataliwa (kwa kawaida na msimbo wa hitilafu 429 Too Many Requests) hadi dirisha la muda liweke upya. Inalinda apps dhidi ya matumizi mabaya, inazuia mtumiaji mmoja mzito asipunguze kasi kwa kila mtu, na inazuia gharama zisizodhibitika.
Unakutana na rate limiting kutoka pande mbili: huduma unazoita zinakuwekea kikomo wewe, na app yako yenyewe inapaswa kuwawekea kikomo watumiaji wake.
Kwa nini rate limiting ni muhimu unapojenga na AI
Apps zilizojengwa kwa AI mara nyingi huunganishwa na huduma zinazolipiwa — modeli za AI, barua pepe, SMS, ramani — na kila wito unagharimu pesa. Hiyo inafanya rate limiting kuwa kipengele cha usalama na kipengele cha bajeti kwa wakati mmoja.
- Kudhibiti gharama. Ikiwa app yako ina kisanduku cha "uliza AI" bila kikomo, roboti inaweza kutuma maelfu ya maombi usiku mmoja. Unalipia kila moja.
- Usalama. Bila kikomo kwenye fomu ya kuingia, mshambuliaji anaweza kujaribu nywila maelfu dhidi ya akaunti moja. Kikomo cha majaribio machache kwa dakika kinafanya hilo lisiwezekane.
- Kubaki mtandaoni. Script moja inayoharibika — wakati mwingine msimbo wako mwenyewe ukiwa kwenye mzunguko usioisha — inaweza kuzidisha hifadhidata yako na kusimamisha app nzima.
- Kuheshimu vikomo vya huduma nyingine. App yako ikiita API ya nje mara nyingi mno, wewe ndiye unapata makosa ya 429, na vipengele vinavunjika kwa watumiaji wako.
Wajenzi wa AI watajenga kile unachoomba. Usipotaja vikomo, mara nyingi huachwa.
Mfano wa kila siku
Fikiria sera ya kujaza kahawa bure ya mgahawa: "Kujaza bure mara moja kwa kila mteja kwa kila ziara."
- Haimzuii mtu yeyote kufurahia kahawa.
- Inamzuia mtu mmoja kusimama kwenye kaunta siku nzima akijaza thermos ya ofisi nzima.
- Mteja akiomba kujazwa kwa mara ya nne, mhudumu anasema kwa adabu "si sasa" — hiyo ndiyo
429.
Kikomo kizuri hakionekani kwa wateja wa kawaida na kinaonekana tu kwa anayefanya kitu kisicho cha kawaida.
Jinsi rate limiting inavyofanya kazi
Kikomo cha rate kinahitaji vitu vitatu:
| Sehemu | Swali linalojibu | Mifano |
|---|---|---|
| Nani | Maombi ya nani yanahesabiwa? | Kwa akaunti ya mtumiaji, kwa anwani ya IP, kwa ufunguo wa API |
| Kiasi gani | Kikomo ni kipi? | 5, 60, 1,000 maombi |
| Kwa muda gani | Ndani ya dirisha lipi? | Kwa sekunde, dakika, saa, siku |
Ombi linapofika, app huangalia hesabu ya "nani" huyo. Chini ya kikomo: ombi linapita na hesabu inaongezeka. Juu ya kikomo: ombi linakataliwa.
Kuna njia chache za kawaida za kuhesabu:
| Njia | Inavyofanya kazi | Biashara-off |
|---|---|---|
| Dirisha lisilobadilika (fixed window) | Hesabu inaweka upya kwenye saa — kwa mfano kila dakika kwenye dakika | Rahisi, lakini inaruhusu mlipuko kwenye mpaka wa madirisha mawili |
| Dirisha linalosonga (sliding window) | Inaangalia sekunde 60 zilizopita kutoka sasa | Laini zaidi, kazi kidogo zaidi ya kukokotoa |
| Token bucket | Kila mtumiaji ana ndoo inayojazwa kwa kasi thabiti; kila ombi linatumia token moja | Inaruhusu milipuko mifupi huku wastani ukibaki thabiti |
Hesabu zinahitaji kuhifadhiwa mahali pa haraka na panaposhirikishwa. Kwenye seva moja ndogo, kumbukumbu (memory) inatosha. App ikishaendeshwa kwenye mashine kadhaa, kaunta kwa kawaida huishi kwenye hifadhi inayoshirikishwa kama Redis au hifadhidata, vinginevyo kila mashine inahesabu peke yake na kikomo halisi kinakuwa mara kadhaa juu zaidi.
Jinsi jibu la kikomo linavyoonekana
Ombi likizidi kikomo, API nzuri hujibu kwa:
- Msimbo wa hali
429 Too Many Requests. - Mara nyingi kichwa cha
Retry-After, kinachoonyesha sekunde ngapi za kusubiri. - Wakati mwingine vichwa vinavyoonyesha kikomo chako na maombi mangapi bado unayo kwenye dirisha hili (majina hutofautiana kati ya watoa huduma).
App yako inapaswa kujibu 429 kwa kusubiri na kujaribu tena baadaye — ikiwezekana kwa exponential backoff, yaani kusubiri kidogo zaidi baada ya kila jaribio lililoshindwa (sekunde 1, kisha 2, kisha 4) badala ya kuigonga huduma mfululizo.
Mfano kamili: msaidizi wa uandishi wa AI
Sema umejenga app ambapo watumiaji wanabandika maandishi na kupata urekebishaji wa AI.
Bila vikomo: mtu anaandika script inayotuma maombi 20,000 usiku mmoja. Bili ya mtoa huduma wako wa AI inapanda, na akaunti yako inagonga kikomo cha rate cha mtoa huduma mwenyewe, kwa hiyo watumiaji halisi wanaona makosa asubuhi nzima.
Na vikomo vya busara:
- Kwa kila mtumiaji aliyeingia: marekebisho 30 kwa saa kwenye mpango wa bure, 300 kwenye mpango wa kulipia. Akizidi kikomo, mtumiaji anaona: "Umefikia kikomo cha saa hii. Jaribu tena baada ya dakika 12, au boresha mpango."
- Kwa kila anwani ya IP kwenye fomu ya kujisajili: usajili 5 kwa saa, ili kuzuia roboti zisitengeneze maelfu ya akaunti za bure kukwepa kikomo cha mtumiaji.
- Kikomo cha matumizi kilichowekwa kwenye dashibodi ya mtoa huduma wako wa AI, kama ngao ya mwisho ikishindikana kila kitu kingine.
- Kushughulikia vikomo vya mtoa huduma: mtoa huduma akirudisha 429, seva yako inasubiri na kujaribu tena mara moja au mbili, kisha inaonyesha ujumbe wa kirafiki wa "tuna shughuli nyingi, jaribu tena."
Vikomo vinakaguliwa kwenye seva. Kikomo kinachoishi kwenye kivinjari pekee — kwa mfano kuzima kitufe baada ya kubofya mara 30 — kinaweza kupitishwa na yeyote anayeita API yako moja kwa moja.
Istilahi muhimu
| Neno | Maana yake |
|---|---|
| Rate limit | Idadi ya juu ya maombi yanayoruhusiwa ndani ya dirisha la muda. |
| Quota | Mgao mkubwa zaidi, mara nyingi kwa siku au mwezi, wakati mwingine unaofungamana na mpango wa kulipia. |
| 429 | Msimbo wa hali wa HTTP wa "maombi mengi mno." |
| Retry-After | Kichwa cha jibu kinachoonyesha muda wa kusubiri kabla ya kujaribu tena. |
| Throttling | Kupunguza kasi au kukataa maombi yanayozidi kikomo. Mara nyingi hutumika kama kisawe. |
| Exponential backoff | Kusubiri kwa muda unaoongezeka hatua kwa hatua kati ya majaribio. |
| Burst | Mlipuko mfupi wa maombi mengi kwa wakati mmoja. |
| Brute-force attack | Kujaribu nywila au misimbo kwa wingi mkubwa hadi moja ifanye kazi. |
Dhana potofu za kawaida
- "Rate limiting ni kwa apps kubwa tu." Apps ndogo nazo ni shabaha, kwa sababu roboti huchunguza mtandao mzima kutafuta fomu na miisho ya AI iliyo wazi. Gharama ya matumizi mabaya haitegemei ukubwa wako.
- "Kuficha kitufe kunatosha." Vikomo vya upande wa kivinjari ni hisani, si ulinzi. Vikomo halisi lazima vitekelezwe kwenye seva.
- "Vikomo kwa IP huwa vya haki kila wakati." Watu wengi wanaweza kushiriki IP moja — ofisi, shule au mtandao wa simu. Vikomo kwa mtumiaji ni vya haki zaidi mara watu wakishaingia.
- "429 inamaanisha huduma imeharibika." Inamaanisha unaiita mara nyingi mno. Angalia msimbo wako kwa mizunguko, na hifadhi (cache) matokeo yasiyobadilika mara kwa mara — angalia caching ni nini.
- "Rate limiting inachukua nafasi ya kikomo cha matumizi." Tumia zote mbili. Vikomo kwenye app yako vinaweza kuwa na hitilafu; kikomo cha matumizi cha mtoa huduma ndicho ngao yako ya mwisho.
Unachoweza kumwomba kijenzi chako cha AI
- "Ongeza rate limiting ya upande wa seva kwenye kuingia, kujisajili, kuweka upya nywila na miisho ya AI. Pendekeza vikomo vya busara."
- "Mwekee kila mtumiaji aliyeingia maombi [N] ya AI kwa saa, na uonyeshe ujumbe wazi wenye muda wa kusubiri atakapofikia kikomo."
- "Mtoa huduma wa nje akirudisha 429, jaribu tena kwa exponential backoff hadi mara 3, kisha onyesha hitilafu ya kirafiki."
- "Kaunta za vikomo zinahifadhiwa wapi? Zitafanya kazi bado app ikiendeshwa kwenye mashine zaidi ya moja?"
- "Rekodi kila mara mtumiaji au IP anapofikia kikomo, ili niweze kutambua matumizi mabaya."
- "App hii inaita huduma gani za nje, na vikomo vyake vya rate ni vipi?"
Rate limiting katika Mythex
Nyaraka za Mythex ziko wazi kuhusu hili kwa vipengele vya AI: vikomo vya rate, usalama na udhibiti wa gharama kwenye apps unazojenga ni vyako kubuni — angalia Jenga app ya AI. Muulize wakala aongeze vikomo kwenye ujumbe uleule unapoomba kipengele. Kwenye Pro, huduma iliyochapishwa inaweza kuendeshwa kwenye mashine hadi tatu trafiki inapokuwa nzito (angalia Vikomo vya uendeshaji), kwa hiyo omba kaunta zinazoishi kwenye hifadhidata badala ya kumbukumbu ya seva moja.
Kusoma zaidi: API ni nini, jinsi ya kutumia API za LLM, na orodha ya usalama kwa apps zilizojengwa kwa AI.
Maswali
Rate limiting kwa maneno rahisi ni nini?
Rate limiting ni kanuni inayozuia idadi ya maombi ambayo mtumiaji, kifaa au app inaweza kutuma ndani ya kipindi fulani — kwa mfano, majaribio 5 ya kuingia kwa dakika au miito 100 ya API kwa saa. Maombi yanayozidi kikomo yanakataliwa hadi muda uishe.
Hitilafu ya 429 Too Many Requests inamaanisha nini?
Msimbo wa hali 429 unamaanisha ulituma maombi mengi sana kwa muda mfupi mno na umefikia kikomo cha rate. Jibu mara nyingi lina kichwa cha Retry-After kinachoonyesha muda wa kusubiri. Suluhisho ni kupunguza kasi, kujaribu tena baada ya kusimama, au kupunguza mara app yako inavyoita huduma.
Kwa nini app yangu inayotumia AI inahitaji rate limiting?
Kila ombi la AI linakugharimu pesa kwa tokens. Bila kikomo, mtumiaji mmoja au roboti inaweza kutuma maelfu ya maombi na kuongeza bili kubwa au kumaliza quota ya mtoa huduma, na kusimamisha kipengele kwa kila mtu. Vikomo kwa kila mtumiaji huweka gharama zinazotabirika.
Rate limiting ni sawa na throttling?
Zinahusiana sana na mara nyingi hutumika kwa kubadilishana. Rate limiting kwa kawaida inamaanisha kukataa maombi yanayozidi kikomo, wakati throttling inaweza pia kumaanisha kupunguza kasi au kuyapanga foleni badala ya kuyakataa moja kwa moja.
Je, rate limiting inazuia mashambulizi ya DDoS?
Inasaidia dhidi ya mafuriko madogo na matumizi mabaya kutoka kwa watumiaji mmoja mmoja au anwani za IP, lakini shambulio kubwa lililosambazwa linatoka kwenye anwani nyingi kwa wakati mmoja. Ulinzi dhidi ya hayo kwa kawaida hufanyika kwenye kiwango cha mtandao au CDN, kabla trafiki haijafika kwenye app yako.