ክፍል 8 / 11

የፍጥነት ገደቦች እና የሚቋቋም የስህተት አስተዳደር

ትርፍ፡

  • የፍጥነት ገደቦችን (RPM/ITPM/OTPM) እና 429 ስህተቶችን መተርጎም ይችላል።
  • ገላጭ የኋላ ማጥፋትን ይተገብራል እና እንደገና በመሞከር እንደገና ይሞክሩ
  • የተለመዱ የኤችቲቲፒ ስህተት ኮዶችን (400/401/429/500/529) በትክክል ይመድባል እና ይቆጣጠራል።

በምርት አካባቢ፣ ምንም ኤፒአይ ሁል ጊዜ በትክክል ምላሽ አይሰጥም። አንዳንድ ጊዜ ጥያቄዎችን በፍጥነት ይልካሉ እና ገደቡን ይምቱ; አንዳንድ ጊዜ አገልጋዩ ለጊዜው ስራ ይበዛበታል; አንዳንድ ጊዜ ጥያቄዎ ከመጀመሪያው ስህተት ነው። ጠንካራ ውህደትን ከአማተር ሙከራ የሚለየው እነዚህን ሁኔታዎች አስቀድሞ በመተንበይ እና በራስ ሰር ማስተናገድ ነው። በዚህ ክፍል ውስጥ ስለ ተመን ገደቦች (RPM/ITPM/OTPM)፣ 429 ስህተት፣ ከአርቢ ጀርባ ጋር እንደገና ይሞክሩ እና ስለ የተለመዱ የኤችቲቲፒ ስህተት ኮዶች ምደባ ይማራሉ ። ግቡ፡ ተጠቃሚው በጭራሽ የማያስተውለው በጣም ጠንካራ የሆነ ፍሰት መገንባት ነው።

የፍጥነት ገደቦች ምንድን ናቸው?

አቅራቢው አንድ ማብሪያ / ማጥፊያ በተወሰነ ጊዜ ውስጥ ምን ያህል እንደሚሰራ ይገድባል። ይህ ጥበቃ; ሁለቱንም የመሠረተ ልማት አውታሮች እና እርስዎን ከድንገተኛ የወጪ ፍንዳታ ይጠብቃል። ሶስት የተለመዱ ገደቦች አሉ፡-

  • RPM (ጥያቄዎች በደቂቃ): የጥያቄዎች ብዛት በደቂቃ።
  • ITPM (የግቤት ማስመሰያዎች በደቂቃ)፡- በደቂቃ ሊሰራ የሚችል የግቤት ማስመሰያ።
  • OTPM (የውጤት ማስመሰያዎች በደቂቃ): የውጤት ማስመሰያ በደቂቃ ሊፈጠር ይችላል።

ከእነዚህ ገደቦች ውስጥ አንዱን ካለፉ፣ አቅራቢው ጥያቄውን ውድቅ አድርጎ 429 የስህተት ኮድ ይመልሳል። ገደቦች በአጠቃላይ እንደ መለያዎ ደረጃ (ደረጃ) ይለያያሉ እና በጊዜ ሂደት ሊጨመሩ ይችላሉ።

ጠቃሚ ምክር፡ ወደ ገደቡ ሲቃረቡ ከምላሽ ራስጌዎች መመልከት ይችላሉ። አብዛኛዎቹ አቅራቢዎች የእርስዎን ቀሪ ኮታ እንደ x-ratelimit-remaing-* ባሉ ራስጌዎች ሪፖርት ያደርጋሉ። እነዚህን እሴቶች መከታተል እና ከፊት ያለውን ትራፊክ ማፈን 429 ሳያገኙ ችግሩን ለመከላከል በጣም የበሰለ መንገድ ነው።

429 እና ገላጭ ዳግም ማስያዝ

429 (ተመን ገደብ) ጊዜያዊ እና እንደገና ሊሞከር የሚችል ስህተት ነው። ትክክለኛው ምላሽ ጥያቄውን ለጥቂት ጊዜ መጠበቅ እና እንደገና መሞከር ነው። ነገር ግን የማያቋርጥ መጠበቅ በቂ አይደለም; ሁሉም ሰው በተመሳሳይ ጊዜ እንደገና ከሞከረ፣ ገደቡ እንደገና ይደርሳል። መፍትሄው ገላጭ የኋላ መጥፋት ነው፡ በእያንዳንዱ ያልተሳካ ሙከራ የጥበቃ ጊዜን በከፍተኛ ሁኔታ መጨመር።

# Exponential backoff logic trial 1 → 429 → 1 ሰከንድ ሙከራ 2 → 429 → 2 ሰከንድ ሙከራ ጠብቅ 3 → 429 → 4 ሰከንድ ሙከራ ጠብቅ 4 → 429 → 8 ሰከንድ መጠበቅ (+ ትንሽ የዘፈቀደ "ጅተር")... ተስፋ ቆርጠህ ሪፖርት አድርግ ቢበዛ N ሙከራዎች

በዚህ ላይ ትንሽ የዘፈቀደ (ጂተር) ማከል በተመሳሳይ ጊዜ እንደገና ለመሞከር በሚሞከርበት ጊዜ ጥያቄዎች እንዳይጋጩ ይከላከላል። በተጨማሪም፣ የ429 ምላሹ ብዙ ጊዜ `እንደገና ሞክር` ርዕስ ይይዛል፡ "በዚህ ብዙ ሰከንዶች ውስጥ እንደገና ሞክር"። ይህንን ርዕስ ማክበር በጭፍን ከመጠበቅ የበለጠ ትክክለኛ ነው።

ጥንቃቄ: 429 ሲያገኙ "ተጨማሪ ጥያቄዎችን በመላክ ማስገደድ" ሁኔታውን ያባብሰዋል; ገደቡ መሞላቱን ይቀጥላል እና ምንም ጥያቄዎች አያልፍም። ትክክለኛው ምላሽ ማፈግፈግ እንጂ ማፋጠን አይደለም። የምስራች፡- አብዛኞቹ ኦፊሴላዊ ኤስዲኬዎች በራስ ሰር 429 እና ​​የአገልጋይ ስህተቶችን ከኋላ ማጥፋት ጋር እንደገና ይሞክሩ - ይህን የኤስዲኬ ባህሪ በእጅ ከመጫንዎ በፊት ይጠቀሙበት።

የኤችቲቲፒ ስህተት ኮዶችን መመደብ

እያንዳንዱ ስህተት አንድ አይነት አይደለም. ወሳኝ ልዩነት፡ እንደገና ሊሞከር ይችላል ወይንስ የጥያቄ/የማንነት ጉዳይ?

ኮድ

ትርጉም

እንደገና መሞከር ይቻላል?

ትክክለኛ ምላሽ

400

ልክ ያልሆነ ጥያቄ (የቅርጸት/የመለኪያ ስህተት)

አይደለም

ጥያቄውን አስተካክል; እንደገና አይላኩ

401

የማረጋገጫ ስህተት (ቁልፍ ልክ ያልሆነ/የጠፋ)

አይደለም

ቁልፍ/ርዕስ አስተካክል።

403

ምንም ፍቃድ የለም (የሞዴል/ባህሪ መዳረሻ የለም)

አይደለም

ፈቃዶችን/ወሰንን ያረጋግጡ

404

አልተገኘም (የተሳሳተ ሞዴል መታወቂያ/መጨረሻ ነጥብ)

አይደለም

ትክክለኛ የሞዴል መታወቂያ/አድራሻ

429

የፍጥነት ገደብ አልፏል

አዎ

ማፈግፈግ + እንደገና ይሞክሩ-በኋላ

500

የአገልጋይ ስህተት

አዎ

በማፈግፈግ እንደገና ይሞክሩ

529

አገልጋይ ከመጠን በላይ ተጭኗል

አዎ

በማፈግፈግ እንደገና ይሞክሩ

ወርቃማው ህግ: 429, 500 እና 529 ጊዜያዊ ናቸው; በማውጣት እንደገና ይሞክራል። 400, 401, 403, 404 ጥያቄ / የማንነት ጉዳዮች ናቸው; እንደገና መሞከር አይፈታውም, እና ጥረትን ያባክናል. ኮድዎ በእነዚህ ሁለት ቡድኖች መካከል መለየት አለበት.

ደረጃ በደረጃ፡ ዘላቂ ጥሪ

  1. ጥያቄውን ያስገቡ። ከተሳካ, ይቀጥሉ.
  2. የስህተት ኮዱን ይመድቡ። እንደገና መሞከር ይቻላል?
  3. መሞከር የሚቻል ከሆነ፡ እንደገና ሞክር-በኋላ ተከታተል፣ ገላጭ backoff + jitterን ተግብር፣ የተወሰነ ጊዜ ሞክር (ለምሳሌ፡ 5 max)።
  4. ካልተሞከረ: አስተካክል (ቅርጸት/ቁልፍ) እና አቁም; በ loop ውስጥ ተመሳሳይ የተሳሳተ ጥያቄን አይድገሙ።
  5. መተው ያስቡበት። ከ n ሙከራዎች በኋላ አሁንም ካልተሳካ ለተጠቃሚው ጨዋነት ያለው መልእክት ያሳዩ እና ክስተቱን ይግቡ (የመከታተያ ክፍል 11)።

# ጠንካራ ጥሪ pseudo-codedene = 0ተደጋጋሚ፡ ምላሽ = ጥያቄ_በ() ምላሽ ከሆነ።ስኬት፡ ምላሽ ከሆነ መልስ ይመልሱ። ኮድ በ [429, 500, 529] እና < 5: wait = እንደገና ይሞክሩ ?? (2 ^ ይሞክሩ ሰከንድ + jitter) እንቅልፍ (ቆይ); ይሞክሩ += 1; git again ከሆነ answer.code in [400, 401, 403, 404]: save_error(ምላሽ); መመለስ "ጥያቄ መስተካከል አለበት" መመለስ "ቋሚ ስህተት, በኋላ ይሞክሩ"

ለተጠቃሚው # ጨዋነት ያለው አስተያየት (ዳግም ሙከራዎች ሲደክሙ) "አሁን ስራ በዝቶብኛል፣ ጥያቄህን ማስተናገድ አልቻልኩም። በቅርቡ እንደገና ሞክር፣ ወይም ጥያቄህን አስቀምጫለው፣ ሲዘጋጅ ወደ አንተ እመለሳለሁ።"

ደካማ መጠየቂያ/ጠንካራ ጥያቄ (እዚህ፡ የስህተት መልእክት ንድፍ)

# WEAK (ጥሬ ስህተትን ለተጠቃሚው ያሳያል)"ስህተት 429: ተመን_ገደብ_ስህተት"

# STRONG (ለተጠቃሚ ምቹ፣ አረጋጋጭ፣ የድርጊት ጥቆማ) "በሲስተሙ ውስጥ ጊዜያዊ መጨናነቅ ነበር። ጥያቄዎን በደህና ተቀብለናል እና እንደገና በራስ-ሰር እየሞከረ ነው። ውጤቱ በጥቂት ሰከንዶች ውስጥ ካልመጣ ገጹን ማደስ ይችላሉ።"

ጥሬ ቴክኒካል ስህተቱን ለዋና ተጠቃሚው መግለጥ መተማመንን ያዳክማል እና የደህንነት ተጋላጭነት ሊሆን ይችላል። ስህተቶችን በውስጥ ይመድቡ እና ለተጠቃሚው የተረጋጋ፣ ተግባር ላይ ያማከለ መልዕክት ይስጡ። ለመዝገቡ ቴክኒካዊ ዝርዝሩን ብቻ ይፃፉ።

ሶስት ሚኒ ጉዳዮች

ጉዳይ 1 - ጀልባ በትራፊክ ፍንዳታ ተከሰከሰ። አንድ የደንበኞች አገልግሎት ቦት በዘመቻው ቀን 429 ከፍተኛ የትራፊክ ፍሰት አግኝቷል። በኮዱ ውስጥ ምንም አይነት ድጋሚ መሞከር የለም፣ እያንዳንዱ ስህተት በቀጥታ ለተጠቃሚው እንደ "ስህተት" ተንጸባርቋል። ገላጭ retracement + እንደገና ሞክር-በኋላ አክለዋል; በተመሳሳዩ ትራፊክ ፣ ጥያቄዎች ከበርካታ ሰከንዶች መዘግየት ጋር ተላልፈዋል ፣ ተጠቃሚው ምንም ስህተቶች አላየም።

ጉዳይ 2 - በ loop ውስጥ 400 በመሞከር ላይ። ውህደቱ ልክ ባልሆነ የሞዴል መታወቂያ ምክንያት 404 እያገኘ ነበር፣ ነገር ግን ሁሉንም ስህተቶች እንደ "አላፊ" በማየት እና ማለቂያ በሌለው ዑደት ውስጥ እንደገና እየሞከረ ነበር። ሎግ አብጦ አላስፈላጊ ጭነት ተፈጠረ። የስህተት ምደባ ጨምረዋል፡ 404 እንደ ቋሚ ይቆጠራል፣ ምልልሱ ቆሟል እና የሞዴል መታወቂያው ተስተካክሏል። ትምህርት: እያንዳንዱን ስህተት እንደገና አይሞክሩ.

ጉዳይ 3 - ከፊት ለፊት ያለውን ገደብ ማስተዳደር. የውሂብ ማበልጸጊያ ሥራ በ 429 ገደብ ላይ በቋሚነት እየሰራ ነበር. የ x-ratelimit-ቀሪ ራስጌን ተከትለው በኮታው መሰረት ትራፊኩን አጨናንቀዋል። ስለዚህ ምንም 429s ሳይወስዱ ከገደቡ በታች የተረጋጋ ፍጥነት ያዙ። ስራው በበለጠ ትንበያ እና በፍጥነት ተከናውኗል.

የተለመዱ ስህተቶች

  • በ 429 ውስጥ ፍጥነት መጨመር: ሁኔታውን ያባብሰዋል; ወደ ማፈግፈግ ቀይር።
  • እያንዳንዱን ስህተት እንደገና መሞከር: 400/401/404 ቋሚ ነው; እንደገና መሞከር ኪሳራ ነው።
  • ቋሚ ጥበቃን በመጠቀም: ግጭት ይፈጥራል; ገላጭ + ጂተርን ይጠቀሙ።
  • 'እንደገና ሞክር'ን ችላ ማለት፡- በአቅራቢው የተገለጸውን ጊዜ ማክበር በጣም ትክክለኛ ነው።
  • ጥሬ ስህተቱን ለተጠቃሚው መግለጥ፡ መተማመንን ያናውጣል፣ ተጋላጭነትን ይፈጥራል፤ ውስጥ መድብ.
  • ያልተገደበ ሙከራዎች: ከፍተኛ ገደብ ያዘጋጁ (ለምሳሌ 5 ድጋሚ ሙከራዎች); ከዚያም በጸጋ ተው።

ጠለቅ ያለ፡ ወረፋ፣ ኮንፈረንስ እና የወረዳ ሰባሪዎች

የአንድ ነጠላ ፍላጎት ጽናት የመጀመሪያው እርምጃ ነው; ትክክለኛው ብስለት ገደቡን ሳይመታ ብዙ ቁጥር ያላቸውን ጥያቄዎች ማስተዳደር ነው። ሦስት ጽንሰ-ሐሳቦች እዚህ ይጫወታሉ.

ወረፋ፡ ጥያቄዎችን ከወረፋ አስገብተሃል ወዲያው ሳይሆን ቁጥጥር ባለው ፍጥነት ለመላክ። ወረፋ ድንገተኛ የትራፊክ ፍንዳታ ያስተካክላል፡ 1,000 ጥያቄዎች በአንድ ጊዜ ቢመጡም ወረፋው ከገደቡ በታች በሆነ ፍጥነት ይለቃቸዋል። በዚህ መንገድ 429 ን ይከላከላሉ, ከዚያ ለመጠገን መጨነቅ አያስፈልግዎትም.

የመለዋወጫ ገደብ፡ በአንድ ጊዜ ምን ያህል ጥያቄዎች "በአየር ላይ" እንዳሉ ይገድባሉ። ያልተገደበ ትይዩ ጥያቄዎች RPM እና TPM ገደቦችን በፍጥነት ይሞላሉ። ምክንያታዊ የሆነ የተመጣጣኝ ጣሪያ (ለምሳሌ ከ10 የማይበልጡ ተከታታይ ጥያቄዎች) ሁለቱም ገደቦችን ይጠብቃሉ እና ስርዓቱ ሊገመት የሚችል ያደርገዋል።

ሰርክ ሰባሪው፡- አቅራቢው 500/529 መመለሱን ከቀጠለ፣ እያንዳንዱን ጥያቄ በውሸት ከመሞከር ይልቅ፣ ለተወሰነ ጊዜ “ሰርኩን ሰበሩ” እና መቼም ሳይልኩ በፍጥነት ጥያቄውን ወድቀዋል። ከቆይታ በኋላ ወረዳውን መልሰው ያበሩትና ይሞክሩ። ይህ ስርዓተ-ጥለት ጊዜያዊ አቅራቢው ውድቀት በሚከሰትበት ጊዜ ስርዓትዎ እንዳይበላሽ ይከላከላል።

እነዚህ ሦስቱ አንድ ላይ ሆነው የአንድ ጥሪን እንደገና ከመሞከር ሎጂክ በላይ የሥርዓት ደረጃን የመቋቋም አቅም ይመሰርታሉ። በትንሽ መጠን፣ የኤስዲኬ አውቶማቲክ ድጋሚ መሞከር በቂ ነው። ልኬቱ ሲያድግ፣ ወረፋ፣ ኮንፈረንስ እና ወረዳ ሰባሪው የግድ አስፈላጊ ይሆናሉ። ሁሉም አንድ አይነት የጋራ ግብ አላቸው፡ ጊዜያዊ ችግርን ለተጠቃሚው ለማንፀባረቅ እንደ ብልሽት ሳይሆን ለጥቂት ሰከንዶች የማይታይ መዘግየት ነው።

በማጠቃለያው

የፍጥነት ገደቦች (RPM/ITPM/OTPM) ሲያልፍ 429 ይመለሳል። ይህ ጊዜያዊ ስህተት ነው እና እንደገና ሞክር-በኋላ እና ገላጭ backoff + jitter በመጠቀም እንደገና ይሞከራል። 500 እና 529 ደግሞ ጊዜያዊ ናቸው; 400/401/403/404 የጥያቄ/የማንነት ጉዳይ ነው እና እንደገና በመሞከር ሊፈታ አይችልም። ጠንካራ ፍሰት ስህተቶችን ወደ እነዚህ ሁለት ቡድኖች ይለያል ፣ የተወሰነ ጊዜን ይሞክራል ፣ ገደቡን ከፊት ይከታተላል እና የተረጋጋ መልእክት ለተጠቃሚው ያሳያል።

የመተግበሪያ ተግባር

የእርስዎን ውህደት ግምት ውስጥ ያስገቡ። (1) ሊያጋጥሙህ የሚችሉትን የስህተት ኮዶች ዘርዝር እና ወደ "እንደገና ሊሞከር የሚችል/ቋሚ" ለይ። (2) ገላጭ የመመለሻ እቅድዎን (የመጀመሪያ መያዣ፣ ኮፊሸን፣ ካፕ፣ ጂተር) ይፃፉ። (3) እንደገና ሞክር ራስጌን እንዴት መጠቀም እንደሚቻል ይግለጹ። (4) ሙከራዎች ሲያልቅ ለተጠቃሚው መታየት ያለበትን ጨዋነት የተሞላበት መልእክት ይፃፉ።

የማረጋገጫ ዝርዝር

  • [ ] የ RPM/ITPM/OTPM ገደቦችን እና 429 ማብራራት እችላለሁ።
  • [] ገላጭ ማፈግፈግ + ጂተር + እንደገና ሞክር የሚለውን አመክንዮ ተግባራዊ ማድረግ እችላለሁ።
  • [] የስህተት ኮዶችን እንደገና ሊሞከሩ የሚችሉ/ቋሚ እንደሆኑ መመደብ እችላለሁ።
  • [ ] እያንዳንዱን ስህተት መሞከር እንደሌለብን አውቃለሁ።
  • [ ] ከጥሬ ስህተት ይልቅ፣ ለተጠቃሚው የተረጋጋ፣ በተግባር ላይ ያተኮረ መልእክት ማሳየት እችላለሁ።