Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Kooxda Mail.ru waxaan ku haynaa Tarantool - kani waa adeegaha arji ee Lua, kaas oo sidoo kale labanlaabmaya xog ururin ahaan (ama lid ku ah?). Way degdeg badan tahay oo qabow, laakiin awoodaha hal server weli ma xaddidna. Isku-dheellitirnaanta tooska ah sidoo kale maaha dawo, markaa Tarantool waxay leedahay qalab loogu talagalay miisaan toosan - moduleka vshard [1]. Waxay kuu ogolaanaysaa inaad ku jeexdid xogta dhowr server, laakiin waa inaad ku dhejisaa si aad u dejiso oo aad ugu dhejiso macquulka ganacsiga.

Akhbaar wanaagsan: waxaan soo aruurinay xoogaa darbo waaweyn ah (tusaale [2], [3]) oo abuuray qaab kale oo si weyn u fududayn doona xallinta dhibaatadan.

Tarantool Cartridge waa qaab-dhismeed cusub oo lagu horumarinayo habab qaybsan oo adag. Waxay kuu ogolaaneysaa inaad diirada saarto qorista macquulka ganacsiga halkii aad ka xallin lahayd dhibaatooyinka kaabayaasha. Hoosta gooynta waxaan kuu sheegi doonaa sida qaab-dhismeedkani u shaqeeyo iyo sida loo qoro adeegyada la qaybiyo adoo isticmaalaya.

Waa maxay dhibku runtii?

Waxaan leenahay tarantula, waxaan haynaa vshard - maxaa kale oo aad rabi kartaa?

Marka hore, waa arrin ku habboon. Qaabeynta vshard waxaa lagu habeeyey iyada oo loo marayo miisaska Lua. Nidaam qaybsan oo ka mid ah hababka Tarantool ee badan si ay si sax ah u shaqeeyaan, qaabeyntu waa inay noqotaa mid isku mid ah meel kasta. Qofna ma rabo inuu tan gacanta ku sameeyo. Sidaa darteed, dhammaan noocyada qoraallada, Macquul ah, iyo nidaamyada geynta ayaa loo isticmaalaa.

Cartridge laftiisa ayaa maamusha qaabeynta vshard, waxay tan ku sameysaa iyadoo ku saleysan qaabeynta qaybsan u gaar ah. Asal ahaan waa fayl YAML fudud, oo nuqul ka mid ah lagu kaydiyaa tusaale kasta oo Tarantool ah. Fududeynta ayaa ah in qaabka laftiisa uu kormeero qaabeyntiisa oo uu hubiyo in uu isku mid yahay meel kasta.

Marka labaad, mar kale waa arrin ku habboon. Qaabeynta vsshard wax shaqo ah kuma lahan horumarinta macquulka ganacsiga oo kaliya waxay ka jeedisaa barnaamij-sameeyaha shaqadiisa. Marka aan ka wada hadalno qaab-dhismeedka mashruuca, waxaan inta badan ka hadalnaa qaybaha gaarka ah iyo isdhexgalka. Waa goor hore in laga fikiro sidii koox loo soo saari lahaa 3 xarumood oo xog ah.

Waxaan xallinay dhibaatooyinkan marar badan iyo mar kale, iyo mararka qaarkood waxaan ku guuleysanay inaan horumarino hab fududeynaya la shaqeynta codsiga inta lagu jiro wareegga nolosha oo dhan: abuurista, horumarinta, tijaabinta, CI / CD, dayactirka.

Cartridge wuxuu soo bandhigayaa fikradda doorka ee geedi socod kasta oo Tarantool ah. Doorarku waa fikrad u oggolaanaysa horumariyaha inuu diiradda saaro qoraalka koodka. Dhammaan doorarka laga heli karo mashruuca waxaa lagu wadi karaa hal tusaale Tarantool, tanina waxay ku filnaan doontaa imtixaanada.

Tilmaamaha muhiimka ah ee Tarantool Cartridge:

  • koox-kooxeedka otomaatiga ah;
  • ballaarinta shaqada codsiga iyadoo la adeegsanayo doorar cusub;
  • qaabka codsiga ee horumarinta iyo geynta;
  • si toos ah loo dhisay;
  • la-qabsiga qaabka imtixaanka Luaest;
  • maamulka kooxda isticmaalaya WebUI iyo API;
  • baakadaha iyo qalabaynta.

Hello, Adduunka!

Ma sugi karo inaan muujiyo qaabka laftiisa, markaa waxaan ka tagi doonaa sheekada ku saabsan qaab dhismeedka dambe oo aan ku bilowno wax fudud. Haddii aan u maleyno in Tarantool lafteedu mar hore la rakibay, markaa waxa hadhay oo dhan waa in la sameeyo

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

Labadan amar ayaa ku rakibi doona adeegyada khadka taliska waxayna kuu oggolaanayaan inaad ka abuurto arjigaaga ugu horreeya template:

$ cartridge create --name myapp

Waana tan waxa aan heleyno:

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/

Kani waa kayd git ah oo wata "Hello, World!" diyaarsan. codsi. Aan isku dayno inaan isla markaaba orodno, annagoo hore u rakibnay ku-tiirsanaanta (oo ay ku jiraan qaab-dhismeedka laftiisa):

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

Markaa, waxaanu haynaa hal nood oo u ordaya codsiga la jeexjeexay ee mustaqbalka. Qofka wax weyddiinaya ayaa isla markiiba furi kara interface-ka shabakadda, wuxuu ku habeyn karaa koox hal nood ah oo leh jiirka oo wuxuu ku raaxaysan karaa natiijada, laakiin waa goor hore in lagu farxo. Ilaa hadda, codsigu ma samayn karo wax faa'iido leh, markaa waxaan kuu sheegi doonaa wax ku saabsan geynta dambe, laakiin hadda waa waqtigii la qori lahaa koodka.

Horumarinta Codsiga

Bal qiyaas, waxaan naqshadeyneynaa mashruuc ay tahay in la helo xogta, keydisa oo dhisto warbixin maalintii hal mar.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Waxaan bilaabaynaa sawirista jaantuska oo aan dul saarno saddex qaybood: albaabka, kaydinta iyo jadwalka. Waxaan ka sii shaqaynaynaa dhismaha. Maadaama aan u isticmaalno vshard sida kaydinta, waxaan ku darnaa vshard-router iyo vshard-storage nidaamka. Albaabka ama jadwaleeyaha midkoodna si toos ah uma geli doono kaydinta; taasi waa waxa router-ku u yahay, taasi waa waxa loo abuuray.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Jaantuskani wali si sax ah uma matalo waxa aan ku dhisi doono mashruuca sababtoo ah qaybaha ayaa u muuqda kuwo aan la taaban karin. Waxaan wali u baahanahay inaan aragno sida tan loogu saadaaliyay Tarantool-ka dhabta ah - aan u kooxeyno qaybahayaga qaab ahaan.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Waxaa jirta faa'iido yar in la ilaaliyo vshard-router iyo albaabbada xaalado kala duwan. Maxay tahay sababta aan ugu baahanahay inaan mar kale marinno shabakadda haddii tani ay tahay mas'uuliyadda router? Waa in lagu socodsiiyaa hab isku mid ah. Taasi waa, gateway iyo vshard.router.cfg labaduba waxay ku bilowdeen hal hab, oo ha u dhexgalaan gudaha.

Marxaladda naqshadeynta, way ku habboon tahay in lagu shaqeeyo saddex qaybood, laakiin aniga, horumariye ahaan, marka aan qorayo koodka, ma rabo inaan ka fekero bilaabista saddex xaaladood oo Tarnatool ah. Waxaan u baahanahay inaan sameeyo imtixaanada oo aan hubiyo inaan si sax ah u qoray albaabka. Ama waxaa laga yaabaa inaan rabo inaan muujiyo asxaabteyda muuqaal. Waa maxay sababta aan u maro dhibka ah in aan geeyo saddex nuqul? Tani waa sida fikradda doorarka ay ku dhalatay. Doorku waa nooc luash joogto ah kaas oo meertada noloshu ay maamusho Cartridge. Tusaalahan waxaa jira afar ka mid ah - gateway, router, kaydinta, jadwalka. Waxaa laga yaabaa inay wax badan ka jiraan mashruuc kale. Dhammaan doorarka waxaa lagu wadi karaa hal hab, tanina way ku filnaan doontaa.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Markay timaaddo hawlgelinta diyaarinta ama wax-soo-saarka, markaa waxaanu ku meelayn doonnaa nidaam kasta oo Tarantool ah doorarkiisa gaarka ah iyadoo ku xidhan awoodda qalabka:

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Maamulka Topology

Macluumaadka ku saabsan meelaha doorarka ka socda waa in lagu kaydiyaa meel. Oo tan "meel" waa qaabeynta la qaybiyay, taas oo aan horay u soo sheegnay. Waxa ugu muhiimsan ee ku saabsan waa topology cluster. Waa kuwan 3 kooxood oo tarantoole ah oo ka kooban 5 Tarantool:

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Ma rabno inaan lumino xogta, markaa waxaan ula dhaqanaa macluumaadka ku saabsan hababka socodsiinta si taxadar leh. Cartridge waxa uu la socdaa qaabaynta isaga oo isticmaalaya ballan laba waji ah. Marka aan rabno inaan cusbooneysiino qaabeynta, waxay marka hore hubineysaa in dhammaan tusaalooyinka la heli karo oo ay diyaar u yihiin inay aqbalaan qaabeynta cusub. Taas ka dib, wajiga labaad wuxuu khuseeyaa config. Sidaa darteed, xitaa haddii hal nuqul uu noqdo mid aan si ku meel gaar ah loo heli karin, wax xun ma dhici doono. Qaabaynta si fudud looma dabaqi doono oo waxaad arki doontaa khalad ka hor.

Sidoo kale qaybta topology-ga, cabbirka muhiimka ah sida hogaamiyaha koox kasta oo taran ayaa lagu tilmaamay. Caadiyan kani waa nuqulka la duubayo. Inta soo hartay inta badan waa wax-akhris-kaliya, inkastoo laga yaabo inay jiraan waxyaabo ka reeban. Mararka qaarkood horumariyayaal geesiyaal ah kama cabsadaan isku dhacyada waxayna u qori karaan xogta dhowr nuqul oo isbarbar socda, laakiin waxaa jira hawlgallo qaar, iyada oo aan loo eegin, waa in aan la samayn laba jeer. Tan waxaa u yaal calaamad hoggaamiye.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Nolosha doorarka

Si door aan la taaban karin uu uga jiro dhismahan, qaabdhismeedku waa inuu si uun u maareeyaa. Dabcan, xakamayntu waxay dhacdaa iyada oo aan dib loo bilaabin habka Tarantool. Waxa jira 4 dib-u-warid ah oo lagu maareeyo doorarka. Kartridge laftiisa ayaa wici doona iyaga oo ku xidhan waxa ku qoran qaabayntiisa la qaybiyey, taas oo ku dabaqaysa qaabaynta doorar gaar ah.

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

Door kastaa waxay leedahay shaqo init. Waxa loo yeedhaa hal mar ama marka doorka la furo ama marka Tarantool dib loo bilaabo. Way ku habboon tahay halkaas, tusaale ahaan, in la bilaabo box.space.create, ama jadwaleeyaha ayaa bilaabi kara xoogaa fiber-ka-soo-bax ah kaas oo qaban doona shaqada waqtiyo gaar ah.

Hal shaqo init waxaa laga yaabaa inaysan ku filneyn. Cartridge wuxuu u oggolaanayaa doorarka inay ka faa'iidaystaan ​​qaabeynta la qaybiyey ee ay u isticmaasho si ay u kaydiso dusha sare. Waxaan ku dhawaaqi karnaa qayb cusub oo isku mid ah oo ku kaydin karnaa jajab qaabeynta ganacsiga dhexdeeda. Tusaalahayga, tani waxay noqon kartaa qorshe xog ama jaangooyo jadwal oo loogu talagalay doorka jadwaleeyaha.

Kooxda ayaa wacday validate_config и apply_config mar kasta oo qaabaynta la qaybiyey isbedelo. Marka qaabaynta lagu dabaqo ballan laba waji ah, kooxdu waxay hubinaysaa in door kastaa diyaar u yahay inuu aqbalo qaabayntan cusub oo, haddii loo baahdo, uu khalad u sheego isticmaalaha. Marka qof kastaa ogolaado in qaabeynta ay tahay mid caadi ah, ka dibna apply_config.

Sidoo kale doorarku waxay leeyihiin hab stop, kaas oo loo baahan yahay si loo nadiifiyo wax soo saarka doorka. Haddi aan nidhaahno jadwaleeyahaas loogama baahna server-kan, waxay joojin kartaa fiilooyinkaas uu ku bilaabay init.

Doorarku way is falgeli karaan. Waxaa naloo bartay inaan ku qorno wicitaannada shaqada gudaha Lua, laakiin waxaa dhici karta inay dhacdo in habka la bixiyay uusan lahayn doorka aan u baahanahay. Si loo fududeeyo wicitaanada shabakada, waxaan isticmaalnaa rpc (wacitaanka nidaamka fog) moduleka caawinta, kaas oo lagu dhisay saldhigga caadiga ah ee netbox ee lagu dhisay Tarantool. Tani waxay noqon kartaa mid faa'iido leh haddii, tusaale ahaan, albaabkaaga uu rabo inuu si toos ah u weydiiyo jadwalka inuu qabto shaqada hadda, halkii uu sugi lahaa maalin.

Qodob kale oo muhiim ah waa hubinta dulqaadka qaladka. Cartridge wuxuu isticmaalaa borotokoolka SWIM si uu ula socdo caafimaadka [4]. Marka la soo koobo, hababku waxay isweydaarsadaan "xanta" midba midka kale oo ku saabsan UDP-hannaan kastaa wuxuu u sheegaa deriskiisa wararkii ugu dambeeyay, wayna ka jawaabaan. Haddii ay jawaabtu si lama filaan ah u iman weydo, Tarantool waxa uu bilaabay in uu ka shakiyo in ay wax khaldan yihiin, muddo ka bacdina waxa ay akhrinaysaa geerida oo ay bilaabaysaa in ay qof walba u sheegto warkan.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Iyada oo ku saleysan hab-maamuuska, Cartridge wuxuu qabanqaabiyaa habaynta fashilka tooska ah. Nidaam kastaa wuxuu kormeeraa deegaankiisa, haddii hoggaamiyuhu si lama filaan ah u joojiyo ka jawaabista, nuqulku wuxuu la wareegi karaa doorkiisa, Cartridge wuxuu u habeeyaa doorarka socodsiinta si habboon.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Waxaad u baahan tahay inaad ka taxaddarto halkan, sababtoo ah dib-u-soo-noqoshada joogtada ah waxay horseedi kartaa isku dhacyada xogta inta lagu jiro soo-celinta. Dabcan, waa inaadan awood u siin fashilka tooska ah si aan kala sooc lahayn. Waa inaan si cad u fahamnaa waxa dhacaya oo aan hubinno in taranku aanu jabin ka dib marka hoggaamiyaha la soo celiyo oo taajka loo soo celiyo isaga.

Waxaas oo dhan, waxaad ka heli kartaa dareen ah in doorarku la mid yihiin adeegyada yaryar. Dareen ahaan, iyagu waa sidaas oo keliya, sida modules gudaha hababka Tarantool. Laakiin waxa kale oo jira tiro faraqyo aasaasi ah. Marka hore, dhammaan doorarka mashruuca waa in ay ku noolaadaan saldhig kood isku mid ah. Dhammaan hababka Tarantool waa in laga bilaabo isla saldhigga koodhka, si aysan u jirin wax la yaab leh sida kuwa marka aan isku dayeyno inaan bilowno jadwalka, laakiin si fudud ma jiraan. Sidoo kale, waa inaadan u oggolaan kala duwanaanshaha noocyada code, sababtoo ah habdhaqanka nidaamka ee xaaladdan oo kale waa mid aad u adag in la saadaaliyo oo laga saaro.

Si ka duwan Docker, ma qaadan karno oo kaliya door "sawir", u gee mishiin kale oo ku wad halkaas. Doorasheenu maaha kuwo go'doonsan sida weelasha Docker. Sidoo kale, ma wadi karno laba door oo isku mid ah hal tusaale. Door ama waa jiraa ama ma jiro; macno ahaan, waa hal-door. Marka saddexaadna, doorarku waa inay isku mid noqdaan dhammaan kooxda taranka, sababtoo ah haddii kale waxay noqon doontaa wax aan macquul ahayn - xogtu waa isku mid, laakiin qaabeynta ayaa ka duwan.

Qalabka geynta

Waxaan ballan qaaday inaan tuso sida Cartridge uu u caawiyo geynta codsiyada. Si nolosha loogu fududeeyo kuwa kale, qaab-dhismeedka baakadaha RPM:

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

Xirmada rakiban waxay ka kooban tahay wax kasta oo aad u baahan tahay: labadaba codsiga iyo ku tiirsanaanta rakiban. Tarantool waxay sidoo kale u imaan doontaa server-ka iyadoo ku xiran xirmada RPM, adeegeena wuxuu diyaar u yahay inuu bilaabo. Tan waxaa lagu sameeyaa systemd, laakiin marka hore waxaad u baahan tahay inaad qorto qaabayn yar. Ugu yaraan, sheeg URI ee habsocod kasta. Saddex ayaa ku filan tusaale ahaan.

$ 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

Waxaa jira nuance xiiso leh halkan. Halkii laga sheegi lahaa dekedda borotokoolka binary, waxaan cadeynayaa dhammaan ciwaanka guud ee habka oo uu ku jiro magaca martida loo yahay. Tani waa lagama maarmaan si ay qanjidhada kooxdu u ogaadaan sida loola xidhiidho midba midka kale. Waa fikrad xun in 0.0.0.0 loo isticmaalo ciwaanka xayaysiis_uri; waa inuu noqdaa ciwaanka IP-ga dibadeed, ma aha xidhidhiyaha godka. La'aanteed, waxba ma shaqeyn doono, marka Cartridge si fudud kuugu oggolaan maayo inaad bilowdo noode leh advertise_uri khaldan.

Hadda oo qaabayntu diyaar tahay, waxaad bilaabi kartaa hababka. Maaddaama unugga habaysan ee caadiga ahi aanu ogolayn in wax ka badan hal nidaam la bilaabo, codsiyada ku jira Kartridge waxa ku rakibay waxa loogu yeedho. unugyo degdeg ah oo sidan u shaqeeya:

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

Qaabeynta, waxaan ku qeexnay dekedda HTTP ee Cartridge ay ugu adeegto interface interface - 8080. Aan tagno oo eegno:

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Waxaan aragnaa in inkasta oo hababku socdaan, haddana aan la habeynin. Kartuunku ilaa hadda ma garanayo cidda ay tahay in uu ku celceliyo oo keligiis go'aan kama gaadhi karo, markaa waxa ay sugaysaa ficilladayada. Laakiin ma hayno doorasho badan: nolosha koox cusub waxay ka bilaabataa qaabeynta qanjidhada koowaad. Ka dib waxaan ku dari doonaa kuwa kale kooxda, ku meelayn doonaa doorar, iyo markan daabulida waxaa loo qaadan karaa in si guul leh loo dhameeyay.

Aan ku shubno koob cabitaanka aad jeceshahay oo naso usbuuc shaqo dheer ka dib. Codsiga waa la isticmaali karaa.

Tarantool Cartridge: ku jeexjeexa dhabarka Lua ee saddex sadar

Natiijooyinka

Maxaa ka soo baxay? Isku day, isticmaal, ka tag jawaab celin, ku samee tigidhada Github.

tixraacyada

[1] Tarantool » 2.2 » Tixraac » Tixraaca Rocks » Module vsshard

[2] Sida aan u hirgelinay xudunta ganacsiga maalgashiga Alfa-Bank ee ku salaysan Tarantool

[3] Qaab dhismeedka biilasha jiilka cusub: isbeddelka u gudbida Tarantool

[4] Dabaasha - hab-raaca dhismaha kooxda

[5] GitHub - tarantool/kartridge-cli

[6] GitHub - tarantool/kartridge

Source: www.habr.com

Add a comment