የTarantool Data Grid አርክቴክቸር እና ችሎታዎች

የTarantool Data Grid አርክቴክቸር እና ችሎታዎች

እ.ኤ.አ. በ 2017 የአልፋ-ባንክን የኢንቨስትመንት ንግድ ግብይት ዋና ነገር ለማዳበር ውድድር አሸንፈናል እና ሥራ ጀመርን (በከፍተኛ ሎድ ++ 2018 የኢንቨስትመንት ንግድ ዋና ዘገባ አከናውኗል የአልፋ ባንክ የኢንቨስትመንት ንግድ ዋና ዋና ኃላፊ ቭላድሚር ድሪንኪን) ይህ ስርዓት ከተለያዩ ምንጮች የተገኘ የግብይት መረጃን በተለያዩ ፎርማቶች ማሰባሰብ፣ ውሂቡን ወደ አንድ ወጥ መልክ ማምጣት፣ ማከማቸት እና መዳረሻ መስጠት ነበረበት።

በልማት ሂደት ውስጥ ስርዓቱ በዝግመተ ለውጥ እና ተግባራዊነትን አገኘ ፣ እና በተወሰነ ደረጃ በጥብቅ የተገለጹ የተለያዩ ተግባራትን ለመፍታት ከተፈጠሩ የመተግበሪያ ሶፍትዌሮች በላይ የሆነ ነገር እየሠራን እንዳለን ተገነዘብን ። የተከፋፈሉ መተግበሪያዎችን ከቋሚ ማከማቻ ጋር ለመገንባት ስርዓት. ያገኘነው ልምድ ለአዲስ ምርት መሠረት ሆኗል - Tarantool Data Grid (TDG)

ስለ TDG አርክቴክቸር እና በልማት ሂደት ውስጥ ስለመጣንባቸው መፍትሄዎች መነጋገር እፈልጋለሁ, ዋናውን ተግባር ያስተዋውቁዎታል እና ምርታችን የተሟላ መፍትሄዎችን ለመገንባት እንዴት መሰረት ሊሆን እንደሚችል ማሳየት እፈልጋለሁ.

በሥነ-ሕንፃ, ስርዓቱን ወደ ተለየ ሚናዎች, እያንዳንዳቸው የተወሰኑ ችግሮችን የመፍታት ሃላፊነት አለባቸው. ነጠላ አሂድ ትግበራ ምሳሌ አንድ ወይም ከዚያ በላይ የሚና ዓይነቶችን ይተገብራል። በክላስተር ውስጥ በርካታ ተመሳሳይ ሚናዎች ሊኖሩ ይችላሉ፡-

የTarantool Data Grid አርክቴክቸር እና ችሎታዎች

አያያዥ

ማገናኛ ከውጭው ዓለም ጋር ለመግባባት ሃላፊነት አለበት; ስራው ጥያቄውን መቀበል፣ መተንተን ነው፣ እና ይህ ከተሳካ ውሂቡን ለማስኬድ ወደ ግቤት ማቀነባበሪያው ይላኩ። HTTP፣ SOAP፣ Kafka፣ FIX ቅርጸቶችን እንደግፋለን። አርክቴክቸር ለአዳዲስ ቅርጸቶች ድጋፍ እንዲያክሉ ይፈቅድልዎታል፣ በቅርቡ ለሚመጣው IBM MQ ድጋፍ። ጥያቄውን መተንተን ካልተሳካ, ማገናኛው ስህተት ይመልሳል; ያለበለዚያ ተጨማሪ ሂደት በሚካሄድበት ጊዜ ስህተት ቢከሰትም ጥያቄው በተሳካ ሁኔታ እንደተሰራ ምላሽ ይሰጣል። ይህ የተደረገው በተለይ ጥያቄዎችን እንዴት መድገም እንደሚችሉ ከማያውቁት ስርዓቶች ጋር ለመስራት ነው - ወይም በተቃራኒው ፣ በጣም በቋሚነት ያድርጉት። መረጃን ላለማጣት, የጥገና ወረፋ ጥቅም ላይ ይውላል: እቃው መጀመሪያ ወደ ውስጥ ይገባል እና የተሳካ ሂደት ከተወገደ በኋላ ብቻ ነው. አስተዳዳሪው በጥገና ወረፋ ውስጥ ስለሚቀሩ ነገሮች ማንቂያዎችን መቀበል ይችላል እና የሶፍትዌር ስህተትን ወይም የሃርድዌር ውድቀትን ካስወገዱ በኋላ እንደገና ይሞክሩ።

የግቤት ፕሮሰሰር

የግቤት ፕሮሰሰር የተቀበለውን መረጃ በባህሪያዊ ባህሪያት ይመድባል እና ተገቢውን ፕሮሰሰሮችን ይጠራል። ተቆጣጣሪዎች በአሸዋ ሳጥን ውስጥ የሚሰራ የሉአ ኮድ ናቸው፣ ስለዚህ የስርዓቱን ተግባር ሊነኩ አይችሉም። በዚህ ደረጃ, ውሂቡ ወደ አስፈላጊው ቅፅ ሊቀንስ ይችላል, አስፈላጊ ከሆነ, አስፈላጊውን ሎጂክ ተግባራዊ ለማድረግ የዘፈቀደ ቁጥር ስራዎችን መጀመር ይቻላል. ለምሳሌ በ Tarantool Data Grid ላይ በተሰራው ኤምዲኤም (ማስተር ዳታ ማኔጅመንት) ምርት ውስጥ አዲስ ተጠቃሚን ስንጨምር የጥያቄውን ሂደት እንዳይቀንስ ወርቃማ ሪከርድን እንደ የተለየ ተግባር እንፈጥራለን። ማጠሪያው የማንበብ፣ የመቀየር እና የማከል ጥያቄዎችን ይደግፋል፣ በሁሉም የማከማቻ አይነት እና የውጤቱ ውህደት (ካርታ/መቀነስ) ሚናዎች ላይ የተወሰነ ተግባር እንዲያከናውኑ ይፈቅድልዎታል ።

ተቆጣጣሪዎች በፋይሎች ውስጥ ሊገለጹ ይችላሉ-

sum.lua

local x, y = unpack(...)
return x + y

እና ከዚያ፣ በማዋቀሩ ውስጥ ተገልጿል፡-

functions:
  sum: { __file: sum.lua }

ለምን ሉዋ? ሉአ በጣም ቀላል ቋንቋ ነው። ካለን ልምድ በመነሳት፣ ካወቅን ከጥቂት ሰዓታት በኋላ ሰዎች ችግራቸውን የሚፈታ ኮድ መጻፍ ይጀምራሉ። እና እነዚህ ሙያዊ ገንቢዎች ብቻ አይደሉም, ግን ለምሳሌ, ተንታኞች. በተጨማሪም ለጂት ማጠናከሪያ ምስጋና ይግባውና ሉአ በጣም በፍጥነት ይሰራል.

መጋዘን

ማከማቻ ቋሚ ውሂብ ያከማቻል። ከማስቀመጥዎ በፊት ውሂቡ ከመረጃ ዕቅዱ አንጻር የተረጋገጠ ነው። ወረዳውን ለመግለጽ የተራዘመ ቅርጸት እንጠቀማለን Apache Avro. ምሳሌ

{
    "name": "User",
    "type": "record",
    "logicalType": "Aggregate",
    "fields": [ 
        { "name": "id", "type": "string"}, 
        {"name": "first_name", "type": "string"}, 
        {"name": "last_name", "type": "string"} 
    ], 
    "indexes": ["id"] 
}

በዚህ መግለጫ ላይ በመመስረት፣ DDL (የውሂብ ፍቺ ቋንቋ) በራስ-ሰር የሚመነጨው ለ Tarantula DBMS እና ግራፍQL የውሂብ መዳረሻ ዕቅድ.

ያልተመሳሰለ የውሂብ ማባዛት ይደገፋል (የተመሳሰለ ለመጨመር ዕቅዶች አሉ)።

የውጤት ፕሮሰሰር

አንዳንድ ጊዜ የውጭ ተጠቃሚዎችን ስለ አዲስ መረጃ መምጣት ማሳወቅ አስፈላጊ ነው, ለዚሁ ዓላማ, የውጤት ፕሮሰሰር ሚና አለ. ውሂቡን ካስቀመጠ በኋላ ወደ ተጓዳኝ ተቆጣጣሪው (ለምሳሌ በተጠቃሚው ወደሚፈለገው ቅጽ ለማምጣት) - ከዚያም ለመላክ ወደ ማገናኛው ማለፍ ይቻላል. የጥገና ወረፋ እዚህም ጥቅም ላይ ይውላል፡ ነገሩን ማንም ካልተቀበለው አስተዳዳሪው በኋላ እንደገና መሞከር ይችላል።

ማመጣጠን

የማገናኛ፣ የግብአት ፕሮሰሰር እና የውጤት ፕሮሰሰር ሚናዎች ሀገር የለሽ ናቸው፣ ይህም የሚፈለገውን የሚና አይነት የነቃ አዲስ አፕሊኬሽን ጉዳዮችን በቀላሉ በመጨመር ስርዓቱን በአግድም እንድንለካ ያስችለናል። ማከማቻው አግድም ለመለካት ጥቅም ላይ ይውላል አንድ አቀራረብ ምናባዊ ባልዲዎችን በመጠቀም ክላስተር ለማደራጀት. አዲስ አገልጋይ ካከሉ በኋላ፣ ከአሮጌዎቹ አገልጋዮች የተወሰኑ ባልዲዎች ከበስተጀርባ ወደ አዲሱ አገልጋይ ይንቀሳቀሳሉ። ይህ በግልጽ ለተጠቃሚዎች የሚከሰት እና የአጠቃላይ ስርዓቱን አሠራር አይጎዳውም.

የውሂብ ባህሪያት

ነገሮች በጣም ትልቅ ሊሆኑ እና ሌሎች ነገሮችን ሊይዙ ይችላሉ. አንድን ነገር ከሁሉም ጥገኞች ጋር በአንድ ምናባዊ ባልዲ ውስጥ በማከማቸት መረጃን የመደመር እና የማዘመን ችሎታን እናረጋግጣለን። ይህ እቃው በተለያዩ አካላዊ አገልጋዮች ላይ እንዳይሰራጭ ይከላከላል።

ስሪት ማውጣት ይደገፋል፡ የእያንዳንዱ ነገር ማሻሻያ አዲስ ስሪት ይፈጥራል፣ እና ሁልጊዜ ጊዜ ወስደን አለም ያኔ እንዴት እንደነበረ ማየት እንችላለን። ረጅም ታሪክ ለማይፈልገው መረጃ፣ የስሪቱን ብዛት መገደብ ወይም አንዱን ብቻ - የቅርብ ጊዜውን - ማለትም ለተወሰነ አይነት ስሪት ማሰናከል እንችላለን። እንዲሁም ታሪኩን በጊዜ መገደብ ይችላሉ፡ ለምሳሌ፡ ከ1 አመት በላይ የሆናቸውን ሁሉንም አይነት ነገሮች ሰርዝ። በማህደር ማስቀመጥም ይደገፋል፡ ከተጠቀሰው ጊዜ በላይ የቆዩ ዕቃዎችን ማውረድ እንችላለን፣ በክላስተር ውስጥ ያለውን ቦታ ነጻ እናደርጋለን።

ተግባራት

ከሚያስደስት ባህሪያቱ መካከል ተግባራትን በጊዜ መርሐግብር፣ በተጠቃሚው ጥያቄ ወይም በፕሮግራም ከማጠሪያ ሳጥን ውስጥ የማስጀመር ችሎታን ልብ ሊባል ይገባል።

የTarantool Data Grid አርክቴክቸር እና ችሎታዎች

እዚህ ሌላ ሚና እናያለን - ሯጭ። ይህ ሚና አገር አልባ ነው፣ እና ከዚህ ሚና ጋር ተጨማሪ የመተግበሪያ ምሳሌዎች እንደ አስፈላጊነቱ ወደ ክላስተር ሊጨመሩ ይችላሉ። የሯጩ ኃላፊነት ተግባራትን ማጠናቀቅ ነው። እንደተጠቀሰው, ከማጠሪያው አዲስ ስራዎችን መፍጠር ይቻላል; በክምችት ላይ ባለው ወረፋ ውስጥ ይቀመጣሉ ከዚያም በሩጫው ላይ ይገደላሉ. ይህ ዓይነቱ ተግባር ኢዮብ ይባላል። እኛ ደግሞ Task የሚባል የተግባር አይነት አለን - እነዚህ በተጠቃሚ የተገለጹ ተግባራት በጊዜ መርሐግብር (ክሮን ሲንታክስን በመጠቀም) ወይም በፍላጎት የሚሰሩ ናቸው። እንደዚህ አይነት ስራዎችን ለመጀመር እና ለመከታተል, ምቹ የሆነ የተግባር አስተዳዳሪ አለን. ይህ ተግባር እንዲገኝ የመርሐግብር አውጪውን ሚና ማንቃት አለብዎት; ይህ ሚና ግዛት አለው, ስለዚህ አይለካም, ሆኖም ግን, አያስፈልግም; በተመሳሳይ ጊዜ, ልክ እንደሌሎች ሚናዎች, ጌታው በድንገት እምቢተኛ ከሆነ መስራት የሚጀምር ቅጂ ሊኖረው ይችላል.

ምዝግብ ማስታወሻ

ሌላው ሚና ሎገር ይባላል። ከሁሉም የክላስተር አባላት የምዝግብ ማስታወሻዎችን ይሰበስባል እና በድር በይነገጽ ለመስቀል እና ለመመልከት በይነገጽ ያቀርባል።

አገልግሎቶች

ስርዓቱ አገልግሎቶችን ለመፍጠር ቀላል እንደሚያደርግ መጥቀስ ተገቢ ነው. በማዋቀሪያው ፋይል ውስጥ፣ በአሸዋ ሳጥን ውስጥ ለሚሰራ በተጠቃሚ የተጻፈ ተቆጣጣሪ የትኞቹ ጥያቄዎች እንደሚላኩ መግለፅ ይችላሉ። በዚህ ተቆጣጣሪ ውስጥ፣ ለምሳሌ አንድ ዓይነት የትንታኔ ጥያቄን ማስኬድ እና ውጤቱን መመለስ ይችላሉ።

አገልግሎቱ በማዋቀሪያው ፋይል ውስጥ ተገልጿል፡-

services:
   sum:
      doc: "adds two numbers"
      function: sum
      return_type: int
      args:
         x: int
         y: int

የግራፍQL ኤፒአይ የሚመነጨው በራስ-ሰር ነው እና አገልግሎቱ ለመደወል ዝግጁ ይሆናል።

query {
   sum(x: 1, y: 2) 
}

ይህ ተቆጣጣሪውን ይጠራል sumውጤቱን የሚመልስ:

3

የጥያቄ መገለጫ እና መለኪያዎች

የስርዓቱን አሠራር እና የመገለጫ ጥያቄዎችን ለመረዳት ለOpenTracing ፕሮቶኮል ድጋፍን ተግባራዊ አድርገናል። ስርዓቱ ይህንን ፕሮቶኮል ለሚደግፉ እንደ ዚፕኪን ባሉ መሳሪያዎች ላይ በፍላጎት ላይ መረጃን መላክ ይችላል፣ ይህም ጥያቄው እንዴት እንደተፈጸመ ለመረዳት ያስችላል፡-

የTarantool Data Grid አርክቴክቸር እና ችሎታዎች

በተፈጥሮ, ስርዓቱ Prometheus ን በመጠቀም ሊሰበሰቡ እና ግራፋናን በመጠቀም ሊታዩ የሚችሉ ውስጣዊ መለኪያዎችን ያቀርባል.

አሰማር

Tarantool Data Grid ከ RPM ፓኬጆች ወይም ከማህደር ማሰማራት ይቻላል፣ ከስርጭቱ የሚገኘውን መገልገያ በመጠቀም ወይም ሊቻል የሚችል፣ ለ Kubernetes ድጋፍም አለ (Tarantool Kubernetes ኦፕሬተር).

የቢዝነስ አመክንዮ (ውቅር፣ ተቆጣጣሪዎች) የሚተገበረው አፕሊኬሽን ወደተዘረጋው የTarantool Data Grid ክላስተር በማህደር መልክ በUI በኩል ወይም ስክሪፕት በመጠቀም በኤፒአይ ተጭኗል።

ናሙና መተግበሪያዎች

Tarantool Data Grid በመጠቀም ምን መተግበሪያዎች ሊፈጠሩ ይችላሉ? እንደ እውነቱ ከሆነ፣ አብዛኞቹ የንግድ ሥራዎች በተወሰነ መልኩ የውሂብ ፍሰትን ከማቀናበር፣ ከማከማቸት እና ከመድረስ ጋር የተያያዙ ናቸው። ስለዚህ፣ በአስተማማኝ ሁኔታ መቀመጥ እና መድረስ የሚያስፈልጋቸው ትልልቅ የመረጃ ዥረቶች ካሉዎት፣ የእኛ ምርት ብዙ የእድገት ጊዜዎን ይቆጥብልዎታል እና በንግድዎ አመክንዮ ላይ ያተኩራል።

ለምሳሌ, ስለ ሪል እስቴት ገበያ መረጃን ለመሰብሰብ እንፈልጋለን, ስለዚህም ለወደፊቱ, ለምሳሌ, ስለ ምርጥ ቅናሾች መረጃ ይኖረናል. በዚህ ሁኔታ, የሚከተሉትን ተግባራት እናሳያለን.

  1. ከክፍት ምንጮች መረጃን የሚሰበስቡ ሮቦቶች የመረጃ ምንጫችን ይሆናሉ። ዝግጁ የሆኑ መፍትሄዎችን በመጠቀም ወይም በማንኛውም ቋንቋ ኮድ በመፃፍ ይህንን ችግር መፍታት ይችላሉ።
  2. በመቀጠል Tarantool Data Grid ይቀበላል እና ውሂቡን ያስቀምጣል. ከተለያዩ ምንጮች የመረጃ ቅርጸቱ የተለየ ከሆነ ወደ አንድ ቅርጸት መለወጥን የሚያከናውን ኮድ በ Lua ውስጥ መጻፍ ይችላሉ። በቅድመ-ማቀነባበር ደረጃ፣ እንዲሁም ለምሳሌ የተባዙ ቅናሾችን ለማጣራት ወይም በተጨማሪም በመረጃ ቋቱ ውስጥ በገበያ ውስጥ ስለሚሰሩ ወኪሎች መረጃን ማሻሻል ይችላሉ።
  3. አሁን በክላስተር ውስጥ ሊሰፋ የሚችል መፍትሄ አለህ ይህም በውሂብ ተሞልቶ የውሂብ ምርጫ ማድረግ ትችላለህ። ከዚያ አዲስ ተግባርን መተግበር ይችላሉ ፣ ለምሳሌ ፣ የውሂብ ጥያቄን የሚያቀርብ አገልግሎት ይፃፉ እና በቀን ውስጥ በጣም ጠቃሚውን ቅናሽ - ይህ በማዋቀሪያው ፋይል ውስጥ ጥቂት መስመሮችን እና ትንሽ የሉዋ ኮድ ይፈልጋል።

ቀጥሎ ምንድነው?

ቅድሚያ የምንሰጠው ነገር በመጠቀም ልማትን ማሻሻል ነው። Tarantool Data Grid. ለምሳሌ፣ ይህ በአሸዋ ሳጥን ውስጥ ለሚሰሩ ፕሮፋይል እና ማረም ተቆጣጣሪዎች ድጋፍ ያለው IDE ነው።

ለደህንነት ጉዳዮችም ከፍተኛ ትኩረት እንሰጣለን. በአሁኑ ጊዜ ከፍተኛ የደህንነት ደረጃን ለማረጋገጥ እና በግል መረጃ መረጃ ስርዓቶች እና በመንግስት የመረጃ ስርዓቶች ውስጥ ጥቅም ላይ የዋሉ የሶፍትዌር ምርቶች የምስክር ወረቀት መስፈርቶችን ለማሟላት በሩሲያ FSTEC የምስክር ወረቀት ላይ እንገኛለን.

ምንጭ: hab.com

አስተያየት ያክሉ