Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

I te Roopu Mail.ru kei a matou a Tarantool - he tūmau tono tenei i Lua, ka ruarua ano hoki hei putunga raraunga (he rereke ranei?). He tere me te hauhautanga, engari ko nga kaha o te tūmau kotahi kaore i te mutunga. Ko te whakahiato poutū ehara i te mea rongoa, no reira he taputapu a Tarantool mo te whakatauira whakapae - te kōwae vshard [1]. Ka taea e koe te tarai i nga raraunga puta noa i nga kaitoro maha, engari me tarai koe ki te whakarite me te taapiri i te arorau pakihi.

He rongo pai: kua kohia e matou etahi whakaahua nui (hei tauira [2], [3]) me te hanga i tetahi atu anga ka tino ngawari te otinga ki tenei raru.

Kaata Tarantool he anga hou mo te whakawhanake i nga punaha toha uaua. Ka taea e koe te aro ki te tuhi i te arorau pakihi hei utu mo te whakaoti rapanga hanganga. I raro i te tapahi ka korero atu ahau ki a koe me pehea te mahi o tenei anga me te tuhi i nga ratonga tohatoha ma te whakamahi.

He aha te tino raruraru?

He tarantula ta matou, he vshard - he aha atu taau e hiahia ana?

Tuatahi, he mea ngawari. Ko te whirihoranga vshard ka whirihorahia ma nga ripanga Lua. Kia tika te mahi a te punaha tohatoha o nga tukanga Tarantool maha, me rite te whirihoranga ki nga waahi katoa. Kaore tetahi e hiahia ana ki te mahi a-ringa. Na reira, ka whakamahia nga momo tuhinga katoa, Ansible, me nga punaha tuku.

Ko te Cartridge ake te whakahaere i te whirihoranga vshard, ka mahia e ia i runga i tana ake whirihoranga toha. Ko te tikanga he konae YAML ngawari, he kape kei roto i ia tauira Tarantool. Ko te whakangwari ake ko te angamahi tonu e aro turuki ana i tana whirihoranga me te whakarite kia rite tonu ki nga waahi katoa.

Tuarua, he mea pai ano. Ko te whirihoranga vshard kaore he mea e pa ana ki te whakawhanaketanga o te arorau pakihi me te whakararu noa i te kaiwhakaputa i tana mahi. Ina matapakihia te hoahoanga o tetahi kaupapa, ka korerohia e matou nga waahanga takitahi me o raatau taunekeneke. He moata rawa ki te whakaaro mo te huri i te roopu ki nga pokapū raraunga 3.

I whakaotihia e matou enei raruraru i nga wa katoa, a i etahi wa ka taea e matou te whakawhanake i tetahi huarahi e ngawari ana te mahi me te tono puta noa i tona huringa ora katoa: te hanga, te whakawhanaketanga, te whakamatautau, te CI / CD, te tiaki.

Ka whakaatu a Cartridge i te ariā o te mahi mo ia tukanga Tarantool. Ko nga mahi he ariā e taea ai e te kaiwhakawhanake te aro ki te tuhi waehere. Ko nga mahi katoa e waatea ana i roto i te kaupapa ka taea te whakahaere i runga i tetahi tauira Tarantool, ka ranea tenei mo nga whakamatautau.

Ko nga ahuatanga matua o Tarantool Cartridge:

  • te whakahiato huinga aunoa;
  • te whakawhānui ake i te mahi o te tono ma te whakamahi i nga mahi hou;
  • tauira tono mo te whanaketanga me te whakatakotoranga;
  • hanga-i roto i te tiritiri aunoa;
  • te whakaurunga ki te anga whakamatautau a Luatest;
  • te whakahaere huinga ma te whakamahi i te WebUI me te API;
  • taputapu whakakakahu me te horahanga.

Kia ora, World!

Kaore e taea e au te tatari ki te whakaatu i te anga ake, na ka waiho e matou te korero mo te hoahoanga mo muri mai ka timata ki tetahi mea ngawari. Mena ka whakaaro tatou kua whakauruhia a Tarantool, ko nga mea katoa e toe ana ko te mahi

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

Ko enei whakahau e rua ka whakauru i nga taputapu raina whakahau ka taea e koe te hanga i to tono tuatahi mai i te tauira:

$ cartridge create --name myapp

A koinei te mea ka whiwhi tatou:

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/

He putunga git tenei me te "Kia ora, Ao!" tono. Me ngana ki te whakahaere i tenei wa tonu, kua oti te whakauru i nga whakawhirinakitanga (tae atu ki te angamahi ake):

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

No reira, kotahi to tatou node e rere ana mo te tono tiritiri a meake nei. Ka taea e te tangata reimana rapu te whakatuwhera tonu i te atanga tukutuku, te whirihora i te kahui o tetahi node ki te kiore me te pai ki te hua, engari he moata rawa ki te koa. I tenei wa, kaore e taea e te tono te mahi i tetahi mea whai hua, na ka korero atu ahau ki a koe mo te tuku i muri mai, engari inaianei kua tae ki te wa ki te tuhi i te waehere.

Whanaketanga Taupānga

Whakaarohia, kei te hoahoa matou i tetahi kaupapa me whiwhi raraunga, tiakina me te hanga purongo kotahi ia ra.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Ka timata taatau ki te tuhi hoahoa me te whakanoho kia toru nga waahanga ki runga: te kuaha, te rokiroki me te raarangi. Kei te mahi tonu matou mo te hoahoanga. I te mea ka whakamahia e matou te vshard hei rokiroki, ka taapirihia e matou te vshard-router me te vshard-storage ki te kaupapa. Karekau te keeti, te kaiwhakariterite ranei e uru tika ki te rokiroki;

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Kare tonu tenei hoahoa i te whakaatu i nga mea ka mahia e matou i roto i te kaupapa na te mea he waitara nga waahanga. Me kite tonu tatou me pehea e tukuna ai tenei ki runga i te Tarantool tuturu - me whakarōpū i a tatou waahanga ma te mahi.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

He iti noa te waahi ki te pupuri i te vshard-router me te kuwaha i runga i nga waahanga motuhake. He aha te take me ngaru ano tatou i te whatunga mena koinei te kawenga o te pouara? Me whakahaere i roto i te tukanga kotahi. Arā, ko te keeti me te vshard.router.cfg ka arawhiti i roto i te tukanga kotahi, ka waiho kia mahi tahi i te rohe.

I te waahi hoahoa, he pai ki te mahi me nga waahanga e toru, engari ko ahau, hei kaiwhakawhanake, i te wa e tuhi ana i te waehere, kaore au e pai ki te whakaaro mo te whakarewa i nga waahanga e toru o Tarnatool. Me whakahaere au i nga whakamatautau me te tirotiro i te tika taku tuhi kuaha. Kei te pirangi ranei au ki te whakaatu i tetahi ahuatanga ki aku hoa mahi. He aha ahau ka raru ai ki te tuku kape e toru? Koinei te ahua i whanau ai te kaupapa o nga mahi. Ko te mahi he waahanga luash auau e whakahaeretia ana e te Cartridge te huringa ora. I roto i tenei tauira e wha o ratou - kuaha, pouara, rokiroki, whakahōtaka. He nui ake pea kei tetahi atu kaupapa. Ka taea te whakahaere i nga mahi katoa i roto i te mahi kotahi, ka nui tenei.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

A, ka tae mai ki te tuku ki te whakaturanga, ki te whakaputa ranei, katahi ka tohua e maatau nga mahi a Tarantool ki a raatau ake waahanga mahi i runga i te kaha o te taputapu:

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Te whakahaere topology

Ko nga korero e pa ana ki nga waahi e whakahaerehia ana me penapena ki tetahi waahi. A ko tenei "kei hea" ko te whirihoranga tohatoha, kua whakahuahia e ahau i runga ake nei. Ko te mea nui ko te topology cluster. Anei nga roopu tukurua e 3 o nga tukanga Tarantool e 5:

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Kare matou e hiahia ki te ngaro raraunga, no reira ka tupato matou ki nga korero mo te whakahaere i nga tukanga. Ka mau te kaata ki te whirihoranga ma te whakamahi i nga waahanga e rua. Ina hiahia ana matou ki te whakahou i te whirihoranga, ka tirohia i te tuatahi kei te waatea nga waahi katoa me te reri ki te whakaae ki te whirihoranga hou. I muri i tenei, ko te waahanga tuarua ka pa ki te whirihora. No reira, ahakoa ka ngaro tetahi kape mo te wa poto, kaore he kino e pa. Ko te whirihoranga ka kore e whakamahia, ka kite koe i tetahi hapa i mua.

I roto ano i te waahanga topology, ka tohuhia he tawhā nui hei kaiarahi mo ia roopu tukurua. Ko te tikanga ko tenei te kape e rekotia ana. Ko te toenga he panui-anake i te nuinga o te waa, ahakoa tera pea he rereke. I etahi wa kaore nga kaiwhakawhanake maia e mataku ki nga tautohetohe ka taea te tuhi raraunga ki nga tauira maha i roto i te whakarara, engari tera ano etahi mahi, ahakoa he aha, kaua e mahia e rua. Mo tenei he tohu o te rangatira.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Te oranga o nga mahi

Kia noho ai tetahi waahi ki roto i taua hoahoanga, me whakahaere e te anga. Ko te tikanga, ka puta te mana whakahaere me te kore e whakaara ano i te tukanga Tarantool. E 4 nga waea hoki hei whakahaere i nga mahi. Ka karangahia e te Cartridge i runga i nga mea kua tuhia i roto i tana whirihoranga tohatoha, na reira ka tono te whirihoranga ki nga mahi motuhake.

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

He mahi kei ia mahi init. Ka karangahia i te wa e whakahohea ana te mahi, i te wa ranei ka timata ano a Tarantool. He watea ki reira, hei tauira, ki te arawhiti i te box.space.create, ka taea ranei e te kaiwhakariterite te whakarewa i etahi muka papamuri hei mahi i etahi wa.

Kotahi te mahi init e kore pea e ranea. Ka taea e te Cartridge nga mahi ki te tango painga i te whirihoranga tohatoha e whakamahia ana hei penapena i te topology. Ka taea e matou te whakaatu i tetahi waahanga hou i roto i te whirihoranga kotahi me te penapena i tetahi waahanga o te whirihoranga pakihi kei roto. I roto i taku tauira, he aronuinga raraunga tenei, he tautuhinga tabula ranei mo te mahi kaiwhakarite.

Karanga waea validate_config и apply_config ia wa ka huri te whirihoranga toha. Ina tukuna he whirihoranga e te mahi rua-waahanga, ka tirohia e te roopu kua reri ia tuunga ki te whakaae ki tenei whirihoranga hou, a, ki te tika, ka ripoata he hapa ki te kaiwhakamahi. Ina whakaae te katoa he mea noa te whirihoranga, katahi ka te apply_config.

He tikanga ano nga mahi stop, e hiahiatia ana hei horoi i te putanga o te mahi. Mena ka kii tatou kua kore e hiahiatia te kaihōtaka i runga i tenei tūmau, ka taea e ia te aukati i nga muka i timata ai init.

Ka taea e nga mahi te taunekeneke tetahi ki tetahi. Kua waia matou ki te tuhi waea mahi ki Lua, engari tera pea karekau he mahi e hiahiatia ana e tetahi tukanga. Hei whakahaere i nga waea i runga i te whatunga, ka whakamahia e matou te rpc (karanga mahi mamao) waahanga awhina, i hangaia i runga i te turanga o te pouaka kupenga paerewa i hangaia ki Tarantool. Ka whai hua tenei mena, hei tauira, kei te pirangi to kuaha ki te tono tika ki te kaiwhakariterite kia mahia te mahi i naianei, kaua ki te tatari mo te ra.

Ko tetahi atu mea nui ko te whakarite i te aukati i nga hapa. Ka whakamahia e te Cartridge te kawa SWIM hei aroturuki i te hauora [4]. I roto i te poto, ka whakawhiti nga tukanga i nga "rongo" ki a raatau mo te UDP-ka korero ia tukanga ki ona hoa tata nga korero hou, a ka whakautu ratou. Mena ka kore e tae mai te whakautu, ka timata a Tarantool ki te whakapae he he tetahi mea, a, i muri i etahi wa ka korerohia e ia te mate ka timata ki te korero ki nga tangata katoa mo tenei korero.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

I runga i tenei kawa, ka whakarite a Cartridge i te tukatuka rahunga aunoa. Ka aro turuki ia tukanga i tona taiao, a, ki te mutu ohorere te kaihautu i te whakautu, ka taea e te tauira te tango i tana mahi, ka whirihora e Cartridge nga mahi whakahaere i runga ano.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Me tūpato koe i konei, na te mea ko te huri whakamuri me te whakamuri ka puta he taupatupatu raraunga i te wa e tukurua ana. Ae ra, kaua e taea e koe te whakakore aunoa i te ohorere. Me tino marama tatou ki nga mea e pa ana, me te mohio kei pakaru te tukurua i muri i te whakahokinga o te rangatira ka whakahokia te karauna ki a ia.

Mai i enei mea katoa, ka mohio koe he rite nga mahi ki nga ratonga miihini. I roto i te tikanga, he tika noa iho, he waahanga noa i roto i nga tukanga Tarantool. Engari he maha ano nga rereketanga taketake. Tuatahi, me noho nga mahi kaupapa katoa ki te turanga waehere kotahi. A me whakarewahia nga tikanga katoa a Tarantool mai i te turanga waehere kotahi, kia kore ai he ohorere penei i era ka ngana ana tatou ki te arataki i te raarangi, engari karekau noa. Ano hoki, kaua e whakaaehia nga rereketanga o nga putanga waehere, na te mea he tino uaua ki te matapae me te patuiro te whanonga o te punaha i roto i taua ahuatanga.

Kaore i rite ki a Docker, e kore e taea e tatou te tango noa i tetahi "ahua", kawea ki tetahi atu miihini ka whakahaere ki reira. Ko o maatau mahi kaore e rite ki nga ipu Docker. Ano, e kore e taea e taatau te whakahaere i nga mahi e rua mo te waa kotahi. He mahi kei te noho, kaore ranei; Tuatoru, me rite nga mahi i roto i te roopu tukurua katoa, na te mea karekau he poauau - he rite nga raraunga, engari he rereke te whirihoranga.

Nga taputapu tuku

I oati ahau ki te whakaatu me pehea te awhina a Cartridge ki te tuku tono. Kia pai ake ai te oranga mo etahi atu, ka kohia e te anga mookai RPM:

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

Kei roto i te kete kua whakauruhia nga mea katoa e hiahia ana koe: ko te tono me nga whakawhirinaki kua whakauruhia. Ka tae ano a Tarantool ki runga i te tūmau hei whakawhirinakitanga o te kete RPM, a kua rite ta maatau ratonga ki te whakarewa. Ka mahia tenei ma te systemd, engari ko te tuatahi me tuhi koe i tetahi whirihoranga iti. I te iti rawa, tohua te URI o ia tukanga. Ka nui te toru hei tauira.

$ 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

He ahua whakamere kei konei. Engari ki te whakapūtā noa i te tauranga kawa rua, ka whakapūtā mātou i te wāhitau tūmatanui katoa o te hātepe tae atu ki te ingoa kaihautū. He mea tika tenei kia mohio ai nga kopuku kahui ki te hono tetahi ki tetahi. He kino te whakaaro ki te whakamahi i te 0.0.0.0 hei wahitau advertise_uri me waiho he wahitau IP o waho, ehara i te herea turanga. Ki te kore, karekau he mahi, no reira karekau a Cartridge e tuku i a koe ki te whakarewa i tetahi node me te panui_uri he.

Na kua rite te whirihoranga, ka taea e koe te timata i nga tukanga. I te mea kaore e whakaaetia e te waeine systemd kia neke atu i te kotahi te tukanga ki te timata, ka whakauruhia nga tono i runga i te Cartridge e te hunga e kiia nei. nga waeine inamata e mahi penei ana:

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

I roto i te whirihoranga, i tohua e matou te tauranga HTTP e mahi ana a Cartridge ki te atanga tukutuku - 8080. Me haere ki reira ka titiro:

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Ka kite tatou ahakoa kei te haere nga mahi, kaore ano kia whirihorahia. Ko te kaata kaore ano kia mohio ko wai te mea hei whakahoki mai me wai kaore e taea te whakatau i a ia ano, no reira kei te tatari mo a maatau mahi. Engari kaore he mea nui ki a maatau: ko te oranga o te kahui hou ka tiimata me te whirihoranga o te node tuatahi. Na ka taapirihia e matou etahi atu ki te roopu, ka tautapa ki a raatau nga mahi, a i tenei wa ka taea te whakaaro kua oti pai te tuku.

Me riringi he karaihe o to inu tino pai ka whakataa i muri i te wiki mahi roa. Ka taea te whakamahi i te tono.

Tarantool Cartridge: tiritiri i te tuara o Lua ki nga rarangi e toru

Ngā putanga

He aha nga hua? Whakamātauria, whakamahia, waiho urupare, hanga tikiti ki Github.

tohutoro

[1] Tarantool » 2.2 » Tohutoro » Tohutoro toka » Module vshard

[2] Me pehea te whakatinana i te kaupapa matua o te pakihi haumi a Alfa-Bank i runga i a Tarantool

[3] Hangahanga nama reanga hou: huringa me te whakawhiti ki Tarantool

[4] SWIM - kawa hanga tautau

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - tarantool/cartridge

Source: will.com

Tāpiri i te kōrero