Naúrar 8 / 11

Iyakan Gudun Gudun da Gudanar da Kuskuren Jurewa

Riba:

  • Za a iya fassara iyakar gudun (RPM/ITPM/OTPM) da kurakurai 429
  • Yana aiwatar da juzu'i mai ma'ana kuma sake gwadawa tare da sake gwadawa
  • Daidai rarrabawa da sarrafa lambobin kuskuren HTTP gama gari (400/401/429/500/529)

A cikin yanayin samarwa, babu API da ke amsa daidai kowane lokaci. Wani lokaci kuna aika buƙatun da sauri kuma ku buga iyaka; wani lokacin uwar garken yana aiki na ɗan lokaci; Wani lokaci buƙatarku ba daidai ba ce daga farko. Abin da ke bambanta ƙaƙƙarfan haɗin kai daga yunƙurin mai son shi ne cewa yana sarrafa waɗannan yanayi da tsinkaya kuma ta atomatik. A cikin wannan naúrar za ku koyi game da iyakoki (RPM/ITPM/OTPM), kuskure 429, sake gwadawa tare da bayanan baya, da rarrabuwar lambobin kuskuren HTTP gama gari. Manufar: don gina kwararar ruwa mai ƙarfi wanda mai amfani ba zai taɓa lura da shi ba.

Menene Iyakan Gudun Gudun?

Mai badawa yana iyakance yawan aikin da maɓalli zai iya yi a cikin ƙayyadaddun lokaci. Wannan kariya; Yana kare duka ababen more rayuwa da ku daga fashe-fashe na farashi kwatsam. Akwai iyakokin gama gari guda uku:

  • RPM (Buƙatun Minti): Yawan buƙatun a minti daya.
  • ITPM ( Alamomin shigarwa a cikin Minti): Alamar shigar da za a iya sarrafa ta minti daya.
  • OTPM (Alamomin fitarwa a Minti): Alamar fitarwa wacce za a iya samarwa a cikin minti daya.

Idan kun wuce kowane ɗayan waɗannan iyakoki, mai badawa ya ƙi buƙatar kuma ya dawo da lambar kuskure 429. Iyakoki gabaɗaya sun bambanta dangane da matakin asusun ku (tier) kuma ana iya ƙarawa akan lokaci.

Tukwici: Kuna iya kallo lokacin da kuke gabatowa iyaka daga masu kan martani. Yawancin masu samarwa suna ba da rahoton ragowar adadin kuɗin ku tare da rubutun kai kamar x-ratelimit-remaining-*. Kulawa da waɗannan dabi'u da ƙulla zirga-zirgar ababen hawa a gaba ita ce hanya mafi girma don hana matsalar ba tare da samun 429 ba.

429 da Ƙwararren Ƙarfafawa

429 (ƙididdigar ƙima) kuskure ne na ɗan lokaci kuma mai sake gwadawa. Madaidaicin amsa shine jira buƙatar na ɗan lokaci kuma a sake gwadawa. Amma jira akai-akai bai isa ba; Idan kowa ya sake gwadawa a lokaci guda, iyakar za a sake kaiwa. Maganinta shine koma baya mai ma'ana: haɓaka lokacin jira sosai tare da kowane ƙoƙarin da bai yi nasara ba.

# Exponential Backoff Logic trial

Ƙara ɗan bazuwar (jitter) zuwa wannan yana hana buƙatun yin karo yayin ƙoƙarin sake gwadawa a lokaci guda. Bugu da ƙari, martanin 429 yakan ɗauki taken 'sake gwadawa': "sake gwadawa cikin wannan daƙiƙa masu yawa". Girmama wannan take ya fi daidai fiye da jira a makance.

Tsanaki: Lokacin da ka sami 429, "tilasta shi ta hanyar aika ƙarin buƙatun" zai sa lamarin ya yi muni; Ana ci gaba da cika iyaka kuma babu buƙatun da ke wucewa. Madaidaicin martani shine ja da baya, ba hanzari ba. Labari mai dadi: yawancin SDK na hukuma ta atomatik sake gwadawa 429 da kurakuran uwar garken tare da koma baya - yi amfani da wannan hali na SDK kafin shigar da shi da hannu.

Rarraba Lambobin Kuskuren HTTP

Ba kowane kuskure daya bane. Bambanci mai mahimmanci: za a iya sake gwadawa ko kuwa buƙatu/batun ganowa ne?

Lambar

Ma'ana

Za a iya sake gwadawa?

amsa daidai

400

Buƙatun mara inganci (kuskuren tsari/tsari)

a'a

Gyara buƙatar; kar a sake aika makamancin haka

401

Kuskuren tantancewa (maɓalli mara inganci/ ɓace)

a'a

Gyara maɓalli/ take

403

Babu izini (babu damar yin amfani da ƙira / fasali)

a'a

Duba izini/ iyaka

404

Ba a samo shi ba (ID ɗin ƙira mara daidai/madaidaicin ƙarshen)

a'a

Madaidaicin samfurin ID/adireshi

429

An wuce iyakar saurin gudu

Ee

Komawa + sake gwadawa-bayan

500

Kuskuren uwar garken

Ee

A sake gwadawa tare da ja da baya

529

An yi lodin uwar garken

Ee

A sake gwadawa tare da ja da baya

Dokar zinare: 429, 500 da 529 na ɗan lokaci ne; Ana sake gwadawa tare da janyewa. 400, 401, 403, 404 al'amurran da suka shafi buƙatun ne; Ƙoƙarin sake gwadawa ba zai warware shi ba, kuma yana ɓata ƙoƙari. Dole ne lambar ku ta bambanta tsakanin waɗannan ƙungiyoyi biyu.

Mataki-mataki: Kira mai ɗorewa

  1. Gabatar da bukatar. Idan nasara, ci gaba.
  2. Rarraba lambar kuskure. Za a iya sake gwadawa?
  3. Idan ana iya gwadawa: bi sake gwadawa-bayan, yi amfani da bayanan baya + jitter, gwada ƙarancin adadin lokuta (misali 5 max).
  4. Idan ba a gwada ba: Gyara (tsara / maɓalli) kuma dakatar; Kada a maimaita buƙatar kuskure iri ɗaya a cikin madauki.
  5. Yi la'akari da dainawa. Idan har yanzu ba a yi nasara ba bayan n yunƙurin, nuna saƙon ladabi ga mai amfani kuma shigar da taron (yankin sa ido 11).

# Kira mai ƙarfi pseudo-codedene = 0 maimaita: amsa = request_at () idan amsa. nasara: mayar da martani idan martani.code a [429, 500, 529] kuma gwada <5: jira = sake gwadawa_bayan ?? (2^ gwada sec + jitter) barci (jira); gwada += 1; git sake idan martani.code a [400, 401, 403, 404]: save_error(amsa); mayar "dole ne a gyara bukatar" mayar da "kuskuren dindindin, gwada daga baya"

# Amsa mai kyau ga mai amfani (lokacin da aka gama sakewa) "Ina cikin aiki a yanzu, na kasa aiwatar da buƙatarku. Sake gwadawa nan ba da jimawa ba, ko na adana buƙatarku, zan dawo gare ku idan ta shirya."

Rauni mai ƙarfi / Ƙarfi mai ƙarfi (a nan: ƙirar saƙon kuskure)

# WEAK (yana nuna kuskuren kuskure ga mai amfani) "Kuskure 429: ƙimar_limit_error"

# KARFI (mai amfani, mai kwantar da hankali, ba da shawara) "An sami cunkoso na ɗan lokaci a cikin tsarin. Mun karɓi buƙatarku lafiya kuma ana sake gwadawa ta atomatik. Idan sakamakon bai bayyana a cikin 'yan daƙiƙa kaɗan ba, zaku iya sabunta shafin."

Bayyana kuskuren fasaha ga mai amfani na ƙarshe duka biyun yana lalata amana kuma yana iya zama raunin tsaro. Rarraba kurakurai a ciki kuma ba mai amfani da nutsuwa, saƙon da ya dace da aiki; kawai rubuta bayanan fasaha don rikodin.

Mini Cases guda uku

Shari'a ta 1 - Jirgin ruwa ya fado a fashewar ababen hawa. Bot ɗin sabis na abokin ciniki ya karɓi 429 a cikin cunkoson ababen hawa a ranar yaƙin neman zaɓe; Babu sake gwadawa a cikin lambar, kowane kuskure yana nunawa kai tsaye ga mai amfani azaman "kuskure". Sun kara da cewa retracement + sake gwadawa; tare da zirga-zirga iri ɗaya, buƙatun sun wuce tare da jinkiri na daƙiƙa da yawa, mai amfani bai ga wasu kurakurai ba.

Hali na 2 - Gwada 400 a cikin madauki. Haɗin kai yana samun 404 saboda ID ɗin ƙira mara inganci, amma yana ɗaukar duk kurakurai a matsayin "mai wucewa" kuma yana ƙoƙarin sake gwadawa cikin madauki mara iyaka; Logon ya kumbura kuma an ƙirƙiri nauyin da ba dole ba. Sun ƙara rarraba kuskure: 404 ana ɗaukar dindindin, an dakatar da madauki kuma an gyara ID ɗin ƙirar. Darasi: kar a sake gwada kowane kuskure.

Case 3 - Gudanar da iyaka daga gaba. Aikin haɓaka bayanai yana gudana koyaushe a iyakar 429. Sun bi kan x-ratelimit-remaining heads kuma sun dakile zirga-zirga bisa ga ka'ida. Don haka sun ci gaba da tafiya a ƙasa da iyaka, ba tare da ɗaukar 429 ba; An yi aikin da sauri da sauri.

Kuskuren gama gari

  • Ƙara saurin gudu a cikin 429: Yana sa yanayin ya fi muni; Canja zuwa ja da baya.
  • Sake gwada kowane kuskure: 400/401/404 na dindindin; Ƙoƙarin sake yin asara ce.
  • Amfani da tsayayyen jira: Yana haifar da karo; Yi amfani da ma'auni + jitter.
  • Yin watsi da 'sake gwadawa': Ya fi dacewa a bi lokacin da mai bada ya kayyade.
  • Bayyana kuskuren ɗanyen ga mai amfani: Girgiza amana, yana haifar da lahani; Raba ciki.
  • Sake gwadawa mara iyaka: Saita iyaka babba (misali 5 sakewa); sai a bar alheri.

Zurfafa: Queuing, Concurrency, and Circuit Breakers

Juriyar sha'awa guda ɗaya shine mataki na farko; Babban balaga na gaske shine sarrafa adadin buƙatun ba tare da buga iyaka ba. Hanyoyi uku sun shigo cikin wasa anan.

Queue: Kun sanya buƙatun a cikin jerin gwano don aika su a cikin taki mai sarrafawa maimakon nan da nan. Yin layi yana fitar da fashewar ababen hawa kwatsam: Ko da buƙatun 1,000 sun zo a lokaci ɗaya, layin zai sake su akan ƙimar ƙasa da iyaka. Ta wannan hanyar kuna hana 429, to ba lallai ne ku damu da gyara shi ba.

Iyakar ma'amala: Kuna iyakance yawan buƙatun "a cikin iska" a lokaci guda. Buƙatun layi ɗaya marasa iyaka da sauri suna cika iyakokin RPM da TPM. Madaidaicin rufi mai ma'ana (misali ba fiye da buƙatun lokaci guda 10 ba) duka suna kiyaye iyaka kuma yana sanya tsarin tsinkaya.

Mai watsewar kewayawa: Idan mai bayarwa ya ci gaba da dawo da 500/529, maimakon yin gwaji tare da kowane buƙatu, kun “karye da'irar” na ɗan lokaci kuma cikin sauri ku kasa buƙatar ba tare da aika ta ba. Bayan jira, kuna kunna da'irar baya kuma gwada. Wannan tsarin yana hana tsarin ku daga faɗuwa a cikin lamarin rashin nasarar mai bada sabis na ɗan lokaci.

Tare, waɗannan ukun sun kafa juriyar matakin-tsari fiye da sake gwada dabaru na kira guda. A kan ƙaramin sikeli, sake gwadawa ta atomatik na SDK ya wadatar; Yayin da ma'auni ke girma, jerin gwano, daidaitawa, da na'urar da'ira sun zama makawa. Dukkansu suna da manufa guda ɗaya: don nuna matsala ta wucin gadi ga mai amfani ba azaman haɗari ba, amma azaman jinkirin da ba a iya gani na ƴan daƙiƙa.

A takaice

429 yana dawowa lokacin da aka wuce iyakar gudun (RPM/ITPM/OTPM); Wannan kuskuren ɗan lokaci ne kuma za'a sake gwadawa ta amfani da sake gwadawa da juzu'i na baya + jitter. 500 da 529 kuma na wucin gadi ne; 400/401/403/404 buƙatu ne/batun ganowa kuma ba za a iya warware ta ta sake gwadawa ba. Ƙaƙƙarfan kwarara yana raba kurakurai zuwa waɗannan rukunoni biyu, yana gwada ƙayyadaddun adadin lokuta, yana lura da iyaka daga gaba kuma yana nuna saƙon natsuwa ga mai amfani.

Aikin aikace-aikace

Yi la'akari da haɗin kai. (1) Jera lambobin kuskuren da zaku iya fuskanta kuma ku raba su cikin "sake gwadawa / dindindin". (2) Rubuta shirin ja da baya mai fa'ida (riƙe na farko, ƙididdiga, hula, jitter). (3) Ƙayyade yadda ake amfani da taken sake gwadawa. (4) Rubuta saƙon mai ladabi don nunawa ga mai amfani lokacin da sakewa ya ƙare.

jerin abubuwan dubawa

  • [ ] Zan iya bayyana iyakoki RPM/ITPM/OTPM da 429.
  • [ ] Zan iya amfani da dabaru na juzu'i na ja da baya + jitter + sake gwadawa-bayan.
  • [ ] Zan iya rarraba lambobin kuskure a matsayin mai sake gwadawa/na dindindin.
  • [ ] Na san cewa bai kamata mu gwada kowane kuskure ba.
  • [ ] Maimakon kuskuren kuskure, zan iya nuna wa mai amfani sako mai natsuwa, mai daidaita aiki.