Nkeji 8 / 11

Oke ọsọ yana njikwa njehie na-agbanwe agbanwe

Uru:

  • Nwere ike ịkọwa oke ọsọ (RPM/ITPM/OTPM) na mperi 429
  • Na-eme ihe nkwụghachi azụ ma nwaa ọzọ ma nwaa ọzọ
  • Na-ahazi nke ọma ma na-ejikwa koodu njehie HTTP nkịtị (400/401/429/500/529)

N'ebe a na-emepụta ihe, ọ dịghị API na-anabata nke ọma mgbe niile. Mgbe ụfọdụ ị na-eziga arịrịọ ngwa ngwa wee kụọ oke; mgbe ụfọdụ ihe nkesa na-arụ ọrụ nwa oge; Mgbe ụfọdụ arịrịọ gị na-ezighị ezi site na mmalite. Ihe dị iche na njikọta siri ike na mgbalị onye na-amu amu bụ na ọ na-edozi ọnọdụ ndị a n'ụzọ amụma na akpaghị aka. N'ime nkeji a, ị ga-amụta maka oke ọnụego (RPM/ITPM/OTPM), njehie 429, nwaa ọzọ site na nkwụghachi ụgwọ, yana nhazi ọkwa kwesịrị ekwesị nke koodu njehie HTTP. Ebumnuche: iji wuo mmiri na-agbasi ike nke na onye ọrụ agaghị achọpụta ya.

Kedu ihe bụ oke ọsọ?

Onye na-eweta ya na-amachi oke ọrụ ngbanwe nwere ike ịrụ n'ime oge enyere. Nchedo a; Ọ na-echebe ma akụrụngwa na gị site na mgbawa ọnụ ahịa mberede. Enwere ụdị oke atọ a na-ahụkarị:

  • RPM (Arịrịọ kwa nkeji): Ọnụọgụ arịrịọ kwa nkeji.
  • ITPM (Ihe ntinye ntinye kwa nkeji): akara ntinye nke enwere ike ịhazi kwa nkeji.
  • OTPM (Ngosipụta Mmepụta kwa nkeji): akara ngosi enwere ike imepụta kwa nkeji.

Ọ bụrụ na ị gafere nke ọ bụla n'ime oke ndị a, onye na-eweta ya jụrụ arịrịọ ahụ wee weghachi koodu njehie 429. Oke na-adịgasị iche dabere na ọkwa akaụntụ gị (ọkwa) yana enwere ike ịbawanye ogologo oge.

Ndụmọdụ: Ị nwere ike ilele mgbe ị na-abịaru oke site na nkụnye eji isi mee nzaghachi. Ọtụtụ ndị na-eweta ọrụ na-akọ oke gị fọdụrụ na nkụnye eji isi mee dị ka x-ratelimit-remaining-*. Nyochaa ụkpụrụ ndị a ma mee ka okporo ụzọ dị n'ihu bụ ụzọ kachasị mma iji gbochie nsogbu ahụ na-enweghị 429.

429 na Exponential Retracement

429 (oke ọnụego) bụ mperi nwa oge na nke enwere ike ịnwale. Nzaghachi ziri ezi bụ ichere arịrịọ ahụ nwa oge wee nwaa ọzọ. Ma nchere mgbe nile ezughị; Ọ bụrụ na onye ọ bụla nwaa ọzọ n'otu oge, oke ga-eru ọzọ. Ngwọta a bụ ihe nkwụghachi azụ: ịbawanye oge nchere nke ukwuu site na mbọ ọ bụla dara ada.

# Exponential backoff logic trial 1 → 429 → chere 1 sk ikpe 2 → 429 → chere 2 sec trial 3 → 429 → chere 4 sec trial 4 → 429 → chere 8 sec (+ obere random "jitter")... hapụ ma kọọ akụkọ mgbe n'ọtụtụ N ule.

Ịtinye ntakịrị enweghị usoro (jitter) na nke a na-egbochi arịrịọ ịkọkọta mgbe ị na-agbalị ịnwale ọzọ n'otu oge. Na mgbakwunye, nzaghachi 429 na-ebukarị nkụnye eji isi 'nyogharị-mgbe ọzọ': "gbalịa ọzọ n'ime ọtụtụ sekọnd a". Ịkwanyere aha a ugwu ziri ezi karịa ichere kpuru ìsì.

Kpachara anya: Mgbe ị nwetara 429, "ịmanye ya site na izipu arịrịọ ndị ọzọ" ga-eme ka ọnọdụ ahụ ka njọ; Oke na-aga n'ihu na-ejupụta na enweghị arịrịọ na-agafe. Nzaghachi ziri ezi bụ ịlaghachi azụ, ọ bụghị ngwa ngwa. Ozi ọma: ọtụtụ SDK ndị gọọmentị na-anwale 429 na njehie nkesa na-akpaghị aka - jiri omume SDK a tupu itinye ya na aka.

Nkewa koodu mperi HTTP

Ọ bụghị mmejọ ọ bụla bụ otu. Ọdịiche dị oke egwu: enwere ike ịnwale ya ka ọ bụ ọ bụ arịrịọ/okwu njirimara?

Koodu

Pụtara

Enwere ike ịnwale ya ọzọ?

azịza ziri ezi

400

Arịrịọ na-ezighi ezi (njehie ụdị/njehie)

mba

Dezie arịrịọ; ezipụla otu ihe ahụ ọzọ

401

Njehie nyocha (igodo ezighi ezi/na-efu)

mba

Idozi igodo/aha

403

Enweghị ikike (enweghị ohere ịnweta ụdị/atụmatụ)

mba

Lelee ikike/oke

404

Achọtaghị (NJ nlereanya ezighi ezi/ebe njedebe)

mba

NJ/ adreesị nlereanya ziri ezi

429

Oke ọsọ gafere

Ee

Nlaghachi azụ + nwaa ọzọ ma emechaa

500

Njehie nkesa

Ee

Jiri nlaghachi azụ nwaa ọzọ

529

Ejujuru ihe nkesa

Ee

Jiri nlaghachi azụ nwaa ọzọ

Ọchịchị ọla edo: 429, 500 na 529 bụ nwa oge; A na-anwale ya ọzọ na ndọrọ ego. 400, 401, 403, 404 bụ arịrịọ / njirimara; Ịgbalị ọzọ agaghị edozi ya, ọ na-efunahụ mgbalị. Koodu gị ga-ekewarịrị n'etiti otu abụọ a.

Nzọụkwụ Site Nzọụkwụ: Oku na-adịgide adịgide

  1. Nyefee arịrịọ ahụ. Ọ bụrụ na ịga nke ọma, gaa n'ihu.
  2. Hazie koodu njehie. Enwere ike ịnwale ya ọzọ?
  3. Ọ bụrụ na enwere ike ịnwale: soro ọzọ-mgbe emechaa, tinye exponential backoff + jitter, nwaa obere oge (dịka 5 max).
  4. Ọ bụrụ na anwaleghị: Dezie (ụdị/ igodo) ma kwụsị; Ekwughachila otu arịrịọ ahụ ezighi ezi na akaghị.
  5. Tụlee ịkwụsị. Ọ bụrụ na ọ ka na-eme nke ọma mgbe n mbọ, gosi onye ọrụ ozi ọma wee banye mmemme (ngalaba nsochi 11).

# Oku siri ike pseudo-codedene = 0 kwughachi: nzaghachi = request_at () ma ọ bụrụ nzaghachi. ịga nke ọma: nloghachi nzaghachi ma ọ bụrụ nzaghachi.code na [429, 500, 529] wee nwaa <5: chere = retry_mgbe ?? (2 ^ try sec + jitter) ụra(echere); nwaa += 1; git ọzọ ma ọ bụrụ nzaghachi.code na [400, 401, 403, 404]: save_error(nzaghachi); laghachi "arịrịọ ga-edozirịrị" nloghachi "njehie na-adịgide adịgide, nwaa ma emechaa"

# Nzaghachi dị mma nye onye ọrụ (mgbe ike gwụ mkpegharị) "A na m ọrụ n'aka ugbu a, enweghị m ike ịhazi arịrịọ gị. Gbalịa ọzọ n'oge adịghị anya, ma ọ bụ echekwara m arịrịọ gị, m ga-alaghachikwute gị mgbe ọ dị njikere."

Ngwa ngwa adịghị ike / siri ike (ebe a: nhazi ozi njehie)

# WEAK (gosipụtara onye ọrụ njehie raw) "Error 429: rate_limit_error"

# STRONG (-enyi na enyi, na-emesi obi ike, na-atụ aro ime ihe) "Enwere mkpọchị nwa oge na sistemụ ahụ. Anyị anatala arịrịọ gị n'enweghị nsogbu ma a na-anwale ya ọzọ na akpaghị aka. Ọ bụrụ na nsonaazụ ahụ apụtaghị n'ime sekọnd ole na ole, ị nwere ike ịmegharị ibe ahụ."

Ikpughere onye ọrụ ikpeazụ njehie arụrụ arụ ọrụ ma na-emebi ntụkwasị obi yana nwere ike bụrụ ọghọm nchekwa. Hazie njehie n'ime ma nye onye ọrụ ozi dị jụụ, gbadoro ụkwụ n'omume; naanị dee nkọwa teknụzụ maka ndekọ ahụ.

Obere obere atọ

Ikpe 1 - Ụgbọ mmiri dara na mgbawa okporo ụzọ. Bot ọrụ ndị ahịa nwetara 429 na okporo ụzọ n'ụbọchị mkpọsa; Enweghị nnwale ọzọ na koodu ahụ, njehie ọ bụla egosipụtara ozugbo na onye ọrụ dị ka “mmejọ”. Ha gbakwunyere retracement exponential + anwale-mgbe; na otu okporo ụzọ, arịrịọ gafere na igbu oge nke ọtụtụ sekọnd, onye ọrụ ahụghị njehie ọ bụla.

Ikpe 2 - Na-agbalị 400 na loop. Mwekota na-enweta 404 n'ihi ID nlereanya na-adịghị mma, mana ọ na-emeso njehie niile dị ka "na-agafe agafe" ma na-agbalị ọzọ na njedebe enweghị njedebe; Ọkọlọtọ ahụ fụrụ akpụ wee kee ibu na-enweghị isi. Ha gbakwunyere nhazi ọkwa njehie: 404 na-ewere na ọ na-adịgide adịgide, a kwụsịrị akaghị ya ma dozie ID nlereanya ahụ. Ihe nkuzi: agbala mmejọ ọ bụla ọzọ.

Ikpe 3 - Ijikwa oke si n'ihu. Ọrụ ịba ụba data na-arụ ọrụ mgbe niile na njedebe 429. Ha gbasoro isi nke fọdụrụ x-ratelimit wee mebie okporo ụzọ dịka oke ahụ siri dị. Ya mere, ha nọgidere na-aga n'ihu dị n'okpuru oke, na-ewereghị 429 ọ bụla; Emere ọrụ ahụ karịa amụma na ngwa ngwa.

Mmejọ ndị nkịtị

  • Ịbawanye ọsọ na 429: Na-eme ka ọnọdụ ahụ dịkwuo njọ; Gbanwee ka ịlaghachi azụ.
  • Ịnwagharị njehie ọ bụla: 400/401/404 na-adịgide adịgide; Ịgbalị ọzọ bụ ihe efu.
  • Iji echere echere: Na-emepụta nkukota; Jiri exponential + jitter.
  • Ileghara 'nyogharị-mgbe emechara': Ọ kachasị mma ịgbaso oge nke onye na-eweta ahụ akọwapụtara.
  • Na-ekpughere onye ọrụ njehie adịghị arụ ọrụ: Na-ama jijiji ntụkwasị obi, na-emepụta adịghị ike; Hazie n'ime.
  • Nnwale na-akparaghị ókè: Tọọ oke oke (dịka ọmụmaatụ 5 nghagharị); wee hapụ nke ọma.

Dị omimi: Queuing, Concurrency, na Circuit Breakers

Ntachi obi nke otu ọchịchọ bụ nzọụkwụ mbụ; Ezigbo ntozu oke bụ ijikwa ọnụ ọgụgụ dị ukwuu nke arịrịọ na-enweghị ịkụ oke. Echiche atọ na-abata ebe a.

kwụ n'ahịrị: Ị na-etinye arịrịọ na kwụ n'ahịrị iji ziga ha n'usoro a na-achịkwa karịa ozugbo. Queuing na-ewepụ mkpọmkpọ okporo ụzọ na mberede: Ọ bụrụgodị na arịrịọ 1,000 abịarute n'otu oge, kwụ n'ahịrị ga-ahapụ ha n'ọnụego n'okpuru oke. Otu a ị na-egbochi 429, yabụ na ị gaghị echegbu onwe gị maka idozi ya.

Oke nkwekọrịta: Ị na-amachi ole arịrịọ dị "n'ikuku" n'otu oge. Arịrịọ myirịta na-akparaghị ókè na-ejupụta oke RPM na TPM ngwa ngwa. Ulo ụlọ concurrency ezi uche dị na ya (dịka ọmụmaatụ, ọ bụghị karịa arịrịọ 10 na-agakọ ọnụ) na-echekwa oke ma na-eme ka usoro ahụ bụrụ amụma.

Onye na-agbaji sekit: Ọ bụrụ na onye na-eweta ya na-alọghachi 500/529, kama iji nlezianya na-anwale arịrịọ ọ bụla, ị "na-agbaji sekit" nwa oge wee daa arịrịọ ahụ ngwa ngwa na-ezigaghị ya. Mgbe nchere gasịrị, ịgbanye sekit ahụ azụ wee gbalịa. Usoro a na-egbochi sistemụ gị ịdaba ma ọ bụrụ na ọdịda nke onye na-eweta nwa oge dara.

Ọnụ, atọ ndị a na-ewepụta nkwụsi ike n'ọkwa sistemụ karịrị mgbagha mgbagharị nke otu oku. N'obere ọnụ ọgụgụ, nnwale akpaka nke SDK zuru ezu; Ka ọnụ ọgụgụ na-eto, ị kwụ n'ahịrị, concurrency, na sekit na-agbaji na-aghọ ihe dị mkpa. Ha niile nwere otu ihe mgbaru ọsọ: iji gosipụta nsogbu nwa oge nye onye ọrụ ọ bụghị dị ka mkpọka, kama dị ka oge na-adịghị ahụ anya nke sekọnd ole na ole.

Na nchịkọta

429 na-alaghachi mgbe oke ọsọ (RPM/ITPM/OTPM) gafere; Nke a bụ mperi nwa oge, a ga-anwalekwa ya site na iji nnwale-mgbe na exponential backoff + jitter. 500 na 529 bụkwa nwa oge; 400/401/403/404 bụ arịrịọ/okwu njirimara na enweghị ike idozi ya site na ịnwale ọzọ. Ọgba ọsọ siri ike na-ekewa njehie n'ime otu abụọ a, nwalee oge ole na ole, na-enyocha oke site n'ihu wee gosi onye ọrụ ozi dị jụụ.

Ọrụ ngwa

Tụlee njikọ gị. (1) Depụta koodu njehie ị nwere ike izute wee kewaa ha n'ime "megharia / na-adịgide adịgide". (2) Dee atụmatụ ndọghachi azụ n'ọnụ gị (njide mbụ, ọnụọgụ, okpu, jitter). (3) Kọwaa otu esi eji nkụnye eji isi mee emegharịgharị. (4) Dee ozi ọma a ga-egosi onye ọrụ mgbe ike gwụrụ ya.

ndetu

  • [] Enwere m ike ịkọwa oke RPM/ITPM/OTPM yana 429.
  • [ ] Enwere m ike itinye echiche nke mgbagha mgbagha + jitter + nwaa ọzọ ma emechaa.
  • [] Enwere m ike ịhazi koodu mperi dị ka enwere ike ịnwale/na-adịgide adịgide.
  • [ ] Amaara m na anyị ekwesịghị ịnwale mmejọ ọ bụla.
  • [] Kama mperi mperi, enwere m ike igosi onye ọrụ ozi dị jụụ, gbakwasara n'omume.