Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

I le Mail.ru Group o loʻo i ai a matou Tarantool - o se 'auʻaunaga talosaga i Lua, lea e faʻaluaina foi o se faʻamaumauga (poʻo le isi itu?). E vave ma malulu, ae o le gafatia o le tasi server e le faʻatapulaʻaina. Ole fua fa'atatau e le'o se panacea, o lea o lo'o i ai i Tarantool meafaigaluega mo le fa'alava fa'alava - o le vshard module [1]. E faʻatagaina oe e faʻasalalau faʻamatalaga i luga o le tele o sapalai, ae e tatau ona e faʻaogaina e faʻapipiʻi ma faʻapipiʻi le pisinisi pisinisi.

Tala lelei: ua matou aoina ni ata tetele (fa'ata'ita'iga [2], [3]) ma faia se isi auivi e matua faafaigofie ai le fofo i lenei faafitauli.

Tarantool Cartridge ose fa'avae fou mo le atina'eina o faiga fa'asoa fa'alavelave. E faʻatagaina oe e taulaʻi i le tusiaina o faʻamatalaga pisinisi nai lo le foia o faʻafitauli faʻapitoa. I lalo ifo o le tipi o le a ou taʻuina atu ia te oe pe faʻafefea ona galue lenei faʻavae ma pe faʻapefea ona tusia auaunaga tufatufa faʻaaogaina.

O le a tonu le faafitauli?

E iai la matou tarantula, matou te maua vshard - o le a se isi mea e te manaʻo ai?

Muamua, o se mataupu o le faigofie. O le vshard configuration e fa'atulagaina e ala i laulau Lua. Mo le tufatufaina atu o le tele o faiga Tarantool e galue saʻo, e tatau ona tutusa le faʻatulagaina i soo se mea. E leai se tasi e mana'o e faia lenei mea ma le lima. O le mea lea, o ituaiga uma o tusitusiga, Ansible, ma faʻaogaina faiga e faʻaaogaina.

Cartridge lava ia e pulea le faatulagaga vshard, e faia lenei mea e faʻatatau i lona lava fa'asoa fa'asoa. O le mea moni o se faila YAML faigofie, o se kopi o loʻo teuina i faʻataʻitaʻiga Tarantool taʻitasi. O le faʻafaigofie o le faʻavaeina lava ia e mataʻituina lona faʻatulagaina ma faʻamautinoa e tutusa i soo se mea.

Lona lua, o se mea foi e faigofie. O le vshard configuration e leai se mea e fai i le atinaʻeina o pisinisi faʻapitoa ma naʻo le faʻalavelaveina o le tagata fai polokalame mai lana galuega. A tatou talanoaina le fausaga o se poloketi, e masani ona tatou talanoa e uiga i vaega taʻitasi ma a latou fegalegaleaiga. Ua vave tele le mafaufau e uiga i le taʻavaleina o se fuifui i 3 nofoaga autu o faʻamaumauga.

Na matou foia nei faafitauli i lea taimi ma lea taimi, ma i se taimi na mafai ai ona matou atiina ae se auala e faafaigofie ai le galue ma le talosaga i lona taamilosaga atoa o le olaga: foafoaga, atinaʻe, suʻega, CI / CD, tausiga.

Cartridge faʻalauiloa le manatu o se matafaioi mo taʻaloga taʻitasi taʻitasi. O matafaioi o se manatu e mafai ai e se tagata atiaʻe ona taulaʻi i le tusitusi code. O matafaioi uma o loʻo avanoa i le poloketi e mafai ona faʻatautaia i luga o le tasi Tarantool faʻataʻitaʻiga, ma o le a lava lea mo suʻega.

O mea taua ole Tarantool Cartridge:

  • tu'ufa'atasiga fa'atosina;
  • faʻalauteleina le faʻatinoga o le talosaga e faʻaaoga ai matafaioi fou;
  • fa'ata'ita'iga o talosaga mo le atina'e ma le fa'atinoina;
  • fausia-i totonu otometi sharding;
  • tu'ufa'atasia ma le fa'avae su'ega Luatest;
  • pulega fa'apipi'i fa'aoga WebUI ma API;
  • afifiina ma mea faigaluega fa'apipi'i.

Talofa, Lalolagi!

E le mafai ona ou faʻatali e faʻaalia le faʻavae lava ia, o lea o le a tatou tuʻua le tala e uiga i le fausaga mo se taimi mulimuli ane ma amata i se mea faigofie. Afai tatou te manatu o Tarantool lava ia ua uma ona faʻapipiʻiina, o mea uma e totoe o le faia

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

O nei tulafono e lua o le a faʻapipiʻi ai le faʻaogaina o laina faʻatonu ma faʻatagaina oe e fatuina lau talosaga muamua mai le mamanu:

$ cartridge create --name myapp

Ma o le mea lenei tatou te maua:

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/

Ole git repository lea ua saunia "Talofa, Lalolagi!" talosaga. Sei o tatou taumafai e tamoʻe i le taimi lava lena, i le faʻapipiʻiina muamua o faʻalagolago (e aofia ai le faʻavae lava ia):

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

O lea la, e tasi le matou node o loʻo tamoʻe mo le faʻaoga faʻapipiʻi i le lumanaʻi. E mafai e se tagata suʻesuʻe suʻesuʻe ona vave tatalaina le upega tafaʻilagi, faʻapipiʻi se fuifui o le tasi node ma le isumu ma fiafia i le taunuuga, ae ua vave tele ona fiafia. I le taimi nei, e le mafai e le talosaga ona faia se mea aoga, o lea o le a ou taʻu atu ia te oe e uiga i le faʻatulagaina mulimuli ane, ae o lenei ua oʻo i le taimi e tusi ai le code.

Atinae o Talosaga

Vaʻai faalemafaufau, o loʻo matou mamanuina se poloketi e tatau ona maua faʻamaumauga, faʻasaoina ma fausia se lipoti faʻatasi i le aso.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Tatou amata tusia se ata ma tuu vaega e tolu i luga: faitotoa, teuina ma le faasologa. O lo'o matou galulue atili i le fausaga. Talu ai matou te faʻaaogaina vshard e teu ai, matou te faʻaopoopo le vshard-router ma le vshard-storage i le polokalame. E le mafai e le faitotoʻa poʻo le faʻatulagaina saʻo ona maua le mea e teu ai, o le mea lena na faia ai.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Ole ata lea e le'o fa'atusaina tonu le mea o le a tatou fausia i totonu o le poloketi ona o vaega e foliga mai e le'o manino. E manaʻomia pea ona tatou vaʻavaʻai pe faʻafefea ona faʻaalia i luga o le Tarantool moni - seʻi o tatou faʻavasega a tatou vaega i le faagasologa.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

E itiiti se manatu i le tausia o le vshard-router ma le faitotoa i ni tulaga eseese. Aisea tatou te manaʻomia ai le toe faaseʻeina o le upega tafaʻilagi pe afai o le matafaioi lea a le router? E tatau ona fa'atautaia i totonu o le faiga lava e tasi. O lona uiga, o faitotoa uma ma vshard.router.cfg e amataina i le tasi faiga, ma tuu atu latou te fegalegaleai i le lotoifale.

I le tulaga o le mamanu, sa faigofie ona galue ma vaega e tolu, ae o aʻu, i le avea ai o se tagata e faia le atinaʻe, aʻo tusia le code, ou te le manaʻo e mafaufau e uiga i le faʻalauiloaina o le tolu taimi o Tarnatool. E tatau ona ou faia su'ega ma siaki pe sa'o sa'o sa'u tusia faitotoa. Pe atonu ou te manaʻo e faʻaalia se faʻaaliga i aʻu paaga. Aisea e tatau ai ona ou feagai ma le faigata o le faʻapipiʻiina o kopi e tolu? O le ala lea na fanau mai ai le manatu o matafaioi. O se matafaioi o se modula luash masani o lona taamilosaga o le olaga e pulea e Cartridge. I lenei faʻataʻitaʻiga e fa o latou - faitotoa, alalaupapa, teuina, faʻatulagaina. Atonu e tele atu i se isi poloketi. O matafaioi uma e mafai ona fa'atino i se fa'agasologa e tasi, ma o le a lava lea.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Ma pe a oʻo mai i le faʻapipiʻiina i le faʻatulagaina poʻo le gaosiga, ona matou tuʻuina atu lea o le Tarantool faʻagasologa o ana lava seti o matafaioi e faʻatatau i le gafatia o meafaigaluega:

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Pulea Topology

O fa'amatalaga e uiga i le mea o lo'o fa'atinoina e tatau ona teu i se mea. Ma o lenei "se mea" o le faʻasalalauga tufatufaina, lea ua uma ona ou taʻua i luga. O le mea pito sili ona taua o le topology cluster. O vaega nei e 3 toe fa'afoliga o faiga 5 Tarantool:

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Matou te le manaʻo e leiloa faʻamatalaga, o lea matou te faʻaogaina faʻamatalaga e uiga i faʻagaioiga faʻagaioiga ma le faʻaeteete. O lo'o fa'amauina e Cartridge le fa'atonuga e fa'aaoga ai le fa'aogaina o vaega e lua. O le taimi lava matou te mananaʻo ai e faʻafouina le faʻatulagaga, e siaki muamua o avanoa uma ma sauni e talia le faʻatulagaga fou. A maeʻa lenei, o le vaega lona lua e faʻaaoga le config. O lea, e tusa lava pe tasi le kopi e foliga mai e le maua mo sina taimi, e leai se mea leaga e tupu. O le faʻatulagaga o le a le faʻaaogaina ma o le a e vaʻai muamua i se mea sese.

E fa'apea fo'i i le vaega o le topology, o se fa'ailoga taua e pei o le ta'ita'i o vaega ta'itasi e fa'ailoa mai. E masani lava o le kopi lea o loʻo faʻamaumau. O isi mea e masani ona faitau-na'o, e ui lava atonu e iai ni tuusaunoaga. O nisi taimi e le fefefe le au atinaʻe totoa i feteʻenaʻiga ma e mafai ona tusia faʻamatalaga i le tele o faʻataʻitaʻiga tutusa, ae o loʻo i ai nisi gaioiga e, tusa lava po o le a, e le tatau ona faia faalua. Mo lenei mea o loʻo i ai se faʻailoga o se taʻitaʻi.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Soifua o matafaioi

Mo se matafaioi faʻapitoa e i ai i sea fausaga, e tatau i le faʻavae ona pulea i latou. E masani lava, o le pulea e tupu e aunoa ma le toe amataina o le Tarantool process. E 4 toe fo'i e fa'afoe ai matafaioi. Cartridge lava ia o le a taʻua i latou e faʻatatau i mea o loʻo tusia i lona faʻasalalauga tufatufaina, ma faʻaogaina ai le faʻatulagaga i matafaioi patino.

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

E tofu le matafaioi ma lana galuega init. E taʻua tasi pe a faʻamalosia le matafaioi poʻo le taimi e toe amata ai Tarantool. E faigofie iina, mo se faʻataʻitaʻiga, e amata ai le box.space.create, poʻo le faʻatulagaina e mafai ona faʻalauiloa nisi o filo i tua e faʻatino galuega i taimi faʻapitoa.

Tasi galuega init atonu e le lava. Cartridge e fa'atagaina ai matafaioi e fa'aoga lelei ai le fa'asoa fa'asoa e fa'aogaina e teu ai le topology. E mafai ona matou faʻaalia se vaega fou i le faʻatulagaga tutusa ma teuina se vaega o le faʻatulagaina pisinisi i totonu. I laʻu faʻataʻitaʻiga, e mafai ona avea lenei mea ma se faʻasologa o faʻamaumauga poʻo se faʻatulagaga faʻatulagaina mo le matafaioi faʻatulagaina.

Fa'aputuga vala'au validate_config и apply_config so'o se taimi e suia ai le fa'asoa fa'asoa. Pe a fa'aogaina se fa'atonuga e se fa'a-lua-vaega commit, e siaki e le fuifui pe ua sauni vaega ta'itasi e talia lenei fa'atulagaga fou ma, pe a mana'omia, lipoti atu se mea sese i le tagata fa'aoga. A malilie tagata uma o le faʻatulagaga e masani, ona fai lea o le apply_config.

E iai fo'i i matafaioi le auala stop, lea e mana'omia e fa'amama ai le galuega faatino. Afai tatou te fai atu e le o toe manaʻomia le faʻatulagaina i luga o lenei 'auʻaunaga, e mafai ona taofia na filo na amata mai ai init.

O matafaioi e mafai ona fegalegaleai le tasi ma le isi. Matou te masani i le tusiaina o telefoni i Lua, ae atonu e tupu e le o iai se matafaioi matou te manaʻomia. Ina ia faʻafaigofie telefoni i luga o fesoʻotaʻiga, matou te faʻaogaina le rpc (faʻaogaina mamao) module fesoasoani, lea e fausia i luga o le faavae o le netbox masani na fausia i totonu o Tarantool. E mafai ona aoga pe afai, mo se faʻataʻitaʻiga, o lou faitotoa e manaʻo e fesili saʻo i le faʻatulagaina e fai le galuega i le taimi nei, nai lo le faʻatali mo se aso.

O le isi itu taua o le fa'amautinoaina o le fa'apalepale masei. O lo'o fa'aogaina e Cartridge le protocol SWIM e mata'ituina ai le soifua maloloina [4]. I se faapuupuuga, o faiga e fesuiai "tala" ma le tasi ma le isi i luga o le UDP-o faiga taitasi e taʻu atu i ona tuaoi tala fou lata mai, ma latou tali mai. Afai faʻafuaseʻi e le oʻo mai le tali, e amata ona masalomia e Tarantool se mea e sese, ma a maeʻa sina taimi na te taulotoina ai le oti ma amata ona taʻu atu i tagata uma i lenei tala fou.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Faʻavae i luga o lenei faʻasalalauga, Cartridge faʻatulagaina le faʻaogaina otometi faʻaletonu. E mata'ituina e faiga ta'itasi lona si'osi'omaga, ma afai e fa'afuase'i ona tu'u le tali atu a le ta'ita'i, e mafai e le fa'atusa ona fa'atino lana matafaioi, ma fa'atulaga e Cartridge ia matafaioi fa'atino e tusa ai.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

E tatau ona e faʻaeteete iinei, aua o le fesuiaʻi soo i tua ma luma e mafai ona mafua ai feteʻenaʻiga o faʻamatalaga i le taimi o le toe faia. Ioe, e le tatau ona e fa'agaoioia otometi fa'alilolilo fa'afuase'i. E tatau ona tatou malamalama lelei i le mea o loʻo tupu ma ia mautinoa o le a le malepe le toe faia pe a uma ona toe faʻafoʻisia le taʻitaʻi ma toe faʻafoʻi atu le pale ia te ia.

Mai nei mea uma, atonu e te maua le lagona o matafaioi e tutusa ma microservices. I se isi itu, e naʻo latou, naʻo le avea ma modules i totonu o le Tarantool process. Ae e iai foʻi le tele o eseesega faʻavae. Muamua, o matafaioi uma o le poloketi e tatau ona ola i le fa'avae code tutusa. Ma o faiga uma a Tarantool e tatau ona faʻalauiloa mai le faʻamaufaʻailoga tutusa, ina ia leai ni mea e ofo ai pe a tatou taumafai e amata le faʻatulagaina, ae e le o iai. E le gata i lea, e le tatau ona e faʻatagaina eseesega i faʻasologa o tulafono, aua o le amio a le faiga i se tulaga faʻapea e matua faigata lava ona vaʻai ma debug.

E le pei o Docker, e le mafai ona tatou faia se matafaioi "ata", ave i se isi masini ma tamoe i ai. O a matou matafaioi e le o tu'ufua e pei o koneteina Docker. E le gata i lea, e le mafai ona tatou faia ni matafaioi tutusa se lua i se tulaga e tasi. O se matafaioi e iai pe leai foi; Ma lona tolu, o matafaioi e tatau ona tutusa i totonu o le vaega atoa o le kopi, aua a leai o le a faʻavalevalea - o faʻamaumauga e tutusa, ae o le faʻatulagaga e ese.

Mea faigaluega fa'apipi'i

Na ou folafola e faʻaalia le auala e fesoasoani ai Cartridge i le faʻaogaina o talosaga. Ina ia faafaigofie le olaga mo isi, o le auivi o loʻo faʻapipiʻiina afifi RPM:

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

O le afifi faʻapipiʻiina e toetoe lava o mea uma e te manaʻomia: o le talosaga ma faʻalagolago faʻapipiʻi. O le a taunuu foi Tarantool i luga o le 'auʻaunaga o se faʻalagolago i le afifi RPM, ma ua sauni la matou auaunaga e faʻalauiloa. E faia lenei mea e ala i le systemd, ae muamua e manaʻomia ona e tusia sina faʻatulagaga. A itiiti ifo, faʻamaonia le URI o gaioiga taʻitasi. Ua lava le tolu mo se faataitaiga.

$ 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

O loʻo i ai se faʻaaliga manaia iinei. Nai lo le faʻamaonia naʻo le binary protocol port, matou te faʻamaonia le tuatusi lautele o le faagasologa e aofia ai le igoa talimalo. E mana'omia lea mea ina ia iloa ai e nodes fuifui pe fa'afefea ona fa'afeso'ota'i le tasi i le isi. E leaga le fa'aogaina o le 0.0.0.0 e fai ma advertise_uri address e tatau ona avea ma tuatusi IP fafo, ae le o se socket bind A aunoa ma lea mea, e leai se mea e aoga, o lea e le mafai ai e Cartridge ona faʻatagaina oe e faʻalauiloa se node e sese le advertise_uri.

I le taimi nei ua saunia le faʻatulagaga, e mafai ona e amata faʻagasologa. Talu ai e le fa'atagaina e se iunite masani le sili atu ma le tasi le faiga e amata ai, o talosaga i luga o le Cartridge e fa'apipi'iina e le mea e ta'ua. iunite faʻapitoa e galue e pei o lenei:

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

I le faʻatulagaga, matou te faʻamaonia le HTTP port lea e faʻaogaina ai e Cartridge le upega tafaʻilagi - 8080. Sei o tatou alu i ai ma vaʻai:

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

Matou te vaʻai e ui lava o loʻo faʻagasolo faiga, ae e leʻi faʻatulagaina. E le'i iloa e le kesi po'o ai e tatau ona toe fai ma ai ma e le mafai ona faia e ia lava se filifiliga, o lea o lo'o fa'atali mo a tatou gaioiga. Ae e le tele a matou filifiliga: o le olaga o se fuifui fou e amata i le faʻatulagaina o le node muamua. Ona matou faʻaopoopoina lea o isi i le fuifui, tuʻuina atu ia i latou matafaioi, ma o le taimi lea e mafai ai ona faʻataunuʻuina le faʻapipiʻiina.

Tatou sasaa se ipu inu e te fiafia i ai ma malolo pe a uma se vaiaso faigaluega umi. E mafai ona faʻaaogaina le talosaga.

Tarantool Cartridge: fa'asoa se lua pito i tua i laina e tolu

O taunuʻuga

O a i'uga? Faʻataʻitaʻi, faʻaaoga, tuʻu faʻamatalaga, fatuina tiketi ile Github.

mau

[1] Tarantool » 2.2 » Faʻamatalaga » Faʻamatalaga papa » Module vshard

[2] Fa'afefea ona matou fa'atinoina le autu o pisinisi a le Alfa-Bank e fa'avae i luga o Tarantool

[3] Augatupulaga fou fa'ailoga tau pili: suiga ma le suiga i Tarantool

[4] SWIM - fa'asologa o le fauina o fuifui

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - tarantool/cartridge

puna: www.habr.com

Faaopoopo i ai se faamatalaga