Bölüm 8 / 11

Tizlik çäkleri we çydamly ýalňyşlary dolandyrmak

Girdeji:

  • Tizlik çäklerini (RPM / ITPM / OTPM) we 429 ýalňyşlygy düşündirip biler
  • Eksonensial yza gaýtarylýar we gaýtadan synanyşyň
  • Adaty HTTP säwlik kodlaryny dogry klassifikasiýa edýär we dolandyrýar (400/401/429/500/529)

Önümçilik gurşawynda hiç bir API hemişe gowy jogap bermeýär. Käwagt haýyşlary gaty çalt iberýärsiňiz we çäkden geçýärsiňiz; käwagt serwer wagtlaýyn işleýär; Käwagt islegiňiz başyndan nädogry. Güýçli birleşmegi höwesjeň synanyşykdan tapawutlandyrýan zat, bu ýagdaýlary öňünden we awtomatiki çözýär. Bu bölümde nyrh çäkleri (RPM / ITPM ​​/ OTPM), 429 ýalňyşlyk, ekspensial ätiýaçlyk bilen gaýtadan synanyşmak we umumy HTTP ýalňyş kodlarynyň dogry klassifikasiýasy barada öwrenersiňiz. Maksat: ulanyjy hiç haçan duýmaz ýaly gaty berk akym gurmak.

Tizlik çäkleri näme?

Üpjün ediji, belli bir wagtyň içinde wyklýuçateliň näçe iş edip biljekdigini çäklendirýär. Bu gorag; Ol infrastrukturany we sizi duýdansyz çykdajy partlamalaryndan goraýar. Çäkleriň üç umumy görnüşi bar:

  • RPM (Bir minutda haýyşlar): Bir minutda haýyşlaryň sany.
  • ITPM (Bir minutda giriş belgileri): Bir minutda gaýtadan işlenip bilinýän giriş belligi.
  • OTPM (Bir minutda çykyş belgileri): Bir minutda öndürip boljak çykyş belligi.

Bu çäklendirmeleriň haýsydyr birinden geçseňiz, üpjün ediji haýyşy ret edýär we 429 säwlik kody yzyna berýär. Çäkler, adatça hasabyňyzyň derejesine (derejesine) baglylykda üýtgeýär we wagtyň geçmegi bilen artdyrylyp bilner.

Maslahat: Jogap sözbaşylaryndan çäklere ýakynlaşanyňyzda tomaşa edip bilersiňiz. Prowaýderleriň köpüsi, galan kwotany x-ratelimit-galan- * ýaly sözbaşylar bilen habar berýärler. Bu gymmatlyklara gözegçilik etmek we öňdäki traffigi azaltmak, 429 almazdan meseläniň öňüni almak üçin iň kämillik usulydyr.

429 we Exponential Retracement

429 (nyrh çäkleri) wagtlaýyn we gaýtadan synanylýan ýalňyşlyk. Dogry jogap, haýyşa biraz garaşmak we gaýtadan synanyşmak. Emma yzygiderli garaşmak ýeterlik däl; Her kim şol bir wagtyň özünde gaýtadan synanyşsa, çäk ýene-de ýetiler. Çözüw ekspensial yza gaýdyşdyr: her şowsuz synanyşyk bilen garaşmagyň wagtyny çalt artdyrmak.

# Eksponensial yza gaýdyş logiki synag 1 → 429 → 1 sekunt synaga garaş 2 → 429 → 2 sekunt synaga garaş 3 → 429 → 4 sekunt synaga garaş 4 → 429 → 8 sekunt garaşyň (+ kiçi tötänleýin "jitter") ... N synaglarynyň köpüsinde ýüz öwüriň we hasabat beriň

Muňa azajyk tötänlik (jitter) goşmak, şol bir wagtyň özünde gaýtadan synanyşjak bolanyňyzda haýyşlaryň çaknyşmagynyň öňüni alýar. Mundan başga-da, 429 jogap köplenç "gaýtadan synanyşyň" sözbaşysyny alýar: "bu sekuntda gaýtadan synanyşyň". Bu ada hormat goýmak, kör garaşmakdan has takyk.

Üns beriň: 429 alsaňyz, "has köp haýyş ibermek bilen mejbur etmek" ýagdaýy hasam erbetleşdirer; Çäk doldurylmagyny dowam etdirýär we haýyşlar ýok. Dogry jogap tizlenmek däl-de yza çekilmekdir. Gowy habar: resmi SDK-laryň köpüsi awtomatiki usulda 429 we serwer ýalňyşlyklaryny gaýtadan synanyşýarlar - SDK-nyň bu hereketini el bilen gurmazdan ozal ulanyň.

HTTP säwlik kodlaryny klassifikasiýa etmek

Her ýalňyşlyk birmeňzeş däl. Möhüm tapawut: gaýtadan synanyşyp bolarmy ýa-da haýyş / şahsyýet meselesi?

Kod

Manysy

Againene synap bolarmy?

dogry jogap

400

Nädogry haýyş (format / parametr ýalňyşlygy)

ýok

Talaby düzediň gaýtadan ibermäň

401

Hakyky tanamak säwligi (açar nädogry / ýok)

ýok

Düwmäni / ady düzediň

403

Ygtyýarnama ýok (model / aýratynlyk ýok)

ýok

Rugsatlary / gerimini barlaň

404

Tapylmady (nädogry model ID / ahyrky nokat)

ýok

Dogry model ID / salgy

429

Tizlik çäginden geçdi

Hawa

Yza çekilmek + gaýtadan synanyşmak

500

Serwer ýalňyşlygy

Hawa

Yza çekilmek bilen gaýtadan synanyşyň

529

Serwer aşa ýüklendi

Hawa

Yza çekilmek bilen gaýtadan synanyşyň

Altyn düzgün: 429, 500 we 529 wagtlaýyn; Yza çekmek bilen gaýtadan synalýar. 400, 401, 403, 404 haýyş / şahsyýet meselesi; Againene synanyşmak muny çözüp bilmez we güýji ýitirýär. Koduňyz bu iki toparyň arasynda tapawutlanmalydyr.

Stepdimme-ädim: Çydamly jaň

  1. Talaby iberiň. Üstünlikli bolsa, dowam et.
  2. Erroralňyş kody klassifikasiýa ediň. Againene synap bolarmy?
  3. Synanyşyp boljak bolsa: gaýtadan synanyşyň, ekspensial yza gaýtaryş + jitter ulanyň, çäkli mukdarda synap görüň (meselem 5 max).
  4. Synag edilmese: düzediň (format / açar) we saklaň; Şol bir ýalňyş haýyşy aýlawda gaýtalamaň.
  5. Taşlamagy göz öňünde tutuň. N synanyşyklaryndan soňam şowsuz bolsa, ulanyja sypaýy habar görkeziň we wakany hasaba alyň (11-nji bölüm).

# Ygtybarly jaň pseudo-koden = 0 gaýtalamak: jogap = haýyş_at () eger jogap.success: response.code [429, 500, 529] -da jogap beriň we <5: garaşyň = gaýtadan synanyşyň ?? (2 ^ sek + jitter synap görüň) uky (garaşyň); synap görüň = = 1; [400, 401, 403, 404] -de jogap.code bolsa ýene git: save_error (jogap); yzyna "haýyş" düzedilmeli "gaýdyp" hemişelik ýalňyşlyk, soň synap görüň "

# Ulanyja sypaýy seslenme (gaýtadan synanyşyklar gutaranda) "Şu wagt işim ýok, haýyşyňyzy ýerine ýetirip bilmedim. Soonakynda gaýtadan synanyşyň, ýa-da haýyşyňyzy ýatda sakladym, taýýar bolanda size gaýdyp gelerin."

Gowşak haýyş / Güýçli haýyş (şu ýerde: säwlik habary dizaýny)

# WEAK (ulanyja çig ýalňyş görkezýär) "429 säwlik: rate_limit_error"

# Güýçli (ulanyjy üçin amatly, köşeşdiriji, hereket teklip edýän) "Ulgamda wagtlaýyn dyknyşyk boldy. Haýyşyňyzy ygtybarly aldyk we awtomatiki usulda gaýtadan synag edilýär. Netije birnäçe sekundyň içinde görünmese, sahypany täzeläp bilersiňiz."

Ahyrky ulanyja çig tehniki ýalňyşlygy ýüze çykarmak, ikisine-de ynamy pese gaçyrýar we howpsuzlygyň gowşaklygy bolup biler. Rorsalňyşlyklary içerde kategoriýalaşdyryň we ulanyja asuda, hereketli habar beriň; ýazgy üçin tehniki jikme-jiklikleri ýazyň.

Üç kiçi waka

1-nji waka - Gämi ulag partlamasynda heläkçilige uçrady. Müşderi hyzmaty boty kampaniýa güni 429 köpeldi; Kodda gaýtadan synanyşyk bolmady, her bir ýalňyşlyk ulanyja göni "säwlik" hökmünde görkezildi. Eksonensial retracement + gaýtadan synanyşdylar; şol bir traffik bilen, haýyşlar birnäçe sekunt gijikdirilip geçdi, ulanyjy hiç hili ýalňyşlyk görmedi.

2-nji waka - 400 aýlawda synap görmek. Nädogry model ID sebäpli integrasiýa 404 alýardy, ýöne ähli ýalňyşlyklara "wagtlaýyn" hökmünde seredýärdi we çäksiz aýlawda gaýtadan synanyşýardy; Logurnal çişip, gereksiz ýük döredildi. Erroralňyşlyk klassifikasiýasyny goşdular: 404 hemişelik hasaplanýar, aýlaw saklanýar we model ID düzedilýär. Sapak: her ýalňyşlygy gaýtadan synamaň.

3-nji waka - Çäkleri öň tarapdan dolandyrmak. Maglumatlary baýlaşdyrmak işi 429 çäkde yzygiderli işleýärdi. “X-ratelimit” galan sözbaşysyna eýerdiler we kwota laýyklykda traffigi köpeltdiler. Şeýlelik bilen, 429-lyk alman, çäkden aşakda yzygiderli ädim ätdiler; Iş has öňünden we has çalt ýerine ýetirildi.

Adaty ýalňyşlyklar

  • 429-da tizligiň ýokarlanmagy: ýagdaýy hasam erbetleşdirýär; Yza çekilmek.
  • Her ýalňyşlygy gaýtadan synanyşmak: 400/401/404 hemişelik; Againene synanyşmak biderek zat.
  • Kesgitli garaşmagy ulanmak: Çaknyşyk döredýär; Eksponensial + jitter ulanyň.
  • 'Gaýtadan synanyşmak' äsgermezlik: üpjün edijiniň görkezen wagtyny ýerine ýetirmek iň dogry.
  • Ulanyja çig ýalňyşlygy ýüze çykarmak: Ynamy sarsdyrýar, gowşaklyklary döredýär; Içinde toparlara bölüň.
  • Çäklendirilmedik synanyşyklar: upperokarky çäk belläň (meselem, 5 gezek synanyşyň); soň sypaýyçylyk bilen ýüz öwüriň.

Çuňňur: nobata durmak, ylalaşyk we aýlaw döwüjiler

Bir islegiň çydamlylygy ilkinji ädimdir; Hakyky kämillik, çäklere ýetmän köp sanly haýyşy dolandyrmakdyr. Bu ýerde üç düşünje durmuşa geçirilýär.

Nobat: Islegleri derrew däl-de, gözegçilikde saklamak üçin nobata goýýarsyňyz. Uingüz tutmak nobatdaky birden partlamany ýeňilleşdirýär: Birbada 1000 haýyş gelse-de, nobat olary çäkden pes nyrhda boşadar. Şeýlelik bilen 429-yň öňüni alarsyňyz, soň ony düzetmek barada alada etmeli dälsiňiz.

Gabat geliş çägi: Bir wagtyň özünde näçe haýyşy "howada" çäklendirýärsiňiz. Çäklendirilmedik parallel haýyşlar RPM we TPM çäklerini çalt doldurýar. Möhüm ylalaşyk potensialy (meselem, 10 sany yzygiderli haýyş) ikisi hem çäkleri saklaýar we ulgamy öňünden kesgitleýär.

Zynjyr döwüjisi: Eger üpjün ediji her haýyşy çynlakaý synap görmegiň ýerine 500/529 gaýdyp gelmegini dowam etdirse, biraz wagtlap "zynjyry bozarsyňyz" we haýyşy hiç wagt ibermezden çalt ýerine ýetirersiňiz. Garaşandan soň, zynjyry yza öwürýärsiňiz we synap görüň. Bu nagyş, wagtlaýyn üpjün edijiniň näsazlygy ýüze çykan halatynda ulgamyňyzyň çökmeginiň öňüni alýar.

Bu üçüsi bilelikde, bir jaňyň gaýtadan synanyşygynyň logikasyndan daşgary ulgam derejesinde çydamlylygy döredýär. Uly göwrümde SDK-nyň awtomatiki gaýtadan synanyşmagy ýeterlikdir; Masştab ulaldygyça nobata durmak, yzygiderlilik we tok öçüriji aýrylmaz bolýar. Olaryň hemmesiniň umumy maksady bar: ulanyja wagtlaýyn meseläni heläkçilik hökmünde däl-de, birnäçe sekundyň göze görünmeýän gijä galmagy hökmünde görkezmek.

Gysgaça

Tizlik çäkleri (RPM / ITPM / OTPM) geçende 429 gaýdyp gelýär; Bu wagtlaýyn ýalňyşlyk we gaýtadan synanyşykdan we ekspensial yza gaýtaryş + jitter ulanyp gaýtadan synanyşar. 500 we 529 hem wagtlaýyn; 400/401/403/404 haýyş / şahsyýet meselesi we gaýtadan synanyşmak arkaly çözülip bilinmez. Ygtybarly akym ýalňyşlyklary bu iki topara bölýär, çäkli gezek synanyşýar, çäkden öň tarapyna gözegçilik edýär we ulanyja asuda habarlary görkezýär.

Programma meselesi

Integrasiýany göz öňünde tutuň. (1) Duşup biljek säwlik kodlaryňyzy sanaň we olary "gaýtadan synanyşyp boljak / hemişelik" diýip bölüň. (2) Ekspensial yza çekmek meýilnamany ýazyň (başlangyç tutma, koeffisiýent, gapak, jitter). (3) Gaýtadan synanyşan sözbaşy nädip ulanmalydygyny görkeziň. (4) Gaýtadan synanyşanlar ulanyja görkeziljek sypaýy habary ýazyň.

gözegçilik sanawy

  • [] RPM / ITPM / OTPM çäklerini we 429 düşündirip bilerin.
  • [] Eksonensial yza çekiliş + jitter + gaýtadan synanyşmagyň logikasyny ulanyp bilerin.
  • [] Erroralňyş kodlaryny gaýtadan synanyşyp boljak / hemişelik diýip klassifikasiýa edip bilerin.
  • [] Her ýalňyşlygy synamaly däldigimizi bilýärin.
  • [] Çig ýalňyşlygyň ýerine ulanyja asuda, herekete gönükdirilen habary görkezip bilerin.