ብሎግ

ለእያንዳንዱ ሰርቨር ሳይሆን አንድ ጊዜ የሚጠፉ ማስጠንቀቂያዎች

ከኦፕሬሽን ማስጠንቀቂያዎቻችን አንዱ — ለአንድ ገንቢ የታተመ መተግበሪያ «ዝቅተኛ ክሬዲቶች» — ለእኛ በቀን ቢበዛ አንድ ጊዜ እንዲደርስ የታሰበ ነው። አንድ ከሰዓት ላይ ግን አምስት ጊዜ ደረሰ። ምክንያቱ፦ የኤፒአይ ቅጂ እያንዳንዱ ቀደም ብሎ የላከውን ማስጠንቀቂያ በራሱ ማህደረ ትውስታ ያስታውስ ነበር፣ ስለዚህ ሁለት ሰርቨሮች ሁለት ጊዜ ይልኩት ነበር፣ እያንዳንዱ ዴፕሎይም ያንን ማህደረ ትውስታ አጥፍቶ እንደገና እንዲልኩ ያደርጋቸው ነበር። ተመሳሳይ ንድፍ አንድ የበስተጀርባ ስራ ሁለት ጊዜ እንዲሠራ አድርጎ ነበር። ሁለቱም አሁን በጋራ ማከማቻ በኩል ይቀናጃሉ፤ ማከማቻው ሲጠፋ ደግሞ ወደ ደህንነቱ ጎን ይወድቃሉ።

ምልክቱ

Mythex ቡድናችን እንዲመለከት የሚፈልጉ ነገሮች ሲከሰቱ የቡድን ማስጠንቀቂያዎችን ይልካል፦ አገልግሎት ሲቋረጥ፣ ስራ ሲቆም፣ ወይም የገንቢ መለያ ክሬዲት ሲያልቅ መተግበሪያው ታትሞ። እያንዳንዱ ማስጠንቀቂያ የመደበቂያ መስኮት አለው፤ በዚያ ጊዜ ተመሳሳዩ ማስጠንቀቂያ አንድ ጊዜ ብቻ ይላካል። ለዝቅተኛ ክሬዲቶች ማስጠንቀቂያ ይህ መስኮት 24 ሰዓት ነው።

በአንድ ከሰዓት አምስት የአንድ ማስጠንቀቂያ ቅጂዎች ማለት መስኮቱ አልያዘም ማለት ነው። ይባስ ብሎ፣ በጥንድ፣ ወደ 11 ደቂቃ ልዩነት ይመጡ ነበር።

ለምን ሆነ

የማስጠንቀቂያ ፓኬጃችን መደበቂያውን በማህደረ ትውስታ ውስጥ ያቆይ ነበር፦ «የማስጠንቀቂያ ቁልፍ → መቼ እንደተላከ» የሚል ሰንጠረዥ፣ በሚሠራው ሂደት ውስጥ። ይህ የሚሠራው አንድ ሂደት ብቻ ሲኖር ነው፣ ፈጽሞም የማይዘጋ። ምርት ግን ሁለቱንም አይደለም፦

  • ሁለት የኤፒአይ ቅጂዎች። ምርት ሁለት የኤፒአይ ቅጂዎችን ያስኬዳል። እያንዳንዱ የራሱ ሰንጠረዥ ነበረው፣ ስለዚህ እያንዳንዱ አንድ ጊዜ ልኮታል። ጥንዶቹ ይህ ነው።
  • ዴፕሎዮች። እያንዳንዱ ዴፕሎይ ሁለቱንም ቅጂዎች በአዲስ ሂደቶችና ባዶ ሰንጠረዦች ይተካል። ከዴፕሎይ በኋላ ማስጠንቀቂያው እንዳልተላከ ሆኖ እንደገና ወጣ።

በጥንዶቹ መካከል ያለው ~11 ደቂቃ ክፍተት የሚመጣው ይህንን ማስጠንቀቂያ ከሚያነሳው ስራ ነው። ስራው በሁለቱም ቅጂዎች ላይ ይሠራል እና መቆለፊያ ይይዛል፣ ስለዚህ ቅጂዎቹ በተራ ያሸንፋሉ፣ እና እያንዳንዱ ተራው ሲደርስ ማስጠንቀቂያውን ያነሳል።

በዚሁ ኮድ ውስጥ ሁለተኛ፣ ጸጥ ያለ ስህተት ነበር። ሰንጠረዡ ላልተወሰነ ጊዜ እንዳያድግ፣ 500 ቁልፍ ሲደርስ ራሱን ያጸዳል ነበር፤ የእያንዳንዱን ግቤት ዕድሜ ከ15 ደቂቃ በላይ ከሆነ ይሰርዛል፣ የመስኮቱ ርዝመት ምንም ቢሆን። በከባድ ጭነት ጊዜ የ24 ሰዓት መደበቂያ የሩብ ሰዓት ብቻ ሊቆይ ይችላል።

መፍትሄው

ለእያንዳንዱ ማስጠንቀቂያ አንድ የጋራ መዝገብ

ኤፒአይ ማስጠንቀቂያ ከመላኩ በፊት፣ የማስጠንቀቂያውን የመደበቂያ ቁልፍ በRedis ውስጥ ይይዛል — ሁለቱም ቅጂዎች የሚነጋገሩበት፣ ኤፒአይ ሲነሳ የማይጠፋ የጋራ ማህደረ ትውስታ ማከማቻ። ይህ መያዝ አንድ «ይህን ቁልፍ ካልተገኘ ብቻ አስቀምጠው፣ መስኮቱ ሲያልቅ ጊዜው ያልፍበት» የሚል ነጠላ ክዋኔ ነው። መጀመሪያ የሚይዘው ቅጂ ማስጠንቀቂያውን ይልካል፤ ሌላው ቁልፉ እንደተወሰደ አግኝቶ ዝም ይላል። ከዴፕሎይ በኋላ አዲስ ሂደት ቁልፉ አሁንም እዚያ እንዳለ ያገኘዋል።

ቁልፉና መስኮቱ የሚመጡት የማስጠንቀቂያ ፓኬጁ ከሚጠቀምበት ተመሳሳይ ህግ ነው፤ አሁን በሁለቱ መካከል የተጋራ ነው፣ ስለዚህ ሁለቱ ንብርብሮች «ተመሳሳይ ማስጠንቀቂያ» ምን እንደሆነ አይለያዩም።

ሲወድቅ ዝጋ ሳይሆን ክፈት

በጣም ጠቃሚው ውሳኔ Redis ሲደረስ ካልቻልን ምን እንደምናደርግ ነበር። ማስጠንቀቂያውን እንዲያም ሆኖ እንልካለን። Redis ከወደቀ፣ ወይም በ1.5 ሰከንድ ውስጥ ካልመለሰ፣ ማስጠንቀቂያው ይወጣል። የተባዛ ማስጠንቀቂያ ጫጫታ ነው። የጠፋ ማስጠንቀቂያ ግን ማንም እንዳልተነገረው ማለት ነው።

በጣም ከባድ ማስጠንቀቂያዎች፣ P0፣ በመደበቂያ ፈጽሞ አይያዙም።

እያንዳንዱ ግቤት የራሱ መስኮት አለው

በማስጠንቀቂያ ፓኬጁ የራሱ በማህደረ ትውስታ ውስጥ ያለ መደበቂያ፣ እያንዳንዱ ግቤት አሁን መስኮቱ መቼ እንደሚያልቅ ያከማቻል፣ ማጽዳቱ ደግሞ መስኮቱ ያለፈባቸውን ግቤቶች ብቻ ያስወግዳል። የ24 ሰዓት ቁልፍ ለ24 ሰዓት ይቆያል፣ ሌሎች ስንት ማስጠንቀቂያዎች ቢመጡም።

ተመሳሳዩ ስህተት በሌላ ቦታ

ተመሳሳዩ ንድፍ አንድ የበስተጀርባ ስራንም በእጥፍ አድርጎት ነበር፤ የእያንዳንዱን ዎርክስፔስ ሁኔታ ከሳንድቦክስ አቅራቢያችን ጋር በሚስማማ መልኩ የሚያስተካክል የመጠገኛ ስራ። እያንዳንዱ ማለፊያ በመለያው ውስጥ ያለ እያንዳንዱን ሳንድቦክስ ይዘረዝራል — በምርት ሺዎች፣ ወደ አምስት ሰከንድ — እና እያንዳንዱ የሚሠራ ወይም የቆመ ፕሮጀክት። ሁለቱም ቅጂዎች በየሁለት ደቂቃው ያሠሩት ነበር።

ጽሁፎቹ idempotent ናቸው — ሁለት ጊዜ ማሄድ ከአንድ ጊዜ ጋር ተመሳሳይ ውጤት ይሰጣል — ስለዚህ ምንም አልተበላሸም። ዝም ብሎ ሁለት እጥፍ ስራ ነበር። አሁን እያንዳንዱ የሁለት ደቂቃ መስኮት በRedis ውስጥ የመለኪያ ቆጣሪዎቻችን ቀድመው እንዳደረጉት ይያዛል፣ እና ያንን መስኮት የያዘው ቅጂ ብቻ ማለፊያውን ያሠራል። Redis ሊደረስ ካልቻለ ማለፊያው በማንኛውም ሁኔታ ይሠራል፦ ስራውን ሁለት ጊዜ መስራት ጉዳት የለውም፤ አለመስራት ግን ጉዳት አለው።

እንዴት እንደሞከርነው

ሙከራዎቹ እውነተኛውን ማቀናበር ይመስላሉ። የማስጠንቀቂያ ሞጁሉን ሁለት ጊዜ እንደ ሁለት የተለዩ «ቅጂዎች» ይጭናሉ፣ ሁለቱንም በአንድ የጋራ ማከማቻ ላይ ያመለክታሉ፣ ከእያንዳንዱ ተመሳሳይ ማስጠንቀቂያ ያነሳሉ፣ ከዚያም «ከዴፕሎይ በኋላ» ለመወከል ሶስተኛ አዲስ ቅጂ ይጭናሉ እና እንደገና ያነሳሉ። ትክክለኛ አንድ ማስጠንቀቂያ ይላካል። ሌሎች ሙከራዎች የተለየ ገንቢ ማስጠንቀቂያ አሁንም እንደሚወጣ፣ P0 ከሁለቱም ቅጂዎች እንደሚላክ፣ እና ማከማቻው ሲወድቅ ወይም ከጊዜ ገደቡ ሲያልፍ ማስጠንቀቂያው አሁንም እንደሚላክ ይፈትሻሉ። የማጽዳቱ ማስተካከያ የራሱ ሙከራ አለው፦ የ24 ሰዓት ቁልፍ 20 ደቂቃ ቆይቶ ከሚመጡ 600 ሌሎች ማስጠንቀቂያዎች ይተርፋል።

ለማለፊያ ስራው፣ በአንድ መስኮት ውስጥ ሁለት ቅጂዎች በአንድ ጊዜ ሲነሱ፣ እና ሶስተኛ ምልክት በዚያው መስኮት ውስጥ ሲኖር፣ አንድ ዝርዝር ብቻ ይወጣል።

ከዚህ የወሰድናቸው ትምህርቶች

  • በማህደረ ትውስታ ያለ ሁኔታ በእያንዳንዱ ሂደት የተለየ ነው። በሰርቨሮች መካከል እውነት መሆን ያለበት ማንኛውም ነገር — «አንድ ጊዜ ተልኳል»፣ «አንድ ጊዜ ሠርቷል» — የሚጋሩት ቦታ መኖር አለበት።
  • ዴፕሎዮች ዳግም መጀመሮች ናቸው። እስከ ቀጣዩ ዳግም መጀመር ብቻ የሚቆይ ሁኔታ በተለመደ የስራ ቀን አይቆይም።
  • በየትኛው መንገድ እንደሚወድቅ ወስን። ለማስጠንቀቂያዎች፣ የጋራ ማከማቻ መውደቅ ማለት ያነሱ ሳይሆኑ ብዙ ማስጠንቀቂያዎች ማለት መሆን አለበት።
  • ምሳሌውን ሳይሆን ንድፉን ፈልግ። ማስጠንቀቂያው ጮክ ያለው ጉዳይ ነበር፤ የተባዛው የማስታረቂያ ስራ ያው ስህተት ነበር፣ በጸጥታ ስራን ያባክን ነበር።

ይህ ሁሉ ከMythex ውስጥ አይታይም። መድረካችንን እንዴት የተረጋጋ እንደምናቆይ ለበለጠ፣ ዴፕሎዮችን ወደ ዜሮ 502 ስህተቶች እንዴት እንዳወረድን እና የጠፋው የswap ፋይል ተመልከት። ብዙ የአንድ አገልግሎት ቅጂዎችን ስለማስኬድ ሃሳቡ አዲስ ከሆነልህ፣ ሰርቨር ምንድን ነው የሚለው መመሪያ መሠረታዊውን ይሸፍናል።

Mythex · Pricing · በAI ማንኛውንም ነገር ይገንቡ · የድር ጣቢያ እና የመተግበሪያ ቴምፕሌቶች · Mythex ከሌሎች ጋር ሲነጻጸር · የAI መተግበሪያ ግንባታ የቃላት መዝገበ-ቃላት · ነፃ የAI መተግበሪያ መገንቢያ መሳሪያዎች · English

English العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)