Qligħ:
- Jista 'jinterpreta limiti ta' veloċità (RPM/ITPM/OTPM) u 429 żball
- Timplimenta backoff esponenzjali u erġa' pprova b'retry-after
- Jikklassifika u jimmaniġġja b'mod korrett il-kodiċijiet ta' żball HTTP komuni (400/401/429/500/529)
F'ambjent ta 'produzzjoni, l-ebda API ma jirrispondi perfettament il-ħin kollu. Xi drabi tibgħat talbiet malajr wisq u tolqot il-limitu; kultant is-server ikun temporanjament okkupat; Xi drabi t-talba tiegħek hija żbaljata mill-bidu. Dak li jiddistingwi integrazzjoni solida minn tentattiv dilettanti huwa li tittratta dawn is-sitwazzjonijiet b'mod prevedittiv u awtomatikament. F'din l-unità ser titgħallem dwar il-limiti tar-rata (RPM/ITPM/OTPM), żball 429, ipprova mill-ġdid b'backoff esponenzjali, u klassifikazzjoni xierqa ta 'kodiċijiet ta' żball HTTP komuni. L-għan: li jinbena fluss tant robust li utent qatt ma jinduna bih.
X'inhuma l-Limiti tal-Veloċità?
Il-fornitur jillimita kemm xogħol jista' jagħmel swiċċ f'perjodu ta' żmien partikolari. Din il-protezzjoni; Jipproteġi kemm l-infrastruttura kif ukoll lilek minn splużjonijiet f'daqqa tal-ispejjeż. Hemm tliet tipi komuni ta' limiti:
- RPM (Talbiet Per Minuta): Numru ta' talbiet kull minuta.
- ITPM (Input Tokens Per Minute): Input token li jista 'jiġi pproċessat kull minuta.
- OTPM (Output Tokens Per Minute): Token tal-ħruġ li jista 'jiġi prodott kull minuta.
Jekk taqbeż xi wieħed minn dawn il-limiti, il-fornitur jirrifjuta t-talba u jirritorna kodiċi ta 'żball 429. Il-limiti ġeneralment ivarjaw skont il-livell tal-kont tiegħek (il-livell) u jistgħu jiżdiedu maż-żmien.
Tip: Tista' tara meta tkun qed toqrob il-limitu mill-headers tar-rispons. Ħafna mill-fornituri jirrappurtaw il-kwota li fadal tiegħek b'intestaturi bħal x-ratelimit-remaining-*. Il-monitoraġġ ta 'dawn il-valuri u throttle it-traffiku fuq quddiem huwa l-aktar mod matur biex tiġi evitata l-problema mingħajr ma tikseb 429.
429 u Ritraċċament Esponenzjali
429 (limitu tar-rata) huwa żball temporanju u li jista' jerġa' jipprova. It-tweġiba t-tajba hija li tistenna t-talba għal xi żmien u erġa' pprova. Imma stennija kostanti mhix biżżejjed; Jekk kulħadd jerġa' jipprova fl-istess ħin, il-limitu jerġa' jintlaħaq. Is-soluzzjoni hija backoff esponenzjali: iżid il-ħin ta 'stennija b'mod esponenzjali ma' kull tentattiv fallut.
# Prova loġika ta' backoff esponenzjali 1 → 429 → stenna 1 sek prova 2 → 429 → stenna 2 sek prova 3 → 429 → stenna 4 sek prova 4 → 429 → stenna 8 sek (+ "jitter" żgħir bl-addoċċ)... ċeda u jirrapporta wara l-aktar N provi
Iż-żieda ta 'ftit każwali (jitter) ma' dan tevita li t-talbiet jaħbtu meta jippruvaw jerġgħu jippruvaw fl-istess ħin. Barra minn hekk, ir-rispons 429 ħafna drabi jġorr header "erġa 'pprova wara": "erġa' pprova f'dawn il-bosta sekondi". Ir-rispett ta' dan it-titlu huwa aktar preċiż milli stennija bl-addoċċ.
Attenzjoni: Meta tikseb 429, "jisfurzarha billi tibgħat aktar talbiet" se tagħmel is-sitwazzjoni agħar; Il-limitu jkompli jimtela u l-ebda talba ma tgħaddi. Ir-rispons korrett huwa repli, mhux aċċelerazzjoni. Aħbar tajba: il-biċċa l-kbira tal-SDKs uffiċjali jerġgħu jippruvaw awtomatikament 429 u żbalji tas-server b'backoff — uża din l-imġieba tal-SDK qabel tinstallah manwalment.
Il-klassifikazzjoni tal-Kodiċi ta' Żball HTTP
Mhux kull żball huwa l-istess. Distinzjoni kritika: tista' terġa' tiġi ppruvata jew hija kwistjoni ta' talba/identità?
Kodiċi
Tifsira
Jista' jerġa' jiġi ppruvat?
rispons korrett
400
Talba mhux valida (żball fil-format/parametru)
le
Ikkoreġi t-talba; terġax tibgħat l-istess
401
Żball ta' awtentikazzjoni (ċavetta invalida/nieqsa)
le
Waħħal ċavetta/titolu
403
L-ebda awtorizzazzjoni (l-ebda aċċess għal mudell/karatteristika)
le
Iċċekkja l-permessi/l-ambitu
404
Mhux misjub (ID tal-mudell/endpoint mhux korrett)
le
ID/indirizz tal-mudell korrett
429
Limitu tal-veloċità inqabeż
Iva
Irtir + ipprova mill-ġdid wara
500
Żball tas-server
Iva
Erġa' pprova bl-irtir
529
Server mgħobbi żżejjed
Iva
Erġa' pprova bl-irtir
Regola tad-deheb: 429, 500 u 529 huma temporanji; Jiġi ppruvat mill-ġdid bl-irtirar. 400, 401, 403, 404 huma kwistjonijiet ta' talba/identità; Li terġa 'tipprova mhux se ssolviha, u taħli sforz. Il-kodiċi tiegħek għandu jiddistingwi bejn dawn iż-żewġ gruppi.
Pass pass: Sejħa Durabbli
- Ibgħat it-talba. Jekk tirnexxi, kompli.
- Ikklassifika l-kodiċi tal-iżball. Jista' jerġa' jiġi ppruvat?
- Jekk tista' tiġi ppruvata: segwi retry-after, applika backoff esponenzjali + jitter, ipprova numru limitat ta' drabi (eż. 5 max).
- Jekk ma ppruvawx: Waħħal (format/ċavetta) u waqqaf; Tirrepetix l-istess talba żbaljata fil-linja.
- Ikkunsidra li ċċedi. Jekk xorta ma rnexxiex wara n tentattivi, uri messaġġ edukat lill-utent u illoggja l-avveniment (tracking unit 11).
# Sejħa robusta pseudo-codedene = 0repeat: response = request_at () if response.success: ritorn rispons jekk response.code fi [429, 500, 529] u pprova < 5: stenna = retry_after ?? (2^pprova sek + jitter) sleep(stenna); ipprova += 1; git għal darb'oħra jekk response.code fi [400, 401, 403, 404]: save_error(rispons); return "it-talba trid tiġi ffissata" return "żball permanenti, ipprova aktar tard"
# Feedback edukat lill-utent (meta l-provi mill-ġdid ikunu eżawriti) "Jien okkupat bħalissa, ma stajtx nipproċessa t-talba tiegħek. Erġa' pprova dalwaqt, jew salvajt it-talba tiegħek, nerġa' nerġa' nerġa' għandkom meta tkun lesta."
Pront dgħajjef / Pront qawwi (hawn: disinn ta’ messaġġ ta’ żball)
# DGĦAJF (turi żball mhux ipproċessat lill-utent) "Żball 429: rate_limit_error"
# STRONG (faċli għall-utent, rassikuranti, li jissuġġerixxi azzjoni) "Kien hemm konġestjoni temporanja fis-sistema. Irċevejna t-talba tiegħek mingħajr periklu u qed terġa' tiġi ppruvata awtomatikament. Jekk riżultat ma jidhirx fi żmien ftit sekondi, tista' taġġorna l-paġna."
Il-kxif tal-iżball tekniku mhux ipproċessat lill-utent aħħari kemm idgħajjef il-fiduċja kif ukoll jista 'jkun vulnerabbiltà tas-sigurtà. Ikkategorizza l-iżbalji internament u agħti lill-utent messaġġ kalm u orjentat lejn l-azzjoni; ikteb biss id-dettall tekniku għar-rekord.
Tliet Każijiet Mini
Każ 1 — Dgħajsa ġġarraf fi splużjoni tat-traffiku. Bot tas-servizz tal-klijent irċieva 429 fi traffiku qawwi fil-jum tal-kampanja; Ma kien hemm l-ebda prova mill-ġdid fil-kodiċi, kull żball kien rifless direttament lill-utent bħala "żball". Huma żiedu retracement esponenzjali + retry-after; bl-istess traffiku, talbiet għaddew b'dewmien ta 'diversi sekondi, l-utent ma ra l-ebda żbalji.
Każ 2 — Nippruvaw 400 fil-linja. Integrazzjoni kienet qed tikseb 404 minħabba ID ta 'mudell invalidu, iżda kienet qed tittratta l-iżbalji kollha bħala "transitorji" u terġa' tipprova f'linja infinita; Il-log sar minfuħ u nħolqot tagħbija bla bżonn. Huma żiedu l-klassifikazzjoni ta 'żball: 404 huwa meqjus permanenti, il-linja titwaqqaf u l-ID tal-mudell hija kkoreġuta. Lezzjoni: terġax tipprova kull żball.
Każ 3 — Ġestjoni tal-limitu minn quddiem. Xogħol ta' arrikkiment tad-dejta kien għaddej kontinwament fil-limitu 429. Huma segwew l-header x-ratelimit-remaining u throttled it-traffiku skont il-kwota. Għalhekk żammew pass stabbli eżatt taħt il-limitu, mingħajr ma ħadu l-ebda 429s; Ix-xogħol sar b'mod aktar prevedibbli u aktar mgħaġġel.
Żbalji komuni
- Żieda fil-veloċità f'429: Tagħmel is-sitwazzjoni agħar; Aqleb għall-irtirar.
- Ipprova mill-ġdid kull żball: 400/401/404 huwa permanenti; Li terġa 'tipprova hija ħela.
- Bl-użu ta 'stennija fissa: Joħloq ħabta; Uża esponenzjali + jitter.
- Tinjora 'retry-after': Huwa l-aktar preċiż li tikkonforma mal-ħin speċifikat mill-fornitur.
- Tiżvela l-iżball mhux ipproċessat lill-utent: Tħawwad il-fiduċja, toħloq vulnerabbiltajiet; Ikklassifika ġewwa.
- Prova mill-ġdid bla limitu: Issettja limitu massimu (eż. 5 tentattivi mill-ġdid); imbagħad ċedi bil-grazzja.
Aktar fil-fond: Queuing, Concurrency, u Circuit Breakers
Ir-reżistenza ta 'xewqa waħda hija l-ewwel pass; Il-maturità reali hija li timmaniġġja numru kbir ta 'talbiet mingħajr ma tolqot il-limiti. Hawnhekk jidħlu tliet kunċetti.
Kju: Tpoġġi t-talbiet fi kju biex tibgħathom b'pass ikkontrollat aktar milli immedjatament. Il-kju jillixxa l-fqigħ f'daqqa ta' traffiku: Anke jekk jaslu 1,000 talba f'daqqa, il-kju se jirrilaxxahom b'rata taħt il-limitu. B'dan il-mod tipprevjeni 429, allura ma jkollokx għalfejn tinkwieta biex tirranġaha.
Limitu tal-konkorrenza: Inti tillimita kemm hemm talbiet "fl-arja" fl-istess ħin. Talbiet paralleli illimitati malajr jimlew il-limiti RPM u TPM. Limitu ta' konkorrenza raġonevoli (eż. mhux aktar minn 10 talbiet konkorrenti) iżżomm il-limiti u jagħmel is-sistema prevedibbli.
Circuit breaker: Jekk il-fornitur ikompli jirritorna 500/529, minflok ma jipprova bil-kbir kull talba, inti "tkisser iċ-ċirkwit" għal xi żmien u malajr tfalli t-talba mingħajr qatt ma tibgħatha. Wara stenna, iddawwar iċ-ċirkwit lura u tipprova. Dan il-mudell jipprevjeni s-sistema tiegħek milli tiġġarraf fil-każ ta' falliment temporanju tal-fornitur.
Flimkien, dawn it-tlieta jistabbilixxu reżiljenza fil-livell tas-sistema lil hinn mill-loġika mill-ġdid ta’ sejħa waħda. Fuq skala żgħira, it-tentattiv mill-ġdid awtomatiku tal-SDK huwa biżżejjed; Hekk kif l-iskala tikber, il-kju, il-konkorrenza u l-interruttur isiru indispensabbli. Kollha għandhom l-istess għan komuni: li jirriflettu problema temporanja lill-utent mhux bħala ħabta, iżda bħala dewmien inviżibbli ta 'ftit sekondi.
Fil-qosor
429 jirritorna meta jinqabżu l-limiti tal-veloċità (RPM/ITPM/OTPM); Dan huwa żball temporanju u se jerġa 'jiġi ppruvat bl-użu ta' retry-after u backoff esponenzjali + jitter. 500 u 529 huma wkoll proviżorji; 400/401/403/404 hija kwistjoni ta' talba/identità u ma tistax tiġi solvuta billi terġa' tipprova. Fluss robust jifred l-iżbalji f'dawn iż-żewġ gruppi, jipprova numru limitat ta 'drabi, jimmonitorja l-limitu minn quddiem u juri messaġġi kalmi lill-utent.
Kompitu ta' applikazzjoni
Ikkunsidra l-integrazzjoni tiegħek. (1) Elenka l-kodiċijiet ta' żball li tista' tiltaqa' magħhom u sseparahom f'"retryable/permanenti". (2) Ikteb il-pjan ta' pullback esponenzjali tiegħek (istiva inizjali, koeffiċjent, limitu, jitter). (3) Speċifika kif tuża l-header retry-after. (4) Ikteb il-messaġġ edukat li għandu jintwera lill-utent meta l-provi mill-ġdid ikunu eżawriti.
lista ta' kontroll
- [ ] Kapaċi nispjega limiti RPM/ITPM/OTPM u 429.
- [ ] Kapaċi napplika l-loġika ta' irtir esponenzjali + jitter + ipprova mill-ġdid wara.
- [ ] Kapaċi nikklassifika kodiċijiet ta' żball bħala li jistgħu jerġgħu jippruvaw/permanenti.
- [ ] Naf li m'għandniex nippruvaw kull żball.
- [ ] Minflok żball mhux ipproċessat, nista' nuri lill-utent messaġġ kalm u orjentat lejn l-azzjoni.