[ትርጉም] የመልእክተኛ ክር ሞዴል

የጽሁፉ ትርጉም፡- የመልእክት ክር ሞዴል - https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310

ይህ መጣጥፍ በጣም አስደሳች ሆኖ አግኝቼዋለሁ ፣ እና መልእክተኛ ብዙውን ጊዜ እንደ “ኢስቲዮ” አካል ወይም በቀላሉ እንደ kubernetes “መግቢያ ተቆጣጣሪ” ስለሆነ ፣ ብዙ ሰዎች ከእሱ ጋር ተመሳሳይ ቀጥተኛ ግንኙነት የላቸውም ፣ ለምሳሌ ፣ ከተለመደው ጋር። Nginx ወይም Haproxy ጭነቶች። ነገር ግን, አንድ ነገር ከተበላሸ, ከውስጥ እንዴት እንደሚሰራ መረዳት ጥሩ ይሆናል. ልዩ ቃላትን ጨምሮ በተቻለ መጠን ብዙ ፅሁፉን ወደ ራሽያኛ ለመተርጎም ሞከርኩ፤ ይህን ማየት በጣም የሚያም ለሚመስላቸው፣ ዋናውን ቅጂ በቅንፍ ውስጥ ተውኩት። ወደ ድመት እንኳን በደህና መጡ።

የዝቅተኛ ደረጃ ቴክኒካል ሰነዶች ለEnvoy codebase በአሁኑ ጊዜ በጣም ትንሽ ነው። ይህንን ለማስተካከል፣ ስለ መልዕክተኛው የተለያዩ ስርአቶች ተከታታይ የብሎግ ልጥፎችን ለመስራት እቅድ አለኝ። ይህ የመጀመሪያው ጽሑፍ ስለሆነ እባክዎን ምን እንደሚያስቡ እና ወደፊት በሚወጡት መጣጥፎች ላይ ምን ሊፈልጉ እንደሚችሉ ያሳውቁኝ።

ስለ መልእክተኛ ከሚደርሱኝ በጣም የተለመዱ ቴክኒካል ጥያቄዎች አንዱ ስለሚጠቀመው የፈትል ሞዴል ዝቅተኛ ደረጃ መግለጫ መጠየቅ ነው። በዚህ ልኡክ ጽሁፍ ላይ፣ መልእክተኛ ካርታዎችን ከክር ጋር እንዴት እንደሚያገናኝ፣ እንዲሁም ኮድን የበለጠ ትይዩ እና ከፍተኛ አፈጻጸም ለማድረግ በውስጡ የሚጠቀመውን የ Thread Local Storage ስርዓትን እገልጻለሁ።

የክርክር አጠቃላይ እይታ

[ትርጉም] የመልእክተኛ ክር ሞዴል

መልእክተኛ ሶስት የተለያዩ አይነት ዥረቶችን ይጠቀማል፡-

  • ዋና፡- ይህ ክር የሂደቱን ጅምር እና ማቋረጡን ይቆጣጠራል፣ ሁሉንም የXDS (xDiscovery Service) ኤፒአይን፣ ዲ ኤን ኤስን፣ የጤና ምርመራን፣ አጠቃላይ ክላስተር እና የሩጫ ጊዜ አስተዳደርን፣ የስታቲስቲክስን ዳግም ማስጀመር፣ አስተዳደር እና አጠቃላይ የሂደት አስተዳደርን - የሊኑክስ ምልክቶችን ጨምሮ ሁሉንም የXDS (xDiscovery Service) ኤፒአይን ይቆጣጠራል። በዚህ ክር ውስጥ የሚከሰት ያልተመሳሰለ እና "የማይታገድ" ነው። በአጠቃላይ, ዋናው ክር ለማሄድ ከፍተኛ መጠን ያለው ሲፒዩ የማይጠይቁትን ሁሉንም ወሳኝ የተግባር ሂደቶች ያቀናጃል. ይህ አብዛኛው የቁጥጥር ኮድ ልክ እንደ ነጠላ ክር እንዲጻፍ ያስችለዋል።
  • ሰራተኛ፡ በነባሪነት ኤንቮይ በሲስተሙ ውስጥ ላለው እያንዳንዱ የሃርድዌር ክር የሰራተኛ ክር ይፈጥራል፣ ይህ አማራጭን በመጠቀም መቆጣጠር ይቻላል። --concurrency. እያንዳንዱ የሰራተኛ ክር እያንዳንዱን አድማጭ የማዳመጥ ኃላፊነት ያለበት “የማያግድ” የክስተት ምልልስ ያካሂዳል፤ ይህ ጽሑፍ በሚጻፍበት ጊዜ (ጁላይ 29፣ 2017) የአድማጩን መከፋፈል የለም፣ አዳዲስ ግንኙነቶችን መቀበል፣ የማጣሪያ ቁልል ፈጣን ማድረግ ግንኙነቱን, እና በግንኙነቱ የህይወት ዘመን ሁሉንም የግብአት / ውፅዓት (አይኦ) ስራዎችን ማካሄድ. እንደገና፣ ይህ አብዛኛው የግንኙነት አያያዝ ኮድ ልክ እንደ ነጠላ ክር እንዲፃፍ ያስችለዋል።
  • የፋይል ማጽጃ; መልእክተኛ የሚጽፈው እያንዳንዱ ፋይል፣ በዋናነት የመዳረሻ ምዝግብ ማስታወሻዎች፣ በአሁኑ ጊዜ ራሱን የቻለ የማገድ ክር አለው። ይህ የሆነበት ምክንያት በሚጠቀሙበት ጊዜ እንኳን በፋይል ስርዓቱ የተሸጎጡ ፋይሎችን በመፃፍ ነው። O_NONBLOCK አንዳንድ ጊዜ ሊታገድ ይችላል (ትንፋሽ). የሰራተኛ ክሮች ወደ ፋይል መፃፍ ሲፈልጉ ውሂቡ በእውነቱ ወደ ማህደረ ትውስታ ቋት ይንቀሳቀሳል በመጨረሻም በክር ውስጥ ይለቀቃል ፋይል ማፍሰሻ. ይህ የማህደረ ትውስታ ቋት ለመሙላት በሚሞከርበት ጊዜ በቴክኒካዊ ሁሉም የሰራተኛ ክሮች አንድ አይነት መቆለፊያን የሚገድቡበት አንዱ የኮድ አካባቢ ነው።

የግንኙነት አያያዝ

ከዚህ በላይ በአጭሩ እንደተብራራው፣ ሁሉም የሰራተኛ ክሮች ያለ አንዳች ግርዶሽ ሁሉንም አድማጮች ያዳምጣሉ። ስለዚህ ከርነሉ በጸጋ ተቀባይነት ያላቸውን ሶኬቶች ወደ ሰራተኛ ክሮች ለመላክ ይጠቅማል። ዘመናዊ ኮርነሎች በአጠቃላይ በዚህ ረገድ በጣም ጥሩ ናቸው ፣ እንደ ግብዓት / ውፅዓት (አይኦ) ቅድሚያ ማጎልበት ያሉ ሌሎች ክሮች በተመሳሳይ ሶኬት ላይ የሚያዳምጡ ክሮች መጠቀም ከመጀመራቸው በፊት ክርን ለመሙላት ለመሞከር ይጠቀማሉ። እያንዳንዱን ጥያቄ ለማስኬድ መቆለፍ (Spinlock)።
አንድ ጊዜ ግንኙነት በሠራተኛ ክር ላይ ተቀባይነት ካገኘ በኋላ ያንን ክር ፈጽሞ አይለቅም. ሁሉም ተጨማሪ የግንኙነቱ ሂደት ሙሉ በሙሉ በሠራተኛ ክር ውስጥ ነው የሚካሄደው፣ ማንኛውንም የማስተላለፊያ ባህሪን ጨምሮ።

ይህ በርካታ ጠቃሚ ውጤቶች አሉት:

  • በኤንኤን ውስጥ ያሉ ሁሉም የግንኙነት ገንዳዎች ለሠራተኛ ክር ይመደባሉ. ስለዚህ፣ ምንም እንኳን የኤችቲቲፒ/2 ማገናኛ ገንዳዎች ከእያንዳንዱ የወራጅ አስተናጋጅ ጋር በአንድ ጊዜ አንድ ግኑኝነት ቢያደርጉም፣ አራት የሰራተኛ ክሮች ካሉ፣ በቋሚ ሁኔታ ውስጥ አራት የኤችቲቲፒ/2 ግንኙነቶች በአንድ ወደላይ አስተናጋጅ ይኖራሉ።
  • መልእክተኛ በዚህ መንገድ የሚሰራበት ምክንያት ሁሉንም ነገር በአንድ የሰራተኛ ክር ላይ በማስቀመጥ ሁሉም ማለት ይቻላል ኮድ ሳይታገድ እና ነጠላ ክር የተገጠመ ያህል ሊፃፍ ይችላል። ይህ ንድፍ ብዙ ኮድ እና ሚዛኖችን በማይታመን ሁኔታ ወደ ላልተወሰነ የሰራተኛ ክሮች መፃፍ ቀላል ያደርገዋል።
  • ነገር ግን፣ ከዋና ዋና መንገዶች አንዱ ከማስታወሻ ገንዳ እና ከግንኙነት ቅልጥፍና አንፃር፣ በትክክል ማዋቀር በጣም አስፈላጊ ነው። --concurrency. ከሚያስፈልገው በላይ ብዙ የሰራተኛ ክሮች መኖሩ ማህደረ ትውስታን ያባክናል፣ ብዙ የስራ ፈት ግንኙነቶችን ይፈጥራል እና የግንኙነት ውህደት ፍጥነት ይቀንሳል። በሊፍት፣የእኛ መልእክተኛ የጎን መኪና ኮንቴይነሮች በጣም ዝቅተኛ በሆነ ኮንፈረንስ ይሰራሉ ​​በዚህም አፈፃፀሙ ከጎናቸው ከተቀመጡት አገልግሎቶች ጋር ይዛመዳል። ኤንኤንን እንደ የጠርዝ ፕሮክሲ የምንሰራው በከፍተኛው ተመሳሳይነት ብቻ ነው።

አለማገድ ማለት ምን ማለት ነው?

ዋናው እና የሰራተኛ ክሮች እንዴት እንደሚሰሩ ሲወያዩ "የማይታገድ" የሚለው ቃል እስካሁን ብዙ ጊዜ ጥቅም ላይ ውሏል። ሁሉም ኮድ የተፃፈው ምንም ነገር በጭራሽ እንደማይታገድ በማሰብ ነው። ሆኖም፣ ይህ ሙሉ በሙሉ እውነት አይደለም (ሙሉ በሙሉ እውነት ያልሆነው ምንድን ነው?)

መልእክተኛ ብዙ ረጅም የሂደት መቆለፊያዎችን ይጠቀማል፡-

  • እንደተብራራው፣ የመዳረሻ ምዝግብ ማስታወሻዎችን በሚጽፉበት ጊዜ፣ ሁሉም የሰራተኛ ክሮች የማስታወሻ መዝገብ ቋት ከመሙላቱ በፊት አንድ አይነት መቆለፊያ ያገኛሉ። የተቆለፈበት ጊዜ በጣም ዝቅተኛ መሆን አለበት, ነገር ግን መቆለፊያው በከፍተኛ ሁኔታ እና በከፍተኛ ፍጥነት መወዳደር ይቻላል.
  • መልዕክተኛው ለክርክሩ አካባቢያዊ የሆኑ ስታቲስቲክስን ለማስተናገድ በጣም የተወሳሰበ አሰራርን ይጠቀማል። ይህ የተለየ ልጥፍ ርዕስ ይሆናል። ሆኖም፣ እኔ ባጭሩ እጠቅሳለሁ የክር ስታቲስቲክስን በአገር ውስጥ የማስኬድ አካል፣ አንዳንድ ጊዜ በማዕከላዊ “ስታቲስቲክስ መደብር” ላይ መቆለፊያ ማግኘት አስፈላጊ ነው። ይህ መቆለፍ በፍፁም አያስፈልግም።
  • ዋናው ክር በየጊዜው ከሁሉም የሰራተኛ ክሮች ጋር ማስተባበር ያስፈልገዋል. ይህ የሚከናወነው ከዋናው ክር ወደ ሰራተኛ ክሮች እና አንዳንድ ጊዜ ከሠራተኛ ክሮች ወደ ዋናው ክር "በማተም" ነው. የታተመው መልእክት በኋላ ለማድረስ ወረፋ እንዲይዝ መላክ መቆለፊያ ያስፈልገዋል። እነዚህ መቆለፊያዎች በቁም ነገር መሟገት የለባቸውም፣ ነገር ግን አሁንም በቴክኒክ ሊታገዱ ይችላሉ።
  • መልእክተኛ ወደ ስርዓቱ የስህተት ዥረት (መደበኛ ስህተት) ምዝግብ ማስታወሻ ሲጽፍ በጠቅላላው ሂደት ላይ መቆለፊያ ያገኛል። በአጠቃላይ የመልእክተኛው የአካባቢ ምዝግብ ማስታወሻ ከአፈጻጸም አንፃር በጣም አስከፊ ነው ተብሎ ስለሚታሰብ ለማሻሻል ብዙም ትኩረት አልተሰጠም።
  • ሌሎች ጥቂት የዘፈቀደ መቆለፊያዎች አሉ፣ ነገር ግን አንዳቸውም ቢሆኑ አፈጻጸም ወሳኝ ናቸው እና ፈጽሞ መቃወም የለባቸውም።

የአካባቢ ማከማቻ ክር

መልእክተኛው የዋናውን ክር ኃላፊነቶችን ከሠራተኛው ክር ኃላፊነቶች የሚለይበት መንገድ በመኖሩ ምክንያት ውስብስብ ሂደት በዋናው ክር ላይ ተሠርቶ ለእያንዳንዱ ሠራተኛ ክር በከፍተኛ ሁኔታ በአንድ ጊዜ እንዲሰጥ ማድረግ ያስፈልጋል። ይህ ክፍል የEnvoy Thread Local Storage (TLS) በከፍተኛ ደረጃ ይገልጻል። በሚቀጥለው ክፍል ክላስተርን ለማስተዳደር እንዴት ጥቅም ላይ እንደሚውል እገልጻለሁ.
[ትርጉም] የመልእክተኛ ክር ሞዴል

ቀደም ሲል እንደተገለፀው ዋናው ክር ሁሉንም የአስተዳደር እና የመቆጣጠሪያ አውሮፕላኖችን ተግባር በመልዕክት ሂደት ውስጥ ይቆጣጠራል. የመቆጣጠሪያው አውሮፕላኑ እዚህ ትንሽ ተጭኗል፣ ነገር ግን በመልእክተኛው ሂደት ውስጥ ሲመለከቱት እና የሰራተኛው ክሮች ከሚያደርጉት ማስተላለፍ ጋር ሲያነፃፅሩት ትርጉም ይሰጣል። አጠቃላይ ደንቡ ዋናው ክር ሂደት አንዳንድ ስራዎችን ይሰራል, ከዚያም እያንዳንዱን የሰራተኛ ክር እንደ ሥራው ውጤት ማዘመን ያስፈልገዋል. በዚህ ሁኔታ የሰራተኛው ክር በእያንዳንዱ መዳረሻ ላይ መቆለፊያ ማግኘት አያስፈልገውም.

የመልእክተኛው ቲኤልኤስ (ክር የአካባቢ ማከማቻ) ስርዓት እንደሚከተለው ይሰራል።

  • በዋናው ክር ላይ የሚሰራ ኮድ ለጠቅላላው ሂደት TLS ማስገቢያ ሊመደብ ይችላል። ምንም እንኳን ይህ ረቂቅ ቢሆንም፣ በተግባር ግን የቬክተር ኢንዴክስ ነው፣ ይህም የO(1) መዳረሻን ይሰጣል።
  • ዋናው ክር የዘፈቀደ ውሂብን በውስጡ ማስገቢያ ውስጥ መጫን ይችላል። ይህ ሲደረግ፣ ውሂቡ በእያንዳንዱ ሰራተኛ ክር ላይ እንደ መደበኛ የክስተት ዑደት ታትሟል።
  • የሰራተኛ ክሮች ከTLS ክፍላቸው ማንበብ እና እዚያ የሚገኘውን ማንኛውንም ክር-አካባቢያዊ ውሂብ ማምጣት ይችላሉ።

ምንም እንኳን በጣም ቀላል እና በሚያስገርም ሁኔታ ኃይለኛ ምሳሌ ቢሆንም, ከ RCU (ማንበብ-ቅጂ-አዘምን) እገዳ ጽንሰ-ሐሳብ ጋር በጣም ተመሳሳይ ነው. በመሠረቱ፣ የሠራተኛ ክሮች ሥራ በሚሠራበት ጊዜ በTLS ክፍተቶች ውስጥ ምንም ዓይነት የውሂብ ለውጦችን በጭራሽ አይመለከቱም። ለውጥ የሚከሰተው በስራ ክንውኖች መካከል ባለው የእረፍት ጊዜ ውስጥ ብቻ ነው.

መልዕክተኛው ይህንን በሁለት የተለያዩ መንገዶች ይጠቀማል።

  • በእያንዳንዱ የሰራተኛ ክር ላይ የተለያዩ መረጃዎችን በማከማቸት ውሂቡን ያለ ምንም እገዳ ማግኘት ይቻላል.
  • በእያንዳንዱ የሰራተኛ ክር ላይ በተነባቢ-ብቻ ሁነታ ወደ አለምአቀፍ ውሂብ የጋራ ጠቋሚን በመጠበቅ። ስለዚህ, እያንዳንዱ ሰራተኛ ክር ስራው በሚሰራበት ጊዜ ሊቀንስ የማይችል የውሂብ ማጣቀሻ ቆጠራ አለው. ሁሉም ሰራተኞች ሲረጋጉ እና አዲስ የተጋራ ውሂብ ሲሰቅሉ ብቻ ነው የድሮው ውሂብ የሚጠፋው። ይህ ከ RCU ጋር ተመሳሳይ ነው።

የክላስተር ማሻሻያ ክር

በዚህ ክፍል TLS (Thread local storage) ክላስተርን ለማስተዳደር እንዴት ጥቅም ላይ እንደሚውል እገልጻለሁ። የክላስተር አስተዳደር የ xDS ኤፒአይ እና/ወይም የዲ ኤን ኤስ ሂደትን እንዲሁም የጤና ምርመራን ያካትታል።
[ትርጉም] የመልእክተኛ ክር ሞዴል

የክላስተር ፍሰት አስተዳደር የሚከተሉትን ክፍሎች እና ደረጃዎች ያካትታል።

  1. የክላስተር አስተዳዳሪው ሁሉንም የሚታወቁ የክላስተር ጅረቶችን፣ የክላስተር ግኝት አገልግሎት (ሲዲኤስ) ኤፒአይን፣ ሚስጥራዊ ግኝት አገልግሎትን (ኤስዲኤስ) እና የመጨረሻ ነጥብ ግኝት አገልግሎትን (ኢዲኤስ) ኤፒአይዎችን፣ ዲ ኤን ኤስ እና ንቁ የውጭ ፍተሻዎችን የሚያስተዳድር በመልእክተኛ ውስጥ ያለ አካል ነው። የተገኙ አስተናጋጆችን እና የጤና ሁኔታን የሚያካትት ለእያንዳንዱ የላይ ተፋሰስ ክላስተር "በመጨረሻም ወጥነት ያለው" እይታን የመፍጠር ሃላፊነት አለበት።
  2. የጤና ፈታኙ ንቁ የሆነ የጤና ምርመራ ያካሂዳል እና የጤና ሁኔታ ለውጦችን ለክላስተር አስተዳዳሪ ያሳውቃል።
  3. CDS (ክላስተር ግኝት አገልግሎት) / ኤስዲኤስ (ሚስጥራዊ የማግኘት አገልግሎት) / EDS (የመጨረሻ ነጥብ ግኝት አገልግሎት) / ዲ ኤን ኤስ የክላስተር አባልነትን ለመወሰን ይከናወናሉ። የግዛቱ ለውጥ ወደ ክላስተር አስተዳዳሪ ይመለሳል።
  4. እያንዳንዱ ሰራተኛ ክር ያለማቋረጥ የክስተት ዑደትን ያከናውናል።
  5. የክላስተር ስራ አስኪያጁ የክላስተር ግዛት መቀየሩን ሲያውቅ የክላስተር ግዛት አዲስ ተነባቢ-ብቻ ቅጽበተ ፎቶ ይፈጥራል እና ለእያንዳንዱ ሰራተኛ ክር ይልካል።
  6. በሚቀጥለው ጸጥታ ወቅት፣ የሰራተኛው ክር በተመደበው የTLS ማስገቢያ ውስጥ ያለውን ቅጽበታዊ ገጽ እይታ ያዘምናል።
  7. በ I/O ክስተት ወቅት አስተናጋጁን ሚዛን እንዲጭን ይወስናል፣የሎድ ሚዛኑ ስለ አስተናጋጁ መረጃ ለማግኘት TLS (Thread local storage) ማስገቢያ ይጠይቃል። ይህ መቆለፊያዎችን አይፈልግም. የጭነት ሚዛን ሰጪዎች እና ሌሎች አካላት መሸጎጫዎችን፣ የውሂብ አወቃቀሮችን፣ ወዘተ እንደገና ማስላት እንዲችሉ TLS እንዲሁ የዝማኔ ክስተቶችን ሊያስነሳ እንደሚችል ልብ ይበሉ። ይህ ከዚህ ልጥፍ ወሰን በላይ ነው, ነገር ግን በኮዱ ውስጥ በተለያዩ ቦታዎች ጥቅም ላይ ይውላል.

ከላይ ያለውን አሰራር በመጠቀም መልእክተኛ ማንኛውንም ጥያቄ ያለ ምንም እገዳ (ከዚህ ቀደም ከተገለጸው በስተቀር) ማስተናገድ ይችላል። ከራሱ የTLS ኮድ ውስብስብነት ባሻገር፣ አብዛኛው ኮድ መልቲትራይድ እንዴት እንደሚሰራ እና ነጠላ-ክር ሊፃፍ እንደሚችል መረዳት አያስፈልጋቸውም። ይህ ከላቁ አፈጻጸም በተጨማሪ አብዛኛው ኮድ ለመፃፍ ቀላል ያደርገዋል።

TLS የሚጠቀሙ ሌሎች ንዑስ ስርዓቶች

TLS (ክር የአካባቢ ማከማቻ) እና RCU (የቅጂ ማዘመኛን አንብብ) በመልእክተኛ ውስጥ በሰፊው ጥቅም ላይ ይውላሉ።

የመጠቀም ምሳሌዎች

  • በአፈፃፀም ጊዜ ተግባራትን የመቀየር ዘዴ; አሁን ያለው የነቁ ተግባራት ዝርዝር በዋናው ክር ውስጥ ይሰላል. እያንዳንዱ ሠራተኛ ክር ከዚያም RCU ትርጉም በመጠቀም ተነባቢ-ብቻ ቅጽበተ ይሰጣል.
  • የመንገድ ጠረጴዛዎችን መተካትበ RDS (Route Discovery Service) ለተሰጡት የመንገድ ሰንጠረዦች የመንገድ ጠረጴዛዎች በዋናው ክር ላይ ተፈጥረዋል. የንባብ-ብቻ ቅጽበተ-ፎቶው በመቀጠል RCU (የቅጂ ማዘመኛን አንብብ) ትርጓሜዎችን በመጠቀም ለእያንዳንዱ ሰራተኛ ክር ይቀርባል። ይህ የመንገድ ጠረጴዛዎችን መቀየር በአቶሚክ ውጤታማ ያደርገዋል።
  • HTTP ራስጌ መሸጎጫ፡ እንደሚታየው፣ ለእያንዳንዱ ጥያቄ የኤችቲቲፒ አርዕስትን ማስላት (~25K+ RPS per core) በጣም ውድ ነው። መልእክተኛው በየግማሽ ሰከንድ ገደማ የራስጌውን ማዕከላዊ ያሰላል እና ለእያንዳንዱ ሠራተኛ በTLS እና RCU በኩል ይሰጣል።

ሌሎች ጉዳዮችም አሉ፣ ነገር ግን የቀደሙት ምሳሌዎች TLS ምን ጥቅም ላይ እንደሚውል ጥሩ ግንዛቤን መስጠት አለባቸው።

የታወቁ የአፈፃፀም ጉድለቶች

መልዕክተኛው በአጠቃላይ በጥሩ ሁኔታ የሚሰራ ቢሆንም፣ በጣም ከፍተኛ በሆነ ተመሳሳይነት እና ግብይት ጥቅም ላይ ሲውል ትኩረት የሚሹ ጥቂት ታዋቂ ቦታዎች አሉ።

  • በዚህ ጽሑፍ ውስጥ እንደተገለፀው በአሁኑ ጊዜ ሁሉም የሰራተኛ ክሮች ወደ የመዳረሻ መዝገብ ማህደረ ትውስታ ቋት ሲጽፉ መቆለፊያ ያገኛሉ. በከፍተኛ ተጓዳኝ እና ከፍተኛ የውጤት መጠን፣ ወደ መጨረሻው ፋይል በሚጽፉበት ጊዜ ከትዕዛዝ ውጪ ለማድረስ ወጪ ለእያንዳንዱ ሰራተኛ የመዳረሻ ምዝግብ ማስታወሻዎችን መሰብሰብ ያስፈልግዎታል። በአማራጭ፣ ለእያንዳንዱ ሰራተኛ ክር የተለየ የመዳረሻ መዝገብ መፍጠር ይችላሉ።
  • ምንም እንኳን ስታቲስቲክስ በጣም የተመቻቸ ቢሆንም፣ በጣም ከፍተኛ በሆነ ተመሳሳይነት እና መጠን በግለሰብ ስታቲስቲክስ ላይ የአቶሚክ ክርክር ሊኖር ይችላል። የዚህ ችግር መፍትሔ ቆጣሪዎች በእያንዳንዱ ሰራተኛ ክር በየጊዜው የማዕከላዊ ቆጣሪዎችን ዳግም ማስጀመር. ይህ በሚቀጥለው ጽሑፍ ውስጥ ይብራራል.
  • መልእክተኛ ጉልህ የሆነ የማስኬጃ ግብዓቶችን የሚጠይቁ በጣም ጥቂት ግንኙነቶች በሌሉበት ሁኔታ ውስጥ ከተሰማሩ አሁን ያለው አርክቴክቸር ጥሩ አይሰራም። ግንኙነቶች በሠራተኛ ክሮች መካከል በእኩልነት እንዲከፋፈሉ ምንም ዋስትና የለም. ይህ የሰራተኛ ግንኙነትን ማመጣጠን በመተግበር ሊፈታ ይችላል, ይህም በሠራተኛ ክሮች መካከል ግንኙነቶችን መለዋወጥ ያስችላል.

መደምደሚያ

የመልእክት ፈትል ሞዴል በትክክል ካልተዋቀረ ሊባክን በሚችል ማህደረ ትውስታ እና ግንኙነቶች ወጪ የፕሮግራም አወጣጥን ቀላል እና ትልቅ ትይዩ ለማቅረብ የተነደፈ ነው። ይህ ሞዴል በጣም ከፍተኛ በሆነ የክር ብዛት እና በጥቅም ላይ በደንብ እንዲሰራ ያስችለዋል.
በትዊተር ላይ ባጭሩ እንደገለጽኩት ዲዛይኑ እንደ DPDK (ዳታ ፕላኔ ልማት ኪት) ባሉ ሙሉ የተጠቃሚ-ሞድ ኔትዎርኪንግ ቁልል ላይ ሊሄድ ይችላል፣ይህም የተለመደው አገልጋዮች በሴኮንድ በሚሊዮን የሚቆጠሩ ጥያቄዎችን በሙሉ L7 ሂደት እንዲያስተናግዱ ያደርጋል። በሚቀጥሉት ጥቂት ዓመታት ውስጥ ምን እንደሚገነባ ማየት በጣም አስደሳች ይሆናል.
አንድ የመጨረሻ ፈጣን አስተያየት፡ ለምን C++ን ለመልእክተኛ እንደመረጥን ብዙ ጊዜ ጠይቄያለሁ። ምክንያቱ አሁንም በዚህ ጽሁፍ ላይ የተገለፀው አርክቴክቸር የሚገነባበት ብቸኛው በስፋት ጥቅም ላይ የዋለው የኢንዱስትሪ ደረጃ ቋንቋ በመሆኑ ነው። C ++ በእርግጠኝነት ለሁሉም ወይም ለብዙ ፕሮጀክቶች ተስማሚ አይደለም, ነገር ግን ለተወሰኑ የአጠቃቀም ጉዳዮች አሁንም ስራውን ለማከናወን ብቸኛው መሳሪያ ነው.

ወደ ኮድ አገናኞች

በዚህ ልጥፍ ውስጥ የተብራራ በይነገጽ እና የአርእስት ትግበራዎች የፋይሎች አገናኞች፡-

ምንጭ: hab.com

አስተያየት ያክሉ