Dhismaha iyo kartida Tarantool Data Grid

Dhismaha iyo kartida Tarantool Data Grid

2017, waxaan ku guuleysanay tartan lagu horumarinayo xudunta wax kala iibsiga ee ganacsiga maalgashiga Alfa-Bank waxaanan bilownay shaqada (HighLoad ++ 2018 oo leh warbixin ku saabsan xudunta ganacsiga maalgashiga hadlay Vladimir Drynkin, madaxa xudunta u ah ganacsiga maalgashiga ee Alfa Bank). Nidaamkani waxa uu ahaa in la isu geeyo xogta wax kala iibsiga ee ilo kala duwan oo qaabab kala duwan ah, u keeno xogta qaab midaysan, kaydiso iyo bixinta helitaanka.

Intii lagu guda jiray geeddi-socodkii horumarinta, nidaamku wuu horumaray oo wuxuu helay shaqayntiisa, mar aanu ogaanay inaannu wax ka dhignay wax ka badan software-ka codsiga loo abuuray si loo xalliyo hawlo kala duwan oo si adag loo qeexay: waanu ku guulaysanay. nidaamka lagu dhisayo codsiyada la qaybiyey oo leh kaydinta joogtada ah. Waayo-aragnimada aan helnay ayaa aasaas u ah badeecad cusub - Tarantool Data Grid (TDG).

Waxaan rabaa in aan ka hadlo qaab dhismeedka TDG iyo xalalka aan u nimid intii lagu jiray geedi socodka horumarinta, ku baro shaqada ugu weyn oo aan tusiyo sida badeecadeenu u noqon karto aasaaska dhismaha xalal dhamaystiran.

Nidaam ahaan, waxaan u qaybinay nidaamka si gooni ah doorarka, mid kasta oo ka mid ah ayaa mas'uul ka ah xallinta dhibaatooyin kala duwan. Tusaalaha arji kaliya ee socda waxa uu fuliyaa hal ama dhawr nooc oo door ah. Waxa jira dhawr door oo isku nooc ah oo kutlada ah:

Dhismaha iyo kartida Tarantool Data Grid

isku xira

Xiriiriyaha ayaa mas'uul ka ah la xiriirka dunida dibadda; hawsheedu waa in ay aqbasho codsiga, kala qaybiso, haddii ay tani ku guulaysato, u dir xogta si ay u habayso processor-ka wax gelinta. Waxaan taageernaa HTTP, SOAP, Kafka, FIX qaabab. Nashqaduhu wuxuu kuu ogolaanayaa inaad si fudud ugu darto taageerada qaabab cusub, iyadoo la taageerayo IBM MQ oo soo socda dhawaan. Haddii falanqaynta codsiga ku guuldareysto, xiriiriyaha ayaa soo celin doona qalad; Haddii kale, waxay ka jawaabi doontaa in codsiga si guul leh loo shaqeeyay, xitaa haddii qalad dhacay inta lagu jiro habayntiisa dheeraadka ah. Tan waxaa loo sameeyay si gaar ah si loola shaqeeyo nidaamyada aan garanayn sida loogu celiyo codsiyada - ama, liddi ku ah, u samee si joogto ah. Si aan loo lumin xogta, safka dayactirka ayaa la isticmaalaa: shaygu marka hore wuu soo galayaa oo kaliya ka dib markii si guul leh looga saaro. Maamuluhu waxa uu heli karaa digniino ku saabsan walxaha ku hadhay safka dayactirka, iyo ka dib marka la tirtiro khaladka software-ka ama cillad hardware, isku day mar kale.

Processor-ka soo gelida

Processor-sooraha Input-ku wuxuu u kala saaraa xogta la helay iyadoo loo eegayo sifooyinka lagu garto wuxuuna wacaa soo-saareyaal habboon. Xakameeyayaashu waa koodka Lua ee ku dhex shaqeeya sanduuqa-cammuudka ah, markaa ma saamayn karaan shaqada nidaamka. Marxaladdan, xogta waxaa lagu dhimi karaa qaabka loo baahan yahay, iyo, haddii loo baahdo, tiro hawlo ah oo aan loo baahnayn ayaa la bilaabi karaa kuwaas oo fulin kara macquulnimada lagama maarmaanka ah. Tusaale ahaan, badeecada MDM (Maareynta Xogta Masterka) ee lagu dhisay Tarantool Data Grid, marka lagu daro isticmaale cusub, si aan hoos loogu dhigin socodsiinta codsiga, waxaan bilaabeynaa abuurista rikoor dahab ah oo ah hawl gooni ah. Sanduuqa-sanduuqa wuxuu taageeraa codsiyada akhriska, beddelka iyo ku-darka xogta, wuxuu kuu ogolaanayaa inaad qabato qaar ka mid ah hawlaha dhammaan doorarka nooca kaydinta iyo isku-darka natiijada (maabka/yaraynta).

Xakameeyayaasha waxaa lagu sharxi karaa faylasha:

sum.lua

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

Ka dibna, lagu dhawaaqay qaabeynta:

functions:
  sum: { __file: sum.lua }

Waa maxay sababta Lua? Lua waa luqad aad u fudud. Iyada oo ku saleysan khibradeena, dhowr saacadood ka dib markii aan ogaanay, dadku waxay bilaabaan inay qoraan koodh xaliya dhibkooda. Oo kuwanu ma aha oo kaliya horumarinta xirfadlayaasha, laakiin, tusaale ahaan, falanqeeyayaasha. Intaa waxaa dheer, mahad-celinta jit-ku-sameeyaha, Lua si dhakhso leh ayuu u socdaa.

kaydinta

Kaydinta waxay kaydisaa xogta joogtada ah. Kahor inta aan la keydin, xogta waxaa lagu ansaxiyay qaab ka dhanka ah xogta. Si loo qeexo wareegga waxaan isticmaalnaa qaab fidsan Apache Avro. Tusaale:

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

Iyada oo ku saleysan tilmaantan, DDL (Luqadda Qeexida Xogta) ayaa si toos ah loogu soo saaray Tarantula DBMS iyo GraphQL schema ee helitaanka xogta.

Ku celcelinta xogta asynchronous waa la taageeray (waxaa jira qorshayaal lagu daro mid isku mid ah).

Processor soo saara

Mararka qaarkood waxaa lagama maarmaan ah in la ogeysiiyo macaamiisha dibadda ee ku saabsan imaatinka xogta cusub; ujeedadaas, waxaa jira doorka processor-ka Output. Ka dib markii la keydiyo xogta, waxaa loo gudbin karaa maamulaha ku habboon (tusaale ahaan, si loo keeno foomka looga baahan yahay macaamilka) - ka dibna loo gudbiyo xiriiriyaha si loo diro. Safka dayactirka ayaa sidoo kale halkan lagu isticmaalaa: haddii qofna uusan aqbalin shayga, maamuluhu wuxuu isku dayi karaa mar kale hadhow.

Isku-dheellitirnaan

Xidhiidhiyaha, processor-ka wax-soo-saarka, iyo doorarka processor-ka wax-soo-saarka ayaa ah kuwo aan waddan lahayn, taasoo noo oggolaanaysa inaan cabbirno nidaamka si siman annagoo si fudud ugu daraya tusaaleyaal codsi oo cusub oo leh nooca doorka la doonayo. Kaydinta waxa loo istcimaalay miisaan toosan habka si loo abaabulo koox iyada oo la adeegsanayo baaldiyada casriga ah. Ka dib marka lagu daro server cusub, qaar ka mid ah baaldiyada seerradii hore ayaa loo raray serverka cusub ee gadaasha; Tani waxay si hufan ugu dhacdaa isticmaalayaasha mana saameynayso hawlgalka nidaamka oo dhan.

Hantida Xogta

Walaxyadu aad bay u waynaan karaan waxayna ka koobnaan karaan walxo kale. Waxaan hubineynaa atomity ee ku darida iyo cusboonaysiinta xogta anagoo ku kaydinayna shay leh dhammaan ku tiirsanaanta hal baaldi macmal ah. Tani waxay ka hortagtaa shayga "inuu ku faafo" dhowr adeegayaal jireed.

Qaabaynta waa la taageeray: Cusbooneysii kasta oo shay wuxuu abuuraa nooc cusub, waxaanan mar walba qaadan karnaa jeex waqti oo aan aragno sida adduunku u ekaa markaas. Xogta aan u baahnayn taariikh dheer, waxaan xadidi karnaa tirada noocyada ama xitaa kaydin karnaa hal kaliya - kii ugu dambeeyay - taas oo ah, asal ahaan curyaamin nuqul ka mid ah nooc gaar ah. Waxaad sidoo kale xaddidi kartaa taariikhda waqtiga: tusaale ahaan, tirtir dhammaan walxaha nooc gaar ah oo ka weyn 1 sano. Kaydinta sidoo kale waa la taageeray: waxaan soo dejin karnaa walxaha ka weyn wakhtiga la cayimay, anagoo xoraynayna boosaska kooxda.

hawlaha

Tilmaamaha xiisaha leh waxaa ka mid ah, waxaa habboon in la xuso awoodda lagu bilaabi karo hawlaha jadwalka, codsiga isticmaalaha, ama barnaamij ahaan laga bilaabo sanduuqa-cammuudda:

Dhismaha iyo kartida Tarantool Data Grid

Halkan waxaan ku aragnaa door kale - orodyahan. Doorkan waa bilaa dal, iyo tusaalooyin codsi oo dheeri ah oo leh doorkan ayaa lagu dari karaa kooxda marka loo baahdo. Mas'uuliyadda orodyahanku waa inuu dhammaystiro hawlaha. Sida ku xusan, waxaa suurtagal ah in la abuuro hawlo cusub oo ka mid ah bacaadka; Waxa lagu kaydiyaa safka kaydinta ka dibna lagu dilo orodyahanka. Hawsha noocaan ah waxaa loo yaqaan Job. Waxa kale oo aanu haynaa nooca hawleed ee loo yaqaan Task - kuwani waa hawlo adeegsaduhu qeexan yihiin oo ku shaqeeya jadwal (adigoo isticmaalaya cron syntax) ama baahida. Si aan u bilowno oo aan ula socono hawlahan oo kale, waxa aanu haysanaa maamule hawleed ku haboon. Si shaqadani u noqoto mid la heli karo, waa inaad awood u yeelataa doorka jadwalka; doorkani wuxuu leeyahay dawlad, markaa ma miisaan, taas oo aan loo baahnayn; Isla mar ahaantaana, sida dhammaan doorarka kale, waxay yeelan kartaa nuqul ka bilaabma shaqada haddii sayidku si lama filaan ah u diido.

Diiwaanka

Door kale waxaa loo yaqaan logger. Waxa ay ururinaysaa diiwaannada dhammaan xubnaha kutlada oo ay siisaa is-dhexgal lagu shubo oo lagu daawado iyada oo loo marayo is-dhexgalka shabakadda.

Adeegyada

Waxaa xusid mudan in nidaamku uu fududeeyo abuurista adeegyo. Faylka qaabeynta, waxaad ku qeexi kartaa codsiyada loo soo diray isticmaale-qoraal ka shaqeeya sanduuqa ciid. Maamulahaan, waxaad tusaale ahaan, wadi kartaa nooc ka mid ah weydiinta falanqaynta oo soo celi natiijada.

Adeegga waxaa lagu sifeeyay faylka qaabeynta:

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

GraphQL API si toos ah ayaa loo soo saaray oo adeegu wuxuu noqonayaa mid diyaar u ah wicida:

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

Tani waxay wici doontaa maamulaha sumtaasoo soo celin doonta natiijada:

3

Xog-ururinta weydiinta iyo cabbirada

Si loo fahmo hawlgalka nidaamka iyo codsiyada xog-ururinta, waxaanu hirgelinay taageerada borotokoolka OpenTracing. Nidaamku wuxuu u diri karaa macluumaadka baahida qalabka taageera borotokoolka, sida Zipkin, kaas oo kuu ogolaanaya inaad fahamto sida codsiga loo fuliyay:

Dhismaha iyo kartida Tarantool Data Grid

Dabiici ahaan, nidaamku wuxuu bixiyaa cabbiro gudaha ah oo lagu soo ururin karo iyadoo la adeegsanayo Prometheus oo la arki karo iyadoo la adeegsanayo Grafana.

La geeyo

Tarantool Data Grid waxaa laga rari karaa baakadaha RPM ama kaydka, iyadoo la adeegsanayo utility qaybinta ama macquulka ah, waxaa sidoo kale jira taageero Kubernetes (Tarantool Kubernetes Operator).

Codsiga fulinaya macquulka ganacsiga (habaynta, maamulayaasha) waxaa lagu shubaa kooxda la diray ee Tarantool Data Grid qaab kayd ah iyada oo loo marayo UI ama iyada oo la adeegsanayo qoraal API-ga aan bixinay.

Tusaalaha Codsiyada

Waa maxay codsiyada la abuuri karaa iyadoo la isticmaalayo Tarantool Data Grid? Dhab ahaantii, badi hawlaha ganacsigu waxay si uun ula xidhiidhaan habaynta, kaydinta iyo helitaanka socodka xogta. Sidaa darteed, haddii aad haysato xog badan oo xog ah oo u baahan in si ammaan ah loo kaydiyo oo loo galo, markaa badeecadayadu waxay ku badbaadin kartaa wakhti badan oo horumarineed waxayna diiradda saari kartaa macquulka ganacsigaaga.

Tusaale ahaan, waxaan rabnaa inaan aruurinno macluumaadka ku saabsan suuqa guryaha, si mustaqbalka, tusaale ahaan, aan u helno macluumaadka ku saabsan dalabyada ugu fiican. Xaaladdan, waxaanu muujin doonaa hawlaha soo socda:

  1. Robot-yada xogta ka soo ururiya ilo furan ayaa noqon doona ilaha xogtayada. Waxaad ku xallin kartaa dhibaatadan adigoo isticmaalaya xalal diyaarsan ama ku qor luqad kasta.
  2. Marka xigta, Tarantool Data Grid ayaa aqbali doonta oo kaydin doonta xogta. Haddii qaabka xogta laga helayo ilo kala duwan ay ka duwan tahay, markaa waxaad ku qori kartaa koodka Lua kaas oo samayn doona beddelka qaab keliya. Marxaladda hore ee habaynta, waxa kale oo aad awood u yeelan doontaa, tusaale ahaan, inaad shaandhayso soo jeedinta nuqul ka mid ah ama aad cusboonaysiiso macluumaadka ku saabsan wakiilada ka shaqeeya suuqa ee kaydka xogta.
  3. Hadda waxaad hore u haysataa xal la miisaami karo oo ku jira koox ah kaas oo lagu buuxin karo xog oo samayn kara xulashada xogta. Kadibna waxaad hirgelin kartaa shaqeyn cusub, tusaale ahaan, qor adeeg kaas oo samayn doona codsi xog ah oo bixiya bixinta ugu faa'iidada badan maalintii - tani waxay u baahan doontaa dhowr sadar oo ku jira faylka qaabeynta iyo wax yar oo Lua code ah.

Maxaa ku xiga?

Muhiimadayadayadu waa in aan hagaajino fududaynta horumarka iyada oo la adeegsanayo Tarantool Data Grid. Tusaale ahaan, kani waa IDE-ga taageera sifada iyo ciribtirka maamulayaasha ku dhex shaqeeya sanduuqa ciid.

Waxaan sidoo kale fiiro gaar ah siinaa arrimaha ammaanka. Hadda waxaan mareynaa shahaadada FSTEC ee Ruushka si loo xaqiijiyo heerka sare ee amniga oo aan buuxinno shuruudaha shahaadaynta alaabada software ee loo isticmaalo nidaamyada macluumaadka shakhsi ahaaneed iyo nidaamka macluumaadka dawladda.

Source: www.habr.com

Add a comment