ከፊል-የተመሳሰለ ማባዛት ለምን ያስፈልግዎታል?

ሰላም ሁላችሁም። ቭላዲላቭ ሮዲን ተገናኝቷል። በአሁኑ ጊዜ በ OTUS ውስጥ በሶፍትዌር አርክቴክቸር እና ከፍተኛ ጭንቀት ሶፍትዌር አርክቴክቸር ላይ ኮርሶችን አስተምራለሁ። አዲስ የኮርስ ዥረት መጀመርን በመጠባበቅ ላይ "ከፍተኛ ጭነት አርክቴክት" ላካፍላችሁ የምፈልገውን አጭር ኦሪጅናል ጽሑፍ ለመጻፍ ወሰንኩ።

ከፊል-የተመሳሰለ ማባዛት ለምን ያስፈልግዎታል?

መግቢያ

ኤችዲዲ በሴኮንድ ከ400-700 ስራዎችን ብቻ ማከናወን ስለሚችል (ይህም በከፍተኛ ጭነት ስርዓት ላይ ከተለመዱት ራፕስ ጋር ሊወዳደር የማይችል) ክላሲክ የዲስክ ዳታቤዝ የስነ-ህንጻው ማነቆ ነው። ስለዚህ, የዚህን ማከማቻ ቅኝት ቅጦች ልዩ ትኩረት መስጠት ያስፈልጋል.

በአሁኑ ጊዜ 2 የውሂብ ጎታ ማዛመጃ ቅጦች አሉ፡ ማባዛት እና መጋራት። ማጋራት የመፃፍ ስራውን እንዲመዘኑ ይፈቅድልዎታል፣ እና በውጤቱም፣ በክላስተርዎ ውስጥ በአንድ አገልጋይ በአንድ ፃፍ rps ይቀንሳል። ማባዛት ተመሳሳይ ነገር እንዲያደርጉ ይፈቅድልዎታል, ነገር ግን በንባብ ስራዎች. ይህ ጽሁፍ ያተኮረው ለዚህ ንድፍ ነው።

ማባዛት

ማባዛትን በከፍተኛ ደረጃ ከተመለከቱ ፣ ቀላል ነገር ነው-አንድ አገልጋይ ነበረዎት ፣ በላዩ ላይ ውሂብ ነበር ፣ እና ከዚያ ይህ አገልጋይ ይህንን ውሂብ የማንበብ ሸክሙን መቋቋም አይችልም። ሁለት ተጨማሪ አገልጋዮችን ታክላለህ፣ በሁሉም አገልጋዮች ላይ ውሂብ ያመሳስላል፣ እና ተጠቃሚው በክላስተርህ ውስጥ ካለ ማንኛውም አገልጋይ ማንበብ ይችላል።

ምንም እንኳን ቀላልነት ቢታይም ፣ የዚህ እቅድ የተለያዩ አተገባበርን ለመመደብ ብዙ አማራጮች አሉ-

  • በክላስተር ውስጥ ባሉ ሚናዎች (ማስተር-ማስተር ወይም ጌታ-ባሪያ)
  • በተላኩ ነገሮች (በረድፍ ላይ የተመሰረተ፣ በመግለጫ ላይ የተመሰረተ ወይም የተደባለቀ)
  • በመስቀለኛ ማመሳሰል ዘዴ መሰረት

ዛሬ ነጥብ 3ን እናነሳለን።

ግብይት እንዴት ይፈጸማል?

ይህ ርዕስ ከማባዛት ጋር በቀጥታ የተገናኘ አይደለም፤ የተለየ ጽሑፍ ሊጻፍበት ይችላል፣ ነገር ግን ተጨማሪ ንባብ የግብይት መፈጸም ዘዴን ሳይረዱ ዋጋ ቢስ ስለሆነ፣ በጣም መሠረታዊ የሆኑትን ነገሮች ላስታውስዎ። የግብይት ስምምነት በ 3 ደረጃዎች ይከናወናል-

  1. ወደ ዳታቤዝ መዝገብ ግብይት መግባት።
  2. በዳታቤዝ ሞተር ውስጥ ግብይት መጠቀም።
  3. ግብይቱ በተሳካ ሁኔታ መተግበሩን ለደንበኛው ማረጋገጫ በመመለስ ላይ።

በተለያዩ የመረጃ ቋቶች ውስጥ ይህ ስልተ-ቀመር ልዩነት ሊኖረው ይችላል-ለምሳሌ ፣ በ MySQL ዳታቤዝ ኢንኖዲቢ ሞተር ውስጥ 2 ምዝግብ ማስታወሻዎች አሉ-አንደኛው ለማባዛት (ሁለትዮሽ ሎግ) እና ሌላኛው ACIDን ለመጠበቅ (መቀልበስ / እንደገና መዝገብ) በ PostgreSQL ውስጥ እያለ። ሁለቱንም ተግባራት የሚያከናውን አንድ ሎግ አለ (የፊት ሎግ = WAL ጻፍ)። ነገር ግን ከላይ የቀረበው በትክክል አጠቃላይ ጽንሰ-ሐሳብ ነው, ይህም እንደነዚህ ያሉ ጥቃቅን ነገሮች ግምት ውስጥ እንዳይገቡ ያስችላቸዋል.

የተመሳሰለ (አመሳስል) ማባዛት።

የተቀበሉትን ለውጦች በግብይቱ ስልተ ቀመር ላይ ለመድገም አመክንዮ እንጨምር፡-

  1. ወደ ዳታቤዝ መዝገብ ግብይት መግባት።
  2. በዳታቤዝ ሞተር ውስጥ ግብይት መጠቀም።
  3. ለሁሉም ቅጂዎች ውሂብ በመላክ ላይ።
  4. ግብይት በእነሱ ላይ መጠናቀቁን ከሁሉም ቅጂዎች ማረጋገጫ በመቀበል ላይ።
  5. ግብይቱ በተሳካ ሁኔታ መተግበሩን ለደንበኛው ማረጋገጫ በመመለስ ላይ።

በዚህ ዘዴ ብዙ ጉዳቶችን እናገኛለን-

  • ደንበኛው ለውጦቹ በሁሉም ቅጂዎች ላይ እስኪተገበሩ ድረስ ይጠብቃል።
  • በክላስተር ውስጥ ያሉት የአንጓዎች ብዛት ሲጨምር፣ የመፃፍ ስራው የተሳካ የመሆን እድላችንን እንቀንሳለን።

ከ 1 ኛ ነጥብ ጋር ሁሉም ነገር ብዙ ወይም ያነሰ ግልጽ ከሆነ, ለ 2 ኛ ነጥብ ምክንያቶች ማብራራት ተገቢ ነው. በተመሳሰለ ማባዛት ጊዜ ቢያንስ ከአንድ መስቀለኛ መንገድ ምላሽ ካልተቀበልን፣ ግብይቱን እንመልሰዋለን። ስለዚህ በክላስተር ውስጥ ያሉትን የአንጓዎች ብዛት በመጨመር የመፃፍ ስራ የመሳት እድልን ይጨምራል።

ማረጋገጫን ከተወሰኑ የአንጓዎች መቶኛ ብቻ ለምሳሌ ከ 51% (ኮረም) መጠበቅ እንችላለን? አዎ እንችላለን ፣ ግን በሚታወቀው ስሪት ከሁሉም አንጓዎች ማረጋገጫ ያስፈልጋል ፣ ምክንያቱም በዚህ ስብስብ ውስጥ የተሟላ የውሂብ ወጥነት ማረጋገጥ የምንችለው በዚህ መንገድ ነው ፣ ይህ የዚህ ዓይነቱ ማባዛት የማያጠራጥር ጥቅም ነው።

ያልተመሳሰለ (የማይመሳሰል) ማባዛት።

የቀደመውን ስልተ ቀመር እናስተካክል። ውሂብ ወደ ቅጂዎቹ “ከተወሰነ ጊዜ በኋላ” እንልካለን፣ እና “ከተወሰነ ጊዜ በኋላ” ለውጦቹ በቅጂዎቹ ላይ ይተገበራሉ፡

  1. ወደ ዳታቤዝ መዝገብ ግብይት መግባት።
  2. በዳታቤዝ ሞተር ውስጥ ግብይት መጠቀም።
  3. ግብይቱ በተሳካ ሁኔታ መተግበሩን ለደንበኛው ማረጋገጫ በመመለስ ላይ።
  4. ውሂብ ወደ ቅጂዎች በመላክ እና በእነሱ ላይ ለውጦችን በመተግበር ላይ።

ይህ አቀራረብ ክላስተር በፍጥነት እንዲሠራ ያደርገዋል, ምክንያቱም ደንበኛው ውሂቡ ቅጂዎቹ እስኪደርስ ድረስ እንዲጠብቅ አናደርግም እና እንዲያውም ቁርጠኛ ነው.

ነገር ግን "ከተወሰነ ጊዜ በኋላ" ወደ ቅጂዎች የመጣል ሁኔታ ወደ ግብይቱ መጥፋት እና በተጠቃሚው የተረጋገጠ ግብይት መጥፋት ሊያስከትል ይችላል ፣ ምክንያቱም መረጃው ለመድገም ጊዜ ከሌለው ለደንበኛው ማረጋገጫ። ስለ ቀዶ ጥገናው ስኬት ተልኳል, እና ለውጦቹ የደረሱበት መስቀለኛ መንገድ HDD ተሰናክሏል, ግብይቱን እናጣለን, ይህም ወደ በጣም ደስ የማይል መዘዞች ያስከትላል.

ሰሚሲንክ ማባዛት።

በመጨረሻ ወደ ከፊል-የተመሳሰለ ማባዛት ደርሰናል። ይህ ዓይነቱ ማባዛት በጣም የታወቀ ወይም በጣም የተለመደ አይደለም፣ ነገር ግን ከፍተኛ ፍላጎት አለው ምክንያቱም የሁለቱም የተመሳሳይ እና ያልተመሳሰሉ መባዛት ጥቅሞችን ሊያጣምር ይችላል።

የቀደሙትን 2 መንገዶች ለማጣመር እንሞክር። ደንበኛውን ለረጅም ጊዜ አናቆየውም ፣ ግን ውሂቡ እንዲደገም እንፈልጋለን።

  1. ወደ ዳታቤዝ መዝገብ ግብይት መግባት።
  2. በዳታቤዝ ሞተር ውስጥ ግብይት መጠቀም።
  3. ውሂብ ወደ ቅጂዎች በመላክ ላይ።
  4. ለውጦቹ መቀበላቸውን ከቅጂው ማረጋገጫ መቀበል (ከተወሰነ ጊዜ በኋላ ይተገበራሉ)።
  5. ግብይቱ በተሳካ ሁኔታ መተግበሩን ለደንበኛው ማረጋገጫ በመመለስ ላይ።

እባክዎ በዚህ ስልተ-ቀመር የግብይት ኪሳራ የሚከሰተው ሁለቱም ለውጦቹን የሚቀበሉት መስቀለኛ መንገዶች እና የተባዛ መስቀለኛ መንገድ ካልተሳኩ ብቻ ነው። እንዲህ ዓይነቱ ውድቀት የመከሰቱ አጋጣሚ ዝቅተኛ እንደሆነ ተደርጎ ይቆጠራል, እና እነዚህ አደጋዎች ተቀባይነት አላቸው.

ነገር ግን በዚህ አቀራረብ የፍንዳታ ንባብ አደጋ ሊኖር ይችላል. እስቲ የሚከተለውን ሁኔታ እናስብ፡ በደረጃ 4፣ ከማንኛውም ቅጂ ማረጋገጫ አላገኘንም። ይህንን ግብይት መመለስ አለብን እና ማረጋገጫ ለደንበኛው መመለስ የለብንም። መረጃው በደረጃ 2 ላይ ስለተተገበረ በደረጃ 2 መጨረሻ እና በግብይቱ መልሶ መመለሻ መካከል የጊዜ ክፍተት አለ ፣ በዚህ ጊዜ ትይዩ ግብይቶች በመረጃ ቋቱ ውስጥ መሆን የማይገባቸው ለውጦችን ማየት ይችላሉ።

የጠፋ-ያነሰ ሴሚሳይክ ማባዛት።

ትንሽ ካሰቡ የአልጎሪዝም ደረጃዎችን መቀልበስ እና በዚህ ሁኔታ ውስጥ የፋንተም ንባብ ችግርን ማስተካከል ይችላሉ-

  1. ወደ ዳታቤዝ መዝገብ ግብይት መግባት።
  2. ቅጂ ውሂብ በመላክ ላይ።
  3. ለውጦቹ መቀበላቸውን ከቅጂው ማረጋገጫ መቀበል (ከተወሰነ ጊዜ በኋላ ይተገበራሉ)።
  4. በዳታቤዝ ሞተር ውስጥ ግብይት መጠቀም።
  5. ግብይቱ በተሳካ ሁኔታ መተግበሩን ለደንበኛው ማረጋገጫ በመመለስ ላይ።

አሁን ለውጦችን የምናደርገው ከተደጋገሙ ብቻ ነው።

መደምደሚያ

እንደተለመደው ምንም አይነት ምቹ መፍትሄዎች የሉም, የመፍትሄዎች ስብስብ አለ, እያንዳንዳቸው የራሳቸው ጥቅሞች እና ጉዳቶች ያሏቸው እና የተለያዩ ችግሮችን ለመፍታት ተስማሚ ናቸው. በተባዛ የውሂብ ጎታ ውስጥ ውሂብን ለማመሳሰል ዘዴን ለመምረጥ ይህ ፍጹም እውነት ነው። ከፊል-የተመሳሰለ ማባዛት ያለው የጥቅማጥቅሞች ስብስብ በበቂ ሁኔታ ጠንካራ እና ትኩረት የሚስብ ነው, ምንም እንኳን ዝቅተኛ ስርጭት ቢኖረውም, ትኩረት ሊሰጠው የሚገባ ነው.

ይኼው ነው. እንገናኝ ኮርስ!

ምንጭ: hab.com

አስተያየት ያክሉ