የተከፋፈሉ መተግበሪያዎች ግንባታ ብሎኮች። ዜሮ ግምት

የተከፋፈሉ መተግበሪያዎች ግንባታ ብሎኮች። ዜሮ ግምት

አለም ቆሞ አይቆምም። መሻሻል አዳዲስ የቴክኖሎጂ ፈተናዎችን ይፈጥራል። በተለዋዋጭ መስፈርቶች መሠረት የመረጃ ሥርዓቶች አርክቴክቸር መሻሻል አለበት። ዛሬ በክስተት ላይ የተመሰረተ አርክቴክቸር፣ ኮንፈረንስ፣ ኮንፈረንስ፣ ተመሳሳይነት እና እንዴት በኤርላንግ ውስጥ ከዚህ ሁሉ ጋር በሰላም መኖር እንደሚችሉ እንነጋገራለን።

መግቢያ

በተዘጋጀው ስርዓት መጠን እና ለእሱ በሚያስፈልጉት መስፈርቶች ላይ በመመስረት እኛ, ገንቢዎች, በስርዓቱ ውስጥ የመረጃ ልውውጥ ዘዴን እንመርጣለን. በአብዛኛዎቹ ሁኔታዎች የአገልግሎቶችን መስተጋብር ለማደራጀት, የስራ አማራጭ ከደላላ ጋር እቅድ ሊሆን ይችላል, ለምሳሌ በ RabbitMQ ወይም kafka ላይ የተመሰረተ. ግን አንዳንድ ጊዜ የክስተቶች ፍሰት ፣ SLA እና በስርዓቱ ላይ ያለው የቁጥጥር ደረጃ ዝግጁ የሆነ መልእክት ለእኛ ተስማሚ ስላልሆነ ነው። በእርግጥ ለትራንስፖርት ንብርብር እና ክላስተር ምስረታ ሃላፊነት በመውሰድ ስርዓቱን በጥቂቱ ሊያወሳስቡት ይችላሉ ለምሳሌ ZeroMQ ወይም nanomsg ን በመጠቀም። ነገር ግን ስርዓቱ በቂ የሆነ የመተላለፊያ ይዘት እና የመደበኛ የኤርላንግ ክላስተር አቅም ካለው፣ ተጨማሪ አካል የማስተዋወቅ ጉዳይ ዝርዝር ጥናት እና ኢኮኖሚያዊ ማረጋገጫ ይጠይቃል።

ምላሽ የሚሰራጩ መተግበሪያዎች ርዕስ በጣም ሰፊ ነው። በአንቀጹ ቅርጸት ለመቆየት የዛሬው የውይይት ርዕሰ ጉዳይ በኤርላንግ/ኤሊክስር ላይ የተገነቡ ተመሳሳይ አካባቢዎች ብቻ ይሆናሉ። የኤርላንግ/ኦቲፒ ስነ-ምህዳር በትንሹ ጥረት ምላሽ የሚሰጥ አርክቴክቸርን ተግባራዊ እንድታደርጉ ይፈቅድልሃል። ግን በማንኛውም ሁኔታ, የመልእክት ንብርብር ያስፈልገናል.

የንድፈ ሐሳብ መሠረት

ንድፍ የሚጀምረው ግቦችን እና ገደቦችን በመወሰን ነው። ዋናው ግቡ ለልማት ሲባል በልማት መስክ አይደለም. እኛ መፍጠር የምንችልበት እና ከሁሉም በላይ ደግሞ ዘመናዊ አፕሊኬሽኖችን በተለያዩ ደረጃዎች ማዳበር በምንችልበት መሰረት ደህንነቱ የተጠበቀ እና ሊሰፋ የሚችል መሳሪያ ማግኘት አለብን፡ ከአንድ አገልጋይ አፕሊኬሽኖች ጀምሮ አነስተኛ ተመልካቾችን የሚያገለግሉ ሲሆን በኋላም እስከ 50 የሚደርሱ ስብስቦችን ሊፈጥር ይችላል። -60 አንጓዎች፣ በክላስተር ፌዴሬሽኖች ያበቃል። ስለዚህ ዋናው ግቡ የመጨረሻውን ስርዓት የልማት እና የባለቤትነት ወጪን በመቀነስ ከፍተኛ ትርፍ ማግኘት ነው.

ለመጨረሻው ስርዓት 4 ዋና መስፈርቶችን እናሳይ፡-

  • Сክስተት-ተኮር.
    ስርዓቱ ሁል ጊዜ የክስተቶችን ፍሰት ለማለፍ እና አስፈላጊ እርምጃዎችን ለማከናወን ዝግጁ ነው;
  • Мመስፋፋት.
    የግለሰብ ብሎኮች በአቀባዊ እና በአግድም ሊመዘኑ ይችላሉ። አጠቃላይ ስርዓቱ ማለቂያ የሌለው አግድም እድገት ሊኖረው ይገባል;
  • Оስህተትን መታገስ.
    ሁሉም ደረጃዎች እና ሁሉም አገልግሎቶች ከውድቀቶች በራስ-ሰር ማገገም መቻል አለባቸው;
  • Гየተረጋገጠ ምላሽ ጊዜ.
    ጊዜ ጠቃሚ ነው እና ተጠቃሚዎች በጣም ረጅም መጠበቅ የለባቸውም.

ስለ "የሚችለው ትንሹ ሞተር" የድሮውን ተረት አስታውስ? የተነደፈው ሥርዓት በተሳካ ሁኔታ ከፕሮቶታይፕ ደረጃ ለመውጣት እና ተራማጅ እንዲሆን መሠረቱ አነስተኛውን መስፈርቶች ማሟላት አለበት። SMOG.

አንድ ተጨማሪ ነጥብ ለመልእክት መላላኪያ እንደ መሠረተ ልማት መሳሪያ እና ለሁሉም አገልግሎቶች መሰረት ተጨምሯል፡ ለፕሮግራም አውጪዎች የአጠቃቀም ቀላልነት።

ክስተት-ተኮር

አፕሊኬሽኑ ከአንድ አገልጋይ ወደ ዘለላ እንዲያድግ፣ አርክቴክቸር ልቅ ትስስርን መደገፍ አለበት። ያልተመሳሰለው ሞዴል ይህንን መስፈርት ያሟላል። በእሱ ውስጥ ላኪው እና ተቀባዩ የመልእክቱን የመረጃ ጭነት ያሳስባሉ እና በሲስተሙ ውስጥ ስለ ማስተላለፍ እና ማዘዋወር አይጨነቁ።

የመጠን አቅም

የመለኪያ እና የስርዓት ቅልጥፍና እርስ በእርሳቸው አጠገብ ናቸው. የመተግበሪያ ክፍሎች ያሉትን ሁሉንም ሀብቶች መጠቀም መቻል አለባቸው። አቅማችንን በብቃት በተጠቀምንበት መጠን እና የኛን የማቀነባበሪያ ዘዴ በተሻለ ሁኔታ በተጠቀምን ቁጥር ለመሳሪያ የምናወጣው ገንዘብ ይቀንሳል።

በአንድ ማሽን ውስጥ ኤርላንግ ከፍተኛ ተወዳዳሪ አካባቢ ይፈጥራል። በተጓዳኝ እና በትይዩ መካከል ያለው ሚዛን ለኤርላንግ ቪኤም የሚገኙትን የክወና ስርዓት ክሮች ብዛት እና እነዚህን ክሮች የሚጠቀሙ የጊዜ መርሐግብር ሰጪዎችን በመምረጥ ሊቀናጅ ይችላል።
የኤርላንግ ሂደቶች ሁኔታን አይጋሩም እና በማገድ ሁነታ ላይ ይሰራሉ። ይህ ከተለምዷዊ ማገድ ላይ ከተመሰረቱ አፕሊኬሽኖች ይልቅ በአንፃራዊነት ዝቅተኛ መዘግየት እና ከፍተኛ የግብአት አቅርቦትን ይሰጣል። የኤርላንግ መርሐግብር አዘጋጅ የሲፒዩ እና IO ፍትሃዊ ምደባን ያረጋግጣል፣ እና እገዳው አለመኖሩ አፕሊኬሽኑ በከፍተኛ ጭነቶች ወይም ውድቀቶች ጊዜ እንኳን ምላሽ እንዲሰጥ ያስችለዋል።

በክላስተር ደረጃ፣ የማስወገድ ችግርም አለ። በክላስተር ውስጥ ያሉት ሁሉም ማሽኖች በእኩል መጠን እንዲጫኑ እና አውታረ መረቡ ከመጠን በላይ እንዳይጫን አስፈላጊ ነው. አንድ ሁኔታን እናስብ፡ የተጠቃሚ ትራፊክ በሚመጡት ሚዛኖች (ሀፕሮክሲ፣ nginx፣ ወዘተ) ላይ ያርፋል፣ በተቻለ መጠን የማስኬጃ ጥያቄዎችን በሚገኙት የኋለኛ ክፍሎች ስብስብ መካከል ያሰራጫሉ። በመተግበሪያው መሠረተ ልማት ውስጥ፣ የሚፈለገውን በይነገጽ የሚፈጽመው አገልግሎት የመጨረሻው ማይል ብቻ ነው እና ለመጀመሪያው ጥያቄ ምላሽ ለመስጠት ሌሎች በርካታ አገልግሎቶችን መጠየቅ አለበት። የውስጥ ጥያቄዎች እንዲሁ ማዘዋወር እና ማመጣጠን ያስፈልጋቸዋል።
የውሂብ ፍሰቶችን በብቃት ለማስተዳደር፣ መልእክት መላላክ ለገንቢዎች ማዘዋወርን እና ሚዛንን መጫንን ለማስተዳደር በይነገጽ መስጠት አለበት። ለዚህም ምስጋና ይግባውና ገንቢዎች የማይክሮ ሰርቪስ ንድፎችን (አሰባሳቢ, ተኪ, ሰንሰለት, ቅርንጫፍ, ወዘተ) በመጠቀም ሁለቱንም መደበኛ ችግሮችን ለመፍታት እና እምብዛም የማይነሱትን ለመፍታት ይችላሉ.

ከንግድ እይታ አንጻር, scalability ከአደጋ አስተዳደር መሳሪያዎች አንዱ ነው. ዋናው ነገር መሳሪያውን በአግባቡ በመጠቀም የደንበኞችን ጥያቄዎች ማሟላት ነው፡-

  • በእድገት ምክንያት የመሳሪያዎች ኃይል ሲጨምር. ባልተሟላ ሶፍትዌር ምክንያት ስራ ፈት አይሆንም። ኤርላንግ በአቀባዊ በጥሩ ሁኔታ የሚለካ ሲሆን ሁል ጊዜ ሁሉንም የሲፒዩ ኮሮች እና የሚገኙትን ማህደረ ትውስታዎች መጠቀም ይችላል።
  • በደመና አከባቢዎች ውስጥ, አሁን ባለው ወይም በተገመተው ጭነት ላይ በመመስረት የመሳሪያውን መጠን ማስተዳደር እና SLA ዋስትና መስጠት እንችላለን.

ስህተትን መታገስ

“ውድቀቶች ተቀባይነት የላቸውም” እና “ሁልጊዜ ውድቀቶች ይኖራሉ” የሚሉትን ሁለት አክሲሞች እንመልከት። ለንግድ ስራ, የሶፍትዌር ውድቀት የገንዘብ ማጣት ማለት ነው, እና በጣም የከፋው, ስም ማጣት ማለት ነው. ሊከሰቱ በሚችሉ ኪሳራዎች እና ስህተትን የሚቋቋም ሶፍትዌሮችን ለማዘጋጀት በሚወጣው ወጪ መካከል ማመጣጠን ብዙውን ጊዜ ስምምነት ሊፈጠር ይችላል።

በአጭር ጊዜ ውስጥ፣ ጥፋትን መቻቻልን የሚያጠቃልለው አርክቴክቸር ከመደርደሪያ ውጭ ክላስተር መፍትሄዎችን በመግዛት ገንዘብ ይቆጥባል። እነሱ ውድ ናቸው እና እንዲሁም ትሎች አሏቸው።
በረጅም ጊዜ ውስጥ, ስህተትን የሚቋቋም አርክቴክቸር በሁሉም የእድገት ደረጃዎች ላይ ብዙ ጊዜ ይከፍላል.
በኮድ መሰረቱ ውስጥ መላክ በስርአቱ ውስጥ ያሉትን ክፍሎች በልማት ደረጃ ላይ ያለውን ግንኙነት በዝርዝር እንዲሰሩ ያስችልዎታል። ይህ ሁሉም ወሳኝ አካላት ውድቀቶችን ስለሚያስተናግዱ እና በንድፍ ውድቀት በኋላ ወደ መደበኛው እንዴት እንደሚመለሱ ስለሚያውቅ ይህ ምላሽ የመስጠት እና የማስተዳደር ስራን ያቃልላል።

ምላሽ ሰጪነት

ውድቀቶች ምንም ቢሆኑም፣ ማመልከቻው ለጥያቄዎች ምላሽ መስጠት እና SLA ማሟላት አለበት። እውነታው ግን ሰዎች መጠበቅ አይፈልጉም, ስለዚህ ንግዶች በዚህ መሰረት መላመድ አለባቸው. ቁጥራቸው እየጨመረ የመጣ አፕሊኬሽኖች ከፍተኛ ምላሽ እንደሚሰጡ ይጠበቃል።
ምላሽ ሰጪ መተግበሪያዎች በእውነተኛ ጊዜ ውስጥ ይሰራሉ። Erlang VM ለስላሳ የእውነተኛ ጊዜ ሁነታ ይሰራል። ለአንዳንድ አካባቢዎች፣ እንደ የአክሲዮን ንግድ፣ መድኃኒት እና የኢንዱስትሪ መሣሪያዎች ቁጥጥር፣ የጠንካራ ቅጽበታዊ ሁነታ አስፈላጊ ነው።
ምላሽ ሰጪ ስርዓቶች UXን ያሻሽላሉ እና ንግዱን ይጠቅማሉ።

የቅድመ ማጠቃለያ

ይህን ጽሑፍ በማቀድ ጊዜ የመልእክት መላላኪያን የመፍጠር እና በእሱ ላይ የተመሰረቱ ውስብስብ ስርዓቶችን የመገንባት ልምዴን ለማካፈል ፈለግሁ። ነገር ግን የንድፈ ሃሳቡ እና የማበረታቻው ክፍል በጣም ሰፊ ሆነ።
በአንቀጹ ሁለተኛ ክፍል ውስጥ የመለዋወጫ ነጥቦችን ፣ የመልእክት መላላኪያ ንድፎችን እና አተገባበርን የመተግበር ልዩነቶች እናገራለሁ ።
በሶስተኛው ክፍል አጠቃላይ አገልግሎቶችን የማደራጀት ፣ የመምራት እና የማመጣጠን ጉዳዮችን እንመለከታለን። ስለ ስርአቶች scalability እና ስህተት መቻቻል ስለ ተግባራዊ ጎን እንነጋገር።

የመጀመሪያው ክፍል መጨረሻ.

ፎቶ @ሉካብራቮ.

ምንጭ: hab.com

አስተያየት ያክሉ