
እ.ኤ.አ. በ2017፣ የአልፋ-ባንክ የኢንቨስትመንት ንግድ የግብይት ማዕከልን ለማዘጋጀት ውድድሩን አሸንፈናል እና ሥራ ጀምረናል (በ HighLoad++ 2018 የኢንቨስትመንት ንግድ ኮር ላይ ሪፖርት ተደርጓል)። ቭላድሚር ድሪንኪን፣ የአልፋ-ባንክ የኢንቨስትመንት ንግድ የግብይት ኮር ኃላፊ)። ይህ ስርዓት ከተለያዩ ምንጮች የግብይት መረጃዎችን በተለያዩ ቅርጸቶች ለማጠቃለል፣ መረጃውን ደረጃውን የጠበቀ ለማድረግ፣ ለማከማቸት እና መዳረሻ ለመስጠት የተነደፈ ነው።
በልማት ሂደቱ ወቅት ስርዓቱ ተሻሽሎ አዲስ ተግባር አግኝቷል፣ እና በተወሰነ ጊዜ ውስጥ በጥብቅ የተገለጹ የችግሮችን ክልል ለመፍታት ከተፈጠረው የመተግበሪያ ሶፍትዌር የበለጠ ትልቅ ነገር እያቀረብን እንደነበር ተገነዘብን፡ የተከፋፈሉ አፕሊኬሽኖችን በቋሚ ማከማቻ ለመገንባት የሚያስችል ስርዓትያገኘነው ተሞክሮ ለአዲስ ምርት መሠረት ሆኗል - (ቲዲጂ)።
ስለ TDG አርክቴክቸር እና በልማት ወቅት ስለደረስንባቸው መፍትሄዎች ማውራት፣ ዋና ተግባሩን ማስተዋወቅ እና ምርታችን ለተሟላ መፍትሄዎች ግንባታ መሰረት ሆኖ እንዴት ሊያገለግል እንደሚችል ማሳየት እፈልጋለሁ።
በሥነ-ሕንፃ ደረጃ፣ ስርዓቱን ወደ ተለያዩ ክፍሎች ከፍለነዋል ሚናዎችእያንዳንዳቸው የተወሰኑ የተግባሮችን ስብስብ ለመፍታት ኃላፊነት አለባቸው። አንድ የአፕሊኬሽኑ አንድ ወይም ከዚያ በላይ የተግባሮችን አይነት ይተገብራል። አንድ ክላስተር ተመሳሳይ አይነት በርካታ ሚናዎች ሊኖሩት ይችላል፡

አያያዥ
ማገናኛው ከውጭው ዓለም ጋር ለመግባባት ኃላፊነት አለበት፤ ተግባሩ ጥያቄን መቀበል፣ መተንተን እና ከተሳካ መረጃውን ለማስኬድ ወደ ግብዓት ፕሮሰሰር መላክ ነው። HTTP፣ SOAP፣ Kafka እና FIXን እንደግፋለን። አርክቴክቸሩ አዳዲስ ቅርጸቶችን በቀላሉ ለመጨመር ያስችላል፣ የIBM MQ ድጋፍ በቅርቡ ይመጣል። ጥያቄን መተንተን ስህተት ከፈጠረ፣ ማገናኛው ስህተት ይመልሳል፤ አለበለዚያ ጥያቄው በተሳካ ሁኔታ እንደተሰራ ምላሽ ይሰጣል፣ ተጨማሪ ሂደት በሚካሄድበት ጊዜ ስህተት ቢፈጠርም። ይህ የሚደረገው ጥያቄዎችን እንደገና መሞከር የማይችሉ ስርዓቶችን - ወይም በተቃራኒው - ያለማቋረጥ ለማድረግ ነው። የውሂብ መጥፋትን ለማስወገድ የጥገና ወረፋ ጥቅም ላይ ይውላል፡ አንድ ነገር በመጀመሪያ ወደ እሱ ይታከላል እና ከተሳካ ሂደት በኋላ ብቻ ይወገዳል። አስተዳዳሪው በጥገና ወረፋ ውስጥ ስለቀሩ ነገሮች ማሳወቂያዎችን መቀበል ይችላል እና የሶፍትዌር ስህተት ወይም የሃርድዌር ውድቀት ከተፈታ በኋላ እንደገና መሞከርን ያከናውናል።
የግቤት ፕሮሰሰር
የግቤት ፕሮሰሰሩ የተቀበለውን መረጃ በባህሪያዊ ባህሪያት ላይ በመመስረት ይመድባል እና ተገቢውን ተቆጣጣሪዎች ይጠራል። ተቆጣጣሪዎች በአሸዋ ሳጥን ውስጥ የሚሰሩ የሉአ ኮድ ናቸው፣ ስለዚህ የስርዓት አሠራሩን ሊነኩ አይችሉም። በዚህ ደረጃ፣ መረጃው ወደ ተፈለገው ቅርጸት ሊለወጥ ይችላል፣ እና አስፈላጊ ከሆነ፣ አስፈላጊውን አመክንዮ ለመተግበር ማንኛውም የተግባር ብዛት ሊጀመር ይችላል። ለምሳሌ፣ በታራንቶል ዳታ ግሪድ ላይ በተገነባው የMDM (ማስተር ዳታ አስተዳደር) ምርት ውስጥ፣ አዲስ ተጠቃሚን ስንጨምር፣ የጥያቄ ሂደትን ለማዘግየት እንደ የተለየ ተግባር ወርቃማ መዝገብ መፍጠር እንጀምራለን። የአሸዋ ሳጥኑ ጥያቄዎችን ማንበብ፣ ማሻሻል እና ማያያዝን ይደግፋል፣ በሁሉም የማከማቻ ሚናዎች ላይ የተወሰነ ተግባር እንዲፈጸም እና የውጤት ድምርን (ካርታ/መቀነስ) ያስችላል።
ተቆጣጣሪዎች በፋይሎች ውስጥ ሊገለጹ ይችላሉ-
sum.lua
local x, y = unpack(...)
return x + yከዚያም በማዋቀሪያው ውስጥ እንዲህ ብሏል፦
functions:
sum: { __file: sum.lua }
ለምን ሉአ? ሉአ በጣም ቀላል ቋንቋ ነው። በእኛ ልምድ፣ ሰዎች ችግሮቻቸውን ከተማሩ በኋላ በጥቂት ሰዓታት ውስጥ የሚፈታ ኮድ መጻፍ ይጀምራሉ። ይህ ደግሞ ለሙያዊ ገንቢዎች ብቻ ሳይሆን ለተንታኞችም ይሠራል፣ ለምሳሌ። በተጨማሪም፣ ለጄአይቲ ኮምፓይለር ምስጋና ይግባውና ሉአ በጣም ፈጣን ነው።
መጋዘን
ማከማቻ ዘላቂ ውሂብ ያከማቻል። ከማከማቸቱ በፊት፣ መረጃው ከውሂብ ንድፍ ጋር ይጣጣማል። ንድፉን ለመግለጽ የተራዘመ ቅርጸት እንጠቀማለን። . ምሳሌ
{
"name": "User",
"type": "record",
"logicalType": "Aggregate",
"fields": [
{ "name": "id", "type": "string"},
{"name": "first_name", "type": "string"},
{"name": "last_name", "type": "string"}
],
"indexes": ["id"]
}በዚህ መግለጫ ላይ በመመስረት፣ DDL (የውሂብ ፍቺ ቋንቋ) ለታራንቱላ DBMS እና ለ የውሂብ መዳረሻ ዘዴ።
ያልተመሳሰለ የውሂብ ማባዛት ይደገፋል (የተመሳሰለ ማባዛትን ለመጨመር አቅዷል)።
የውጤት ፕሮሰሰር
አንዳንድ ጊዜ የውጭ ሸማቾች ስለ አዳዲስ የውሂብ መድረሻዎች ማሳወቂያ ሊሰጣቸው ይገባል፣ እና የውጤት ማቀነባበሪያው ሚና ለዚህ ዓላማ ይገኛል። መረጃው ከተቀመጠ በኋላ፣ ወደ ተገቢው ፕሮሰሰር (ለምሳሌ፣ በተጠቃሚው መስፈርቶች መሠረት ለመቅረጽ) ሊተላለፍ እና ከዚያም ለመላክ ወደ ማገናኛው ሊላክ ይችላል። የጥገና ወረፋ እዚህም ጥቅም ላይ ይውላል፡ ማንም ሰው ዕቃውን ካልተቀበለ፣ አስተዳዳሪው በኋላ እንደገና መሞከር ይችላል።
ማመጣጠን
ማገናኛው፣ የግብዓት ፕሮሰሰሩ እና የውጤት ፕሮሰሰሩ ሚናዎች ሁኔታ የሌላቸው ናቸው፣ ይህም የሚፈለገውን የሚና አይነት በነቃላቸው አዳዲስ የመተግበሪያ ምሳሌዎችን በመጨመር ስርዓቱን በአግድም እንድናሰፋ ያስችለናል። ማከማቻ ለአግድም ልኬት ጥቅም ላይ ይውላል። ምናባዊ ባልዲዎችን በመጠቀም ክላስተር ለማደራጀት። አዲስ አገልጋይ ከጨመሩ በኋላ፣ ከአሮጌ አገልጋዮች የተገኙ አንዳንድ ባልዲዎች ከበስተጀርባ ወደ አዲሱ አገልጋይ ይወሰዳሉ፤ ይህ ለተጠቃሚዎች ግልጽ በሆነ መንገድ ይከሰታል እና አጠቃላይ ስርዓቱን አይጎዳውም።
የውሂብ ባህሪያት
ነገሮች በጣም ትልቅ ሊሆኑ እና ሌሎች ነገሮችን ሊይዙ ይችላሉ። አንድን ነገር ሁሉንም ጥገኝነቶች በአንድ ምናባዊ ባልዲ ውስጥ በማስቀመጥ የአቶሚክ ውሂብ ማስገባት እና ማዘመንን እናረጋግጣለን። ይህ አንድ ነገር በብዙ አካላዊ አገልጋዮች ላይ "እንዳይሰበር" ይከላከላል።
ስሪት ማቀናበር ይደገፋል፡- ወደ አንድ ነገር የሚሄድ እያንዳንዱ ዝማኔ አዲስ ስሪት ይፈጥራል፣ እና ሁልጊዜም የጊዜ ቁራጭ ወስደን ዓለም ምን እንደሚመስል ማየት እንችላለን። ረጅም ታሪክ የማያስፈልገው መረጃ ለማግኘት፣ የስሪቶችን ብዛት መገደብ ወይም አንድ ብቻ ማከማቸት እንችላለን - በጣም የቅርብ ጊዜ - ለተወሰነ አይነት ስሪት ማሰናከልን ውጤታማ በሆነ መንገድ ማሰናከል። እንዲሁም ታሪኩን በጊዜ መገደብ እንችላለን፡ ለምሳሌ፣ ከአንድ አመት በላይ የቆየ የተወሰነ አይነት ሁሉንም ነገሮች መሰረዝ። ማህደርም እንዲሁ ይደገፋል፡ ከተወሰነ ጊዜ በላይ የቆዩ ነገሮችን ማራገፍ እንችላለን፣ በክላስተር ውስጥ ቦታ ማስለቀቅ እንችላለን።
ተግባራት
ከሚያስደስቱ ባህሪያት መካከል፣ በተጠቃሚው ጥያቄ ወይም በፕሮግራም ከአሸዋ ሳጥን ሆነው ስራዎችን በጊዜ ሰሌዳ የማካሄድ ችሎታን ልብ ማለት ያስፈልጋል፡

እዚህ ላይ ሌላ ሚና እናያለን - ሯጭ። ይህ ሚና ግዛት የሌለው ነው፣ እና አስፈላጊ ከሆነ ከዚህ ሚና ጋር ተጨማሪ የትግበራ ምሳሌዎች ወደ ክላስተር ሊጨመሩ ይችላሉ። የሯጩ ኃላፊነት ተግባራትን መፈጸም ነው። እንደተጠቀሰው፣ አዳዲስ ተግባራት ከአሸዋ ሳጥኑ ሊፈጠሩ ይችላሉ፤ በማከማቻ ወረፋ ውስጥ ይቀመጣሉ እና ከዚያም በሩጫ ላይ ይከናወናሉ። ይህ ዓይነቱ ተግባር ሥራ ይባላል። እንዲሁም ተግባር የሚባል የተግባር አይነት አለን - በተጠቃሚ የተገለጹ ተግባራት በጊዜ ሰሌዳ (ክሮን አገባብን በመጠቀም) ወይም በፍላጎት ላይ የሚሄዱ። እንደዚህ ያሉ ተግባራትን ለማስጀመር እና ለመከታተል፣ ምቹ የተግባር አስተዳዳሪ አለን። ይህ ተግባር እንዲገኝ፣ የጊዜ ሰሌዳ አስተዳዳሪ ሚና መንቃት አለበት። ይህ ሚና ግልጽ እና ስለዚህ ሊሰፋ የማይችል ነው፣ ይህም አያስፈልግም። ሆኖም፣ እንደሌሎች ሚናዎች ሁሉ፣ ጌታው በድንገት ቢወድቅ የሚረከብ ቅጂ ሊኖረው ይችላል።
ምዝግብ ማስታወሻ
ሌላኛው ሚና ሎገር ይባላል። ከሁሉም የክላስተር አባላት ምዝግብ ማስታወሻዎችን ይሰበስባል እና በድር በይነገጽ በኩል ለማውረድ እና ለማየት በይነገጽ ይሰጣል።
አገልግሎቶች
ስርዓቱ አገልግሎቶችን መፍጠር ቀላል እንደሚያደርገው መጥቀስ ተገቢ ነው። የትኞቹ ጥያቄዎች በአሸዋ ሳጥን ውስጥ ወደሚሰራ በተጠቃሚ የተጻፈ ተቆጣጣሪ መተላለፍ እንዳለባቸው ለመግለጽ የውቅር ፋይል ጥቅም ላይ ሊውል ይችላል። ይህ ተቆጣጣሪ ለምሳሌ የትንታኔ ጥያቄን መፈጸም እና ውጤቱን መመለስ ይችላል።
አገልግሎቱ በማዋቀሪያ ፋይል ውስጥ ተገልጿል፦
services:
sum:
doc: "adds two numbers"
function: sum
return_type: int
args:
x: int
y: int
የ GraphQL ኤፒአይ በራስ-ሰር ይፈጠራል እና አገልግሎቱ ለጥያቄ ዝግጁ ይሆናል፦
query {
sum(x: 1, y: 2)
} ይህ ተቆጣጣሪው እንዲጠራ ያደርገዋል sumውጤቱን የሚመልስ፣
3
የጥያቄ መገለጫ እና መለኪያዎች
የስርዓት አሠራርን እና የጥያቄ መገለጫን ለመረዳት፣ የOpenTracing ፕሮቶኮልን ድጋፍ ተግባራዊ አድርገናል። ስርዓቱ እንደ ዚፕኪን ላሉ ይህንን ፕሮቶኮል የሚደግፉ መሳሪያዎች በፍላጎት ላይ መረጃ መላክ ይችላል፣ ይህም መጠይቅ እንዴት እንደተከናወነ እንድንረዳ ያስችለናል፡

በተፈጥሮው፣ ስርዓቱ ፕሮሜቲየስን በመጠቀም ሊሰበሰቡ እና ግራፊናን በመጠቀም ሊታዩ የሚችሉ ውስጣዊ መለኪያዎችን ያቀርባል።
አሰማር
የታራንቱል ዳታ ግሪድ ከ RPM ፓኬጆች ወይም ማህደሮች፣ የቀረበውን መገልገያ ወይም Ansible በመጠቀም ሊሰራጭ ይችላል፣ እና ለKubernetes ድጋፍም አለ ()).
የንግድ አመክንዮ (ውቅር፣ ተቆጣጣሪዎች) የሚተገበረው መተግበሪያ በተጠቃሚው የተጠቃሚ በይነገጽ በኩል ወይም በምናቀርበው ኤፒአይ በኩል ስክሪፕት በመጠቀም በተሰማራው የTarantool Data Grid ክላስተር ውስጥ እንደ ማህደር ይጫናል።
የመተግበሪያ ምሳሌዎች
በታራንቱል ዳታ ግሪድ ምን አይነት አፕሊኬሽኖች ሊገነቡ ይችላሉ? እንደ እውነቱ ከሆነ፣ አብዛኛዎቹ የንግድ ተግባራት የውሂብ ዥረቶችን ማቀነባበር፣ ማከማቸት እና መድረስን ያካትታሉ። ስለዚህ፣ ደህንነቱ በተጠበቀ ሁኔታ መቀመጥ እና መድረስ የሚያስፈልጋቸው ትላልቅ የውሂብ ዥረቶች ካሉዎት፣ ምርታችን ከፍተኛ የእድገት ጊዜዎን ሊቆጥብልዎት ይችላል፣ ይህም በንግድ ሎጂክዎ ላይ እንዲያተኩሩ ያስችልዎታል።
ለምሳሌ፣ በኋላ ላይ ስለ ሪል እስቴት ገበያ መረጃ መሰብሰብ እንፈልጋለን፣ ለምሳሌ፣ ምርጥ ቅናሾችን ለማወቅ። በዚህ ሁኔታ፣ የሚከተሉትን ተግባራት እንለያለን፡
- ከክፍት ምንጮች መረጃ የሚሰበስቡ ሮቦቶች የውሂብ ምንጮቻችን ይሆናሉ። ይህንን ችግር ዝግጁ የሆኑ መፍትሄዎችን በመጠቀም ወይም በማንኛውም ቋንቋ ኮድ በመጻፍ መፍታት ይችላሉ።
- ከዚያም የታራንቱል ዳታ ግሪድ ውሂቡን ይቀበላል እና ያስቀምጣል። ከተለያዩ ምንጮች የተገኘው የውሂብ ቅርጸት የተለየ ከሆነ፣ ወደ አንድ ወጥ ቅርጸት ለመቀየር የሉአ ኮድ መጻፍ ይችላሉ። በቅድመ-ሂደት ደረጃ፣ እንዲሁም በገበያ ውስጥ ስለሚሰሩ ወኪሎች መረጃ የተባዙ ቅናሾችን ማጣራት ወይም የውሂብ ጎታውን ማዘመን ይችላሉ።
- አሁን በክላስተር ውስጥ ሊሰፋ የሚችል መፍትሄ አለዎት፣ ይህም በውሂብ ሊሞላ እና ሊወጣ ይችላል። በመቀጠል፣ አዲስ ተግባርን መተግበር ይችላሉ፣ ለምሳሌ፣ ውሂቡን የሚጠይቅ እና ለቀኑ ምርጡን ቅናሽ የሚመልስ አገልግሎት መጻፍ ይችላሉ - ይህ በማዋቀሪያ ፋይል ውስጥ ጥቂት መስመሮችን እና የተወሰነ የሉአ ኮድ ይፈልጋል።
ቀጥሎ ምንድነው?
ቅድሚያ የምንሰጠው ነገር የልማትን ቀላልነት በማሻሻል እገዛ ማድረግ ነው ለምሳሌ፣ ይህ በአሸዋ ሳጥን ውስጥ የሚሰሩ የመገለጫ እና የማረሚያ ተቆጣጣሪዎችን የሚደግፍ IDE ነው።
በተጨማሪም ለደህንነት ከፍተኛ ትኩረት እንሰጣለን። በአሁኑ ጊዜ ከፍተኛ የደህንነት ደረጃችንን ለማረጋገጥ እና በግል የውሂብ መረጃ ስርዓቶች እና በመንግስት የመረጃ ስርዓቶች ውስጥ ጥቅም ላይ ለሚውሉ የሶፍትዌር ምርቶች የማረጋገጫ መስፈርቶችን ለማሟላት ከሩሲያ የቴክኒክ እና የኤክስፖርት ቁጥጥር (FSTEC) የምስክር ወረቀት እያገኘን ነው።
ምንጭ: hab.com
