Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

በ Mail.ru ቡድን ውስጥ Tarantool አለን - ይህ በሉአ ውስጥ ያለ የመተግበሪያ አገልጋይ ነው ፣ እሱም እንደ ዳታቤዝ (ወይንም በተቃራኒው?) በእጥፍ ይጨምራል። ፈጣን እና አሪፍ ነው፣ ግን የአንድ አገልጋይ አቅም አሁንም ያልተገደበ አይደለም። አቀባዊ ልኬትም እንዲሁ ፓናሲ አይደለም፣ ስለዚህ Tarantool ለአግድም ልኬት መሣሪያዎች አሉት - የ vshard ሞጁል [1]. በተለያዩ ሰርቨሮች ላይ መረጃን ለመከፋፈል ይፈቅድልዎታል፣ ነገር ግን እሱን ለማዋቀር እና የንግድ አመክንዮውን ለማያያዝ ከእሱ ጋር መቀላቀል አለብዎት።

መልካም ዜና፡ አንዳንድ ትላልቅ ጥይቶችን ሰብስበናል (ለምሳሌ፡ [2], [3]) እና የዚህን ችግር መፍትሄ በከፍተኛ ሁኔታ የሚያቃልል ሌላ ማዕቀፍ ፈጠረ.

Tarantool Cartridge ውስብስብ የተከፋፈሉ ስርዓቶችን ለማዘጋጀት አዲስ ማዕቀፍ ነው. የመሠረተ ልማት ችግሮችን ከመፍታት ይልቅ የንግድ ሥራ አመክንዮ ላይ እንዲያተኩሩ ያስችልዎታል. ከመቁረጡ በታች ይህ ማዕቀፍ እንዴት እንደሚሰራ እና እሱን በመጠቀም የተከፋፈሉ አገልግሎቶችን እንዴት እንደሚጽፉ እነግርዎታለሁ።

በትክክል ችግሩ ምንድን ነው?

ታራንቱላ አለን ፣ vshard አለን - ከዚህ የበለጠ ምን ይፈልጋሉ?

በመጀመሪያ, የምቾት ጉዳይ ነው. የvshard ውቅር የሚዋቀረው በሉአ ሰንጠረዦች በኩል ነው። የበርካታ Tarantool ሂደቶች የተከፋፈለ ስርዓት በትክክል እንዲሰራ, አወቃቀሩ በሁሉም ቦታ አንድ አይነት መሆን አለበት. ማንም ይህን በእጅ ማድረግ አይፈልግም። ስለዚህ, ሁሉም ዓይነት ስክሪፕቶች, ሊቻል የሚችል እና የማሰማራት ስርዓቶች ጥቅም ላይ ይውላሉ.

ካርትሪጅ ራሱ የvshard ውቅረትን ያስተዳድራል ፣ ይህንን በእሱ ላይ የተመሠረተ ነው። የራሱ የተሰራጨ ውቅር. እሱ በመሠረቱ ቀላል የ YAML ፋይል ነው፣ ቅጂው በእያንዳንዱ የTarantool ምሳሌ ውስጥ ይከማቻል። ማቅለሉ ክፈፉ ራሱ አወቃቀሩን ይከታተላል እና በሁሉም ቦታ ተመሳሳይ መሆኑን ያረጋግጣል.

በሁለተኛ ደረጃ, እንደገና የመመቻቸት ጉዳይ ነው. የ vsshard ውቅረት ከቢዝነስ አመክንዮ እድገት ጋር ምንም ግንኙነት የለውም እና ፕሮግራመርን ከስራው ብቻ ያደናቅፋል። ስለ አንድ ፕሮጀክት አርክቴክቸር ስንወያይ፣ ብዙ ጊዜ ስለ ግለሰባዊ አካላት እና መስተጋብር እንነጋገራለን። ክላስተር ወደ 3 የውሂብ ማዕከሎች ስለመልቀቅ ለማሰብ በጣም ገና ነው።

እነዚህን ችግሮች ደግመን ደጋግመን ፈትተናል፣ እና በአንድ ወቅት ከመተግበሪያው ጋር በጠቅላላው የህይወት ዑደቱ ውስጥ መስራትን የሚያቃልል ዘዴን ማዘጋጀት ችለናል-ፍጥረት ፣ ልማት ፣ ሙከራ ፣ CI/CD ፣ ጥገና።

Cartridge ለእያንዳንዱ Tarantool ሂደት ሚና ጽንሰ-ሐሳብ ያስተዋውቃል. ሚናዎች ገንቢ ኮድ በመጻፍ ላይ እንዲያተኩር የሚያስችል ጽንሰ-ሀሳብ ነው። በፕሮጀክቱ ውስጥ የሚገኙ ሁሉም ሚናዎች በአንድ Tarantool ምሳሌ ላይ ሊሰሩ ይችላሉ, እና ይህ ለፈተናዎች በቂ ይሆናል.

የTarantool Cartridge ቁልፍ ባህሪዎች

  • አውቶማቲክ ክላስተር ኦርኬስትራ;
  • አዳዲስ ሚናዎችን በመጠቀም የመተግበሪያውን ተግባራዊነት ማስፋፋት;
  • ለልማት እና ለማሰማራት የመተግበሪያ አብነት;
  • አብሮ የተሰራ አውቶማቲክ ሻርዲንግ;
  • ከ Luaest የሙከራ ማዕቀፍ ጋር ውህደት;
  • WebUI እና API በመጠቀም የክላስተር አስተዳደር;
  • ማሸግ እና ማሰማሪያ መሳሪያዎች.

ሰላም ልዑል!

ማዕቀፉን እራሱ ለማሳየት መጠበቅ አልችልም, ስለዚህ ስለ ስነ-ህንፃው ታሪክን ለበለጠ ጊዜ እንተወዋለን እና ቀላል በሆነ ነገር እንጀምራለን. Tarantool ራሱ አስቀድሞ እንደተጫነ ከወሰድን, የቀረው ሁሉ ማድረግ ብቻ ነው

$ tarantoolctl rocks install cartridge-cli
$ export PATH=$PWD/.rocks/bin/:$PATH

እነዚህ ሁለት ትዕዛዞች የትእዛዝ መስመር መገልገያዎችን ይጭናሉ እና የመጀመሪያ መተግበሪያዎን ከአብነት እንዲፈጥሩ ያስችሉዎታል፡

$ cartridge create --name myapp

የምናገኘውም ይኸው ነው፡-

myapp/
├── .git/
├── .gitignore
├── app/roles/custom.lua
├── deps.sh
├── init.lua
├── myapp-scm-1.rockspec
├── test
│   ├── helper
│   │   ├── integration.lua
│   │   └── unit.lua
│   ├── helper.lua
│   ├── integration/api_test.lua
│   └── unit/sample_test.lua
└── tmp/

ይህ ዝግጁ የሆነ “ሄሎ፣ ዓለም!” ያለው የgit ማከማቻ ነው። ማመልከቻ. ከዚህ ቀደም ጥገኞቹን (ማዕቀፉንም ጨምሮ) ከጫንን በኋላ ወዲያውኑ ለማስኬድ እንሞክር፡-

$ tarantoolctl rocks make
$ ./init.lua --http-port 8080

ስለዚህ፣ ለወደፊት የተበጣጠሰ መተግበሪያ የሚሄድ አንድ አንጓ አለን። ጠያቂ ተራ ሰው ወዲያውኑ የድረ-ገጽ በይነገጹን መክፈት፣የአንድ መስቀለኛ መንገድን በመዳፊት ማዋቀር እና በውጤቱ መደሰት ይችላል፣ነገር ግን ለመደሰት በጣም ገና ነው። እስካሁን ድረስ, አፕሊኬሽኑ ምንም ጠቃሚ ነገር ማድረግ አይችልም, ስለዚህ ስለ ማሰማራት በኋላ እነግራችኋለሁ, አሁን ግን ኮድ ለመጻፍ ጊዜው ነው.

የመተግበሪያ ልማት

እስቲ አስቡት፣ መረጃ መቀበል፣ ማስቀመጥ እና በቀን አንድ ጊዜ ሪፖርት መገንባት ያለበትን ፕሮጀክት እየቀረጽን ነው።

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ንድፍ መሳል እንጀምራለን እና በእሱ ላይ ሶስት አካላትን እናስቀምጣለን-ጌትዌይ ፣ ማከማቻ እና የጊዜ ሰሌዳ። በህንፃው ላይ የበለጠ እየሰራን ነው። vsshard እንደ ማከማቻ ስለምንጠቀም በእቅዱ ላይ vshard-router እና vshard-storage እንጨምራለን ። መግቢያው ወይም መርሐግብር አውጪው በቀጥታ ወደ ማከማቻው አይደርሱም፤ ራውተር ለዚያ ነው የተፈጠረለት።

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ይህ ንድፍ አሁንም በፕሮጀክቱ ውስጥ የምንገነባውን በትክክል አይወክልም ምክንያቱም ክፍሎቹ ረቂቅ ስለሚመስሉ። አሁንም ይህ እንዴት በእውነተኛው Tarantool ላይ እንደሚተከል ማየት አለብን - ክፍሎቻችንን በሂደት እንቧድነው።

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

vshard-router እና ጌትዌይን በተለዩ አጋጣሚዎች ማቆየት ትንሽ ፋይዳ የለውም። ይህ ቀድሞውኑ የራውተሩ ሃላፊነት ከሆነ እንደገና አውታረ መረቡን ማሰስ ለምን ያስፈልገናል? በተመሳሳይ ሂደት ውስጥ መከናወን አለባቸው. ያም ማለት ሁለቱም ጌትዌይ እና vshard.router.cfg የተጀመሩት በአንድ ሂደት ነው እና በአካባቢው እንዲገናኙ ያድርጉ።

በንድፍ ደረጃ, ከሶስት አካላት ጋር ለመስራት አመቺ ነበር, ነገር ግን እኔ እንደ ገንቢ, ኮዱን በሚጽፍበት ጊዜ, የ Tarnatool ሶስት አጋጣሚዎችን ለመጀመር ማሰብ አልፈልግም. ፈተናዎችን ማካሄድ አለብኝ እና መግቢያውን በትክክል እንደጻፍኩ ማረጋገጥ አለብኝ። ወይም ምናልባት አንድ ባህሪን ለሥራ ባልደረቦቼ ማሳየት እፈልጋለሁ። ሶስት ቅጂዎችን በማሰማራት ችግር ውስጥ ለምን ማለፍ አለብኝ? ሚናዎች ጽንሰ-ሐሳብ የተወለደው በዚህ መንገድ ነው. ሚና የህይወት ዑደቱ በካርትሪጅ የሚተዳደር መደበኛ የሉሽ ሞጁል ነው። በዚህ ምሳሌ ውስጥ አራቱ አሉ - ጌትዌይ, ራውተር, ማከማቻ, የጊዜ ሰሌዳ. በሌላ ፕሮጀክት ውስጥ ተጨማሪ ሊኖር ይችላል. ሁሉም ሚናዎች በአንድ ሂደት ውስጥ ሊከናወኑ ይችላሉ, እና ይህ በቂ ይሆናል.

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

እና ወደ ዝግጅት ወይም ምርት ማሰማራትን በተመለከተ እያንዳንዱን የ Tarantool ሂደት በሃርድዌር ችሎታዎች ላይ በመመስረት የራሱን ሚናዎች እንመድባለን-

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ቶፖሎጂ አስተዳደር

የትኛዎቹ ሚናዎች የት እንደሚሄዱ መረጃ የሆነ ቦታ መቀመጥ አለበት። እና ይህ "አንድ ቦታ" የተከፋፈለው ውቅር ነው, ቀደም ሲል ከላይ የጠቀስኩት. ስለ እሱ በጣም አስፈላጊው ነገር ክላስተር ቶፖሎጂ ነው። የ 3 Tarantool ሂደቶች 5 የማባዛት ቡድኖች እነሆ፡-

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ውሂብ ማጣት አንፈልግም፣ ስለዚህ ስለሂደት ሂደቶች መረጃን በጥንቃቄ እንይዛለን። Cartridge ባለ ሁለት-ደረጃ ቁርጠኝነትን በመጠቀም አወቃቀሩን ይከታተላል። አንዴ አወቃቀሩን ማዘመን ከፈለግን በመጀመሪያ ሁሉም ሁኔታዎች መኖራቸውን እና አዲሱን ውቅር ለመቀበል ዝግጁ መሆናቸውን ያረጋግጣል። ከዚህ በኋላ, ሁለተኛው ደረጃ ውቅሩን ይተገበራል. ስለዚህ, አንድ ቅጂ ለጊዜው የማይገኝ ቢሆንም, ምንም መጥፎ ነገር አይከሰትም. ውቅሩ በቀላሉ አይተገበርም እና አስቀድመው ስህተት ያያሉ.

እንዲሁም በቶፖሎጂ ክፍል ውስጥ እንደ እያንዳንዱ የማባዛት ቡድን መሪ እንደዚህ ያለ አስፈላጊ ግቤት ይጠቁማል። ብዙውን ጊዜ ይህ የሚቀዳው ቅጂ ነው. የተቀሩት ብዙ ጊዜ ተነባቢ-ብቻ ናቸው፣ ምንም እንኳን ልዩ ሁኔታዎች ሊኖሩ ይችላሉ። አንዳንድ ጊዜ ደፋር ገንቢዎች ግጭቶችን አይፈሩም እና ውሂብን ወደ ብዙ ቅጂዎች በትይዩ መጻፍ ይችላሉ ፣ ግን ምንም ቢሆን ፣ ሁለት ጊዜ መከናወን የማይገባቸው አንዳንድ ስራዎች አሉ። ለዚህም የመሪ ምልክት አለ.

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ሚናዎች ሕይወት

በእንደዚህ ዓይነት አርክቴክቸር ውስጥ ረቂቅ ሚና እንዲኖር ፣ ማዕቀፉ በሆነ መንገድ እነሱን ማስተዳደር አለበት። በተፈጥሮ ፣ ቁጥጥር የሚከናወነው የ Tarantool ሂደቱን እንደገና ሳይጀምር ነው። ሚናዎችን ለማስተዳደር 4 ጥሪዎች አሉ። Cartridge ራሱ በተከፋፈለው ውቅር ውስጥ በተጻፈው መሰረት ይጠራቸዋል፣ በዚህም አወቃቀሩን ለተወሰኑ ሚናዎች ይተገበራል።

function init()
function validate_config()
function apply_config()
function stop()

እያንዳንዱ ሚና ተግባር አለው init. ሚናው ሲነቃ ወይም Tarantool እንደገና ሲጀመር አንድ ጊዜ ይባላል። እዚያ ምቹ ነው, ለምሳሌ, box.space.createን ለመጀመር, ወይም መርሐግብር አውጪው በተወሰነ የጊዜ ልዩነት ውስጥ ስራን የሚያከናውን አንዳንድ የጀርባ ፋይበር ማስነሳት ይችላል.

አንድ ተግባር init በቂ ላይሆን ይችላል. Cartridge ሚናዎች ቶፖሎጂን ለማከማቸት የሚጠቀምበትን የተከፋፈለ ውቅረት እንዲጠቀሙ ያስችላቸዋል። በተመሳሳዩ ውቅር ውስጥ አዲስ ክፍል ማወጅ እና በውስጡ ያለውን የንግድ ውቅር ቁራጭ ማከማቸት እንችላለን። በእኔ ምሳሌ፣ ይህ የመርሐግብር አውጪ ሚና የውሂብ እቅድ ወይም የጊዜ ሰሌዳ ቅንብሮች ሊሆን ይችላል።

የክላስተር ጥሪዎች validate_config и apply_config በእያንዳንዱ ጊዜ የተከፋፈለው ውቅር ሲቀየር. አንድ ውቅረት በሁለት-ደረጃ ቁርጠኝነት ሲተገበር ክላስተር እያንዳንዱ ሚና ይህን አዲስ ውቅር ለመቀበል ዝግጁ መሆኑን ያረጋግጣል እና አስፈላጊ ከሆነም ስህተት ለተጠቃሚው ያሳውቃል። ሁሉም ሰው አወቃቀሩ የተለመደ መሆኑን ሲስማማ, ከዚያ የ apply_config.

ሚናዎችም ዘዴ አላቸው። stopየሚናውን ውጤት ለማጽዳት የሚያስፈልገው. በዚህ አገልጋይ ላይ መርሐግብር አድራጊ አያስፈልግም ካልን፣ የጀመረውን ፋይበር ማቆም ይችላል። init.

ሚናዎች እርስ በእርሳቸው ሊገናኙ ይችላሉ. በሉአ ውስጥ የተግባር ጥሪዎችን ለመጻፍ እንለማመዳለን፣ ነገር ግን የተወሰነ ሂደት እኛ የምንፈልገውን ሚና ላይኖረው ይችላል። በአውታረ መረቡ ላይ ጥሪዎችን ለማመቻቸት በ Tarantool ውስጥ በተሰራው መደበኛ ኔትቦክስ መሰረት የተገነባውን rpc (የርቀት ሂደት ጥሪ) ረዳት ሞጁሉን እንጠቀማለን. ይህ ጠቃሚ ሊሆን ይችላል፣ ለምሳሌ የእርስዎ መግቢያ በር አንድ ቀን ከመጠበቅ ይልቅ መርሐግብር አውጪውን አሁኑኑ ሥራውን እንዲሠራ በቀጥታ መጠየቅ ከፈለገ።

ሌላው አስፈላጊ ነጥብ ስህተትን መቻቻል ማረጋገጥ ነው. Cartridge ጤናን ለመቆጣጠር የSWIM ፕሮቶኮልን ይጠቀማል [4]. በአጭሩ, ሂደቶች በ UDP ላይ እርስ በርስ "ወሬ" ይለዋወጣሉ - እያንዳንዱ ሂደት ለጎረቤቶቹ የቅርብ ጊዜ ዜናዎችን ይነግራል, እና ምላሽ ይሰጣሉ. በድንገት መልሱ ካልመጣ ታራንቶል የሆነ ነገር ስህተት እንደሆነ መጠራጠር ይጀምራል, እና ከጥቂት ጊዜ በኋላ ሞትን ያነባል እና በዚህ ዜና ዙሪያ ለሁሉም ሰው መንገር ይጀምራል.

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

በዚህ ፕሮቶኮል መሰረት፣ Cartridge አውቶማቲክ አለመሳካት ሂደትን ያደራጃል። እያንዳንዱ ሂደት አካባቢውን ይከታተላል, እና መሪው በድንገት ምላሽ መስጠቱን ካቆመ, ቅጂው ሚናውን ሊወስድ ይችላል, እና ካርትሪጅ የሩጫ ሚናዎችን በዚህ መሰረት ያዘጋጃል.

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

እዚህ ላይ መጠንቀቅ አለብህ፣ ምክንያቱም በተደጋጋሚ ወደ ኋላ እና ወደ ኋላ መቀየር በማባዛት ጊዜ ወደ የውሂብ ግጭቶች ሊመራ ይችላል። እርግጥ ነው፣ በዘፈቀደ አውቶማቲክ ውድቀትን ማንቃት የለብዎትም። እየሆነ ያለውን ነገር በግልፅ ተረድተን መሪው ከተመለሰ እና ዘውዱ ከተመለሰ በኋላ መባዛት እንደማይሰበር እርግጠኛ መሆን አለብን።

ከዚህ ሁሉ, ሚናዎች ከማይክሮ አገልግሎቶች ጋር ተመሳሳይ ናቸው የሚል ስሜት ሊሰማዎት ይችላል. በ Tarantool ሂደቶች ውስጥ እንደ ሞጁሎች ብቻ ናቸው በተወሰነ መልኩ። ግን በርካታ መሠረታዊ ልዩነቶችም አሉ. በመጀመሪያ ፣ ሁሉም የፕሮጀክት ሚናዎች በተመሳሳይ ኮድ መሠረት መኖር አለባቸው። እና ሁሉም የ Tarantool ሂደቶች ከተመሳሳይ ኮድ መሰረት መጀመር አለባቸው, ስለዚህ የጊዜ ሰሌዳውን ለማስጀመር ስንሞክር ምንም አስገራሚ ነገሮች እንዳይኖሩ, ነገር ግን በቀላሉ አይገኝም. እንዲሁም, በኮድ ስሪቶች ውስጥ ልዩነቶችን መፍቀድ የለብዎትም, ምክንያቱም በእንደዚህ ዓይነት ሁኔታ ውስጥ ያለው የስርዓቱ ባህሪ ለመተንበይ እና ለማረም በጣም ከባድ ነው.

እንደ ዶከር ሳይሆን፣ ሚናን “ምስል” ብቻ ወስደን ወደ ሌላ ማሽን ወስደን እዚያ ማስኬድ አንችልም። የእኛ ሚናዎች እንደ ዶከር ኮንቴይነሮች የተገለሉ አይደሉም። እንዲሁም፣ በአንድ አጋጣሚ ሁለት ተመሳሳይ ሚናዎችን ማካሄድ አንችልም። ሚና ወይ አለ ወይም የለም፤ ​​በአንፃሩ ነጠላ ቶን ነው። እና በሶስተኛ ደረጃ, ሚናዎቹ በጠቅላላው የማባዛት ቡድን ውስጥ አንድ አይነት መሆን አለባቸው, ምክንያቱም አለበለዚያ የማይረባ ይሆናል - መረጃው ተመሳሳይ ነው, አወቃቀሩ ግን የተለየ ነው.

የማሰማሪያ መሳሪያዎች

ካርትሪጅ መተግበሪያዎችን ለማሰማራት እንዴት እንደሚረዳ ለማሳየት ቃል ገባሁ። ለሌሎች ህይወትን ቀላል ለማድረግ፣ ማዕቀፉ የ RPM ፓኬጆችን ይይዛል፡-

$ cartridge pack rpm myapp -- упакует для нас ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm

የተጫነው ፓኬጅ የሚያስፈልጎትን ሁሉንም ነገር ይዟል፡ ሁለቱም አፕሊኬሽኑ እና የተጫኑ ጥገኞች። Tarantool እንደ RPM ጥቅል ጥገኛ ሆኖ በአገልጋዩ ላይ ይደርሳል፣ እና አገልግሎታችን ለመጀመር ዝግጁ ነው። ይህ በስርዓት የተሰራ ነው, ነገር ግን በመጀመሪያ ትንሽ ውቅር መጻፍ ያስፈልግዎታል. ቢያንስ የእያንዳንዱን ሂደት URI ይግለጹ። ለምሳሌ ሶስት በቂ ናቸው።

$ sudo tee /etc/tarantool/conf.d/demo.yml <<CONFIG
myapp.router: {"advertise_uri": "localhost:3301", "http_port": 8080}
myapp.storage_A: {"advertise_uri": "localhost:3302", "http_enabled": False}
myapp.storage_B: {"advertise_uri": "localhost:3303", "http_enabled": False}
CONFIG

እዚህ አንድ አስደሳች ነገር አለ። የሁለትዮሽ ፕሮቶኮል ወደብ ብቻ ከመግለጽ ይልቅ፣ የአስተናጋጁን ስም ጨምሮ አጠቃላይ የሂደቱን የህዝብ አድራሻ እንገልፃለን። የክላስተር ኖዶች እርስ በርስ እንዴት እንደሚገናኙ እንዲያውቁ ይህ አስፈላጊ ነው. 0.0.0.0ን እንደ advertise_uri አድራሻ መጠቀም መጥፎ ሃሳብ ነው፤ የውጭ አይፒ አድራሻ እንጂ የሶኬት ማሰሪያ መሆን የለበትም። ያለሱ፣ ምንም አይሰራም፣ ስለዚህ Cartridge በቀላሉ የተሳሳተ advertise_uri ያለው መስቀለኛ መንገድ እንዲከፍቱ አይፈቅድም።

አሁን አወቃቀሩ ዝግጁ ነው, ሂደቶቹን መጀመር ይችላሉ. መደበኛ የስርዓት ክፍል ከአንድ በላይ ሂደት እንዲጀምር ስለማይፈቅድ በካርትሪጅ ላይ ያሉ መተግበሪያዎች በሚባሉት ተጭነዋል። እንደዚህ የሚሰሩ ፈጣን ክፍሎች

$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B

በማዋቀሩ ውስጥ፣ Cartridge የድር በይነገጽ የሚያገለግልበትን የኤችቲቲፒ ወደብ ገለፅን - 8080. ወደ እሱ እንሂድ እና እንመልከተው፡

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ሂደቶቹ እየሰሩ ቢሆንም ገና እንዳልተዋቀሩ እናያለን። ካርቶሪው ማን ከማን ጋር መድገም እንዳለበት ገና አያውቅም እና በራሱ ውሳኔ ማድረግ አይችልም, ስለዚህ የእኛን ድርጊቶች እየጠበቀ ነው. ግን ብዙ ምርጫ የለንም: የአዲሱ ክላስተር ህይወት የሚጀምረው ከመጀመሪያው መስቀለኛ መንገድ ውቅር ነው. ከዚያም ሌሎቹን ወደ ክላስተር እንጨምራለን, ሚናዎችን እንመድባቸዋለን, እና በዚህ ጊዜ ማሰማራቱ በተሳካ ሁኔታ እንደተጠናቀቀ ሊቆጠር ይችላል.

የሚወዱትን መጠጥ አንድ ብርጭቆ አፍስሱ እና ከረዥም የስራ ሳምንት በኋላ ዘና ይበሉ። ማመልከቻውን መጠቀም ይቻላል.

Tarantool Cartridge፡ Lua backend Sharding በሶስት መስመሮች

ውጤቶች

ውጤቶቹ ምንድ ናቸው? ይሞክሩት፣ ተጠቀምበት፣ ግብረ መልስ ትተህ በ Github ላይ ትኬቶችን ፍጠር።

ማጣቀሻዎች

[1] Tarantool » 2.2 » ማጣቀሻ » የሮክስ ማጣቀሻ » ሞዱል vsshard

[2] በታራንቶል ላይ የተመሰረተ የአልፋ-ባንክን የኢንቨስትመንት ንግድ ዋና ሥራ እንዴት እንደተገበርነው

[3] አዲስ ትውልድ የሂሳብ አከፋፈል አርክቴክቸር፡ ወደ Tarantool ከተሸጋገር ጋር ለውጥ

[4] SWIM - የክላስተር ግንባታ ፕሮቶኮል

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - tarantool/cartridge

ምንጭ: hab.com

አስተያየት ያክሉ