á Mail.ru áĄáľá ááľáĽ Tarantool á áá - áá
á áá ááľáĽ áŤá á¨áá°áá áŞáŤ á áááá áá ᣠáĽáąá áĽáá° áłáłá¤á (áááá á á°ááŤáá?) á áĽáĽá áá¨ááŤáᢠááŁá áĽá á áŞá ááᣠáá á¨á ááľ á áááá á á
á á ááá áŤáá°áá°á á áá°ááᢠá ááŁá ááŹáľá áĽáá˛á ááᲠá áá°ááᣠáľááá
Tarantool áá ááľá ááŹáľ ááŁáŞáŤáá˝ á ááľ - ᨠvshard ááá
áááŤá ááᥠá ááłááľ áľááá
áĽááśá˝á á°áĽáľá áá (áááłááĄ
á áľááá á˝áአáááľá áá?
áłáŤááąá á áá ᣠvshard á áá - á¨áá á¨á áá áá ááááá?
á ááááŞáŤ, á¨áážáľ ááłá áá. á¨vshard áá á á¨áááá¨á á áá á°áá á¨áŚá˝ á áŠá ááᢠá¨á ááŤáł Tarantool áá°áśá˝ á¨á°á¨ááá áľáááľ á áľááá áĽáá˛á°áŤ, á áááአá ááá áŚáł á ááľ á áááľ ááá á áá áľ. ááá áá á á áĽá ááľá¨á á áááááᢠáľááá , ááá ááááľ áľááŞááśá˝, ááťá á¨áá˝á áĽá á¨áá°ááŤáľ áľáááśá˝ áĽá á áá áááá.
áŤááľáŞá áŤáą á¨vshard áá á¨áľá áŤáľá°áłáľáŤá ᣠáá áá á áĽáą áá á¨á°áá á¨á° ááᢠá¨áŤáą á¨á°á°áŤá¨ áá á. áĽáą á áá á¨áą ááá ᨠYAML ááá ááᣠá áá á áĽáŤááłááą á¨Tarantool ááłá ááľáĽ áá¨ááťáᢠáá áá ááá áŤáą á ááááŠá áá¨áłá°áá áĽá á ááá áŚáł á°ááłáłá áááá áŤá¨áááŁá.
á ááá°á á°á¨á, áĽáá°áá á¨áááťá¸áľ ááłá áá. ᨠvsshard áá á¨áľ á¨á˘áááľ á áááᎠáĽáľááľ áá ááá áááááľ á¨ááá áĽá ááŽááŤááá á¨áľáŤá áĽáť áŤá°áá ááᢠáľá á ááľ ááŽáááľ á ááá´áá¸á áľáááŤáᣠáĽá áá áľá ááá°áŁá á áŤááľ áĽá ááľá°ááĽá áĽáááááŤááᢠáááľá°á áá° 3 á¨ááἠááá¨áá˝ áľááááá ááá°áĽ á áŁá áá ááá˘
áĽááá á á˝ááŽá˝ á°ááá á°áááá ááľá°ááᣠáĽá á á ááľ áá áľ á¨áá°áá áŞáŤá áá á á á ááá á¨á áááľ áá°áą ááľáĽ ááľáŤáľá á¨ááŤááá áá´á áááááľ á˝ááá-ááĽá¨áľ ᣠááᾠᣠáá¨áŤ ᣠCI/CD ᣠáĽááá˘
Cartridge ááĽáŤááłááą Tarantool áá°áľ áá á˝áá°-ááłáĽ áŤáľá°áááá. áááá˝ ááᢠáŽáľ á ááťá áá áĽáá˛áŤá°áŠá á¨ááŤáľá˝á á˝áá°-ááłáĽ ááᢠá ááŽáááą ááľáĽ á¨ááá ááá áááá˝ á á ááľ Tarantool ááłá áá áá°áŠ áá˝áá, áĽá áá ááá°ááá˝ á á áááá.
á¨Tarantool Cartridge ááá áŁá áŞáá˝
- á ááśáá˛á áááľá°á áŚááŹáľáľáŤ;
- á áłá˛áľ áááá˝á á áá áá á¨áá°áá áŞáŤáá á°ááŁáŤáááľ ááľáááľ;
- ááááľ áĽá ááá°ááŤáľ á¨áá°áá áŞáŤ á áĽááľ;
- á áĽáŽ á¨á°á°áŤ á ááśáá˛á áťáá˛áá;
- ᨠLuaest á¨áá¨áŤ áááá áá áá á°áľ;
- WebUI áĽá API á áá áá á¨áááľá°á á áľá°áłá°á;
- áá¸á áĽá áá°ááŞáŤ ááłáŞáŤáá˝.
á°áá ááá!
ááááá áĽáŤáą áááłá¨áľ áá á á á áá˝áá, áľááá áľá áľá-á ááá áłáŞáá áá áá áá áĽáá°áááá áĽá ááá á áá ááá áĽááááŤáá. Tarantool áŤáą á áľááľá áĽáá°á°áŤá á¨áá°áľá, á¨áá¨á áá ááľá¨á áĽáť áá
$ tarantoolctl rocks install cartridge-cli
$ export PATH=$PWD/.rocks/bin/:$PATH
áĽááá áááľ áľáááá˝ á¨áľáĽáá ááľáá áááááŤáá˝á áááá áĽá á¨ááááŞáŤ áá°áá áŞáŤáá á¨á áĽááľ áĽáá˛ááĽáŠ áŤáľá˝áááłááĄ
$ cartridge create --name myapp
á¨áááááá áá¸á áááĄ-
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/
áá ááá á¨áá âááᣠááá!â áŤáá á¨git áá¨ááť ááᢠáááá¨áť. á¨áá áá°á áĽááášá (áááááá á¨ááŽ) á¨áŤáá á áá áá˛áŤáá áááľáŹáľ áĽáááááĄ-
$ tarantoolctl rocks make
$ ./init.lua --http-port 8080
áľááá ᣠááá°ááľ á¨á°á áŁá á° áá°áá áŞáŤ á¨áááľ á ááľ á áá á ááᢠá áŤá á°áŤ á°á áá˛áŤáá á¨áľá¨-áá˝ á áááášá ááááľáŁá¨á ááľ ááľááá ááááľá á ááłááľ áááá áĽá á áá¤áą áá°á°áľ áá˝áááŁááá áá ááá°á°áľ á áŁá áá ááᢠáĽáľáŤáá áľá¨áľ, á áááŹá˝á ááá á áá ááá ááľá¨á á áá˝áá, áľááá áľá áá°ááŤáľ á áá áĽáááŤá˝ááá, á áá áá áŽáľ áááťá ááá áá.
á¨áá°áá áŞáŤ áááľ
áĽáľá˛ á áľáĄáľáŁ áá¨á ááá áᣠááľááἠáĽá á áá á ááľ áá áŞáááľ ááááŁáľ áŤáá áľá ááŽáááľ áĽá¨áá¨á˝á ááá˘
ááľá ááłá áĽááááŤáá áĽá á áĽáą áá áśáľáľ á áŤááľá áĽááľáááŁáá-ááľáá ᣠáá¨ááť áĽá á¨áá á°ááłá˘ á á
ááá áá á¨á áá áĽá¨á°áŤá ááᢠvsshard áĽáá° áá¨ááť áľáááá áá á áĽá
áą áá vshard-router áĽá vshard-storage áĽáá¨ááŤáá ᢠááá˘áŤá ááá áááááĽá á ááŞá á ááĽáł áá° áá¨ááťá á áá°ááąáᤠáŤáá°á áá፠áá á¨á°áá á¨ááľá˘
áá
ááľá á ááá á ááŽáááą ááľáĽ á¨áááááŁáá á áľááá á ááááá ááááŤáąá ááááš á¨áá
áľááááľáᢠá ááá áá
áĽáá´áľ á áĽááá°áá Tarantool áá áĽáá°áá°á¨á áá¨áľ á ááĽá - ááááťá˝áá á áá°áľ áĽáá§áľááá˘
vshard-router áĽá ááľááá á á°áአá ááŁááá˝ ááá¨áľ áľáá˝ áááł á¨áááᢠáá
ááľááá á¨áŤáá°áŠ áááááľ á¨áá áĽáá°áá á ááłá¨ áá¨áĄá áá°áľ ááá áŤáľááááá? á á°ááłáłá áá°áľ ááľáĽ áá¨ááá á ááŁá¸á. áŤá áááľ áááąá ááľáá áĽá vshard.router.cfg á¨á°áááŠáľ á á ááľ áá°áľ áá áĽá á á áŤáŁá˘á áĽáá˛ááá áŤáľááá˘
á ááľá á°á¨á, á¨áśáľáľ á áŤááľ áá áááľáŤáľ á ááş áá á, ááá áá áĽá áĽáá° ááá˘, áŽáąá á áá˝áá áľ áá, ᨠTarnatool áśáľáľ á ááŁááá˝á ááááá áá°áĽ á ááááá. áá°ááá˝á ááŤááľ á ááĽá áĽá ááá˘áŤáá á áľááá áĽáá°áťáአáá¨ááἠá ááĽáᢠááá ááááŁáľ á ááľ áŁá áŞá ááĽáŤ áŁáá°á¨áŚáź ááłá¨áľ áĽáááááᢠáśáľáľ á ááá˝á á áá°ááŤáľ á˝áá ááľáĽ ááá ááá á ááĽá? áááá˝ á˝áá°-ááłáĽ á¨á°ááá°á á áá ááááľ áá. áá á¨á áááľ áá°áą á áŤááľáŞá á¨áá°áłá°á áá°á á á¨áá˝ ááá ááᢠá áá ááłá ááľáĽ á áŤáą á á - ááľáá, áŤáá°á, áá¨ááť, á¨áá á°ááł. á áá ááŽáááľ ááľáĽ á°á¨á᪠ááá áá˝áá. ááá áááá˝ á á ááľ áá°áľ ááľáĽ áá¨ááá áá˝áá, áĽá áá á á áááá.
áĽá áá° ááá
áľ ááá áááľ áá°ááŤáľá á á°ááá¨á° áĽáŤááłááąá ᨠTarantool áá°áľ á áááľáá á˝ááłáá˝ áá á áááľá¨áľ á¨áŤáąá áááá˝ áĽáááľáŁáá-
áśááá á áľá°áłá°á
á¨áľáááš áááá˝ á¨áľ áĽáá°áááą áá¨á á¨áá áŚáł áááἠá áá áľá˘ áĽá áá "á ááľ áŚáł" á¨á°á¨áááá áá á áá, áá°á á˛á á¨áá á¨á ááľáŠáľ. áľá áĽáą á áŁá á áľáááá ááá áááľá°á áśááá ááᢠᨠ3 Tarantool áá°áśá˝ 5 á¨ááŁááľ áĄáľáá˝ áĽáááĄ-
ááἠááŁáľ á áááááᣠáľááá
áľááá°áľ áá°áśá˝ áá¨áá á áĽááá áĽáááááᢠCartridge áŁá áááľ-á°á¨á ááá áááľá á áá áá á ááááŠá áá¨áłá°ááᢠá áá´ á ááááŠá áááá á¨áááá á ááááŞáŤ ááá áááłáá˝ áááŤá¸áá áĽá á á˛áąá áá
á áááá á ááá áááá¸áá áŤá¨áááŁáᢠá¨áá
á áá, ááá°áá á°á¨á áá
áŠá áá°áá áŤá. áľááá
, á ááľ á
á áááá á¨áááá á˘ááá, ááá ááĽá ááá á áá¨á°áľá. áá
አá ááá á áá°áá áá áĽá á áľááľáá áľá
á°áľ áŤáŤá.
áĽáá˛áá á áśááá ááá ááľáĽ áĽáá° áĽáŤááłááą á¨ááŁááľ áĄáľá á᪠áĽáá°áá áŤá á áľááá áá¤áľ áá áááᢠáĽááá áá áá á¨áááłá á á áá. á¨á°ááŠáľ áĽá áá á°ááŁá˘-áĽáť áá¸áᣠááá áĽááłá áአáááłáá˝ ááአáá˝ááᢠá ááłááľ áá á°áá ááá˘áá˝ áááśá˝á á áááŠá áĽá áááĽá áá° áĽá á ááá˝ á áľáአááťá áá˝áá ᣠáá ááá á˘áá ᣠáááľ áá áá¨ááá á¨ááááŁá¸á á ááłááľ áľáŤáá˝ á áᢠááá á á¨á᪠ááááľ á á.
áááá˝ ááááľ
á áĽáá°áá ááááľ á ááá´áá¸á ááľáĽ á¨áá áá áĽáá˛áá ᣠáááá á áá ááááľ áĽááąá ááľá°áłá°á á áá áľá˘ á á°ááĽáŽ ᣠááĽáĽá á¨áá¨áááá ᨠTarantool áá°áąá áĽáá°áá áłáááá ááᢠáááá˝á áááľá°áłá°á 4 áĽáŞáá˝ á áᢠCartridge áŤáą á á°á¨áááá áá á ááľáĽ á á°áťáá áá°á¨áľ áá áŤá¸ááᣠá áá á á ááááŠá áá°áá°á áááá˝ áá°áá áŤáá˘
function init()
function validate_config()
function apply_config()
function stop()
áĽáŤááłááą áá á°ááŁá á áá init
. ááá á˛áá ááá Tarantool áĽáá°áá á˛ááá á ááľ áá ááŁááᢠáĽá፠ááš áá, áááłá, box.space.createá ááááá, ááá áááááĽá á ááŞá á á°áá°á á¨áá ááŠááľ ááľáĽ áľáŤá á¨ááŤá¨ááá á ááłááľ á¨ááᣠááá á ááľááłáľ áá˝áá.
á ááľ á°ááŁá init
á á áááá áá˝áá. Cartridge áááá˝ áśáááá ááá¨áá¸áľ á¨áá ááá áľá á¨á°á¨ááá áá
á¨áľ áĽáá˛á áá áŤáľá˝áá¸ááᢠá á°ááłáłáŠ áá
á ááľáĽ á á˛áľ ááá ááá
áĽá á ááľáĄ áŤááá á¨áááľ áá
á ááŤá áá¨áá¸áľ áĽáá˝áááᢠá áĽá ááłáᣠáá
á¨áááááĽá á á᪠áá á¨ááἠáĽá
áľ ááá á¨áá á°ááł á
ááĽáŽá˝ ááá áá˝ááá˘
á¨áááľá°á áĽáŞáá˝ validate_config
и apply_config
á áĽáŤááłááą áá á¨á°á¨áááá áá
á á˛áá¨á. á ááľ áá
á¨áľ á áááľ-á°á¨á ááá áááľ á˛á°áá á áááľá°á áĽáŤááłááą áá áá
á á á˛áľ áá
á áááá á ááá áááá áŤá¨áááŁá áĽá á áľááá á¨ááá áľá
á°áľ áá°á ááá áŤáłáááᢠááá á°á á áááአá¨á°ááá° áááá á˛áľáá, á¨á፠ᨠapply_config
.
áááá˝á áá´ á áá¸áᢠstop
á¨áááá áá¤áľ ááá˝áłáľ á¨ááŤáľáááá. á áá
á áááá áá áááááĽá á áľáŤá á áŤáľáááá áŤááᣠá¨ááá¨áá ááá á ááá áá˝ááᢠinit
.
áááá˝ áĽááľ á áĽááłá¸á áááá áá˝áá. á áá ááľáĽ á¨á°ááŁá áĽáŞáá˝á áááťá áĽáááááłááᣠááá áá á¨á°áá°á áá°áľ áĽá á¨ááááááá áá áááá¨á áá˝ááᢠá á ááłá¨ áá¨áĄ áá áĽáŞáá˝á ááááťá¸áľ á Tarantool ááľáĽ á á°á°áŤá áá°á á ááľáŚááľ áá°á¨áľ á¨á°áááŁáá rpc (á¨áááľ áá°áľ áĽáŞ) á¨áłáľ áááá áĽáá áááá. áá á áá ááá áá˝ááᣠáááłá á¨áĽááľá ááá˘áŤ á á á ááľ áá á¨áá á á ááá áááááĽá á ááŞáá á ááá áĽáŤáá áĽáá˛á ፠á ááĽáł áá á¨á á¨áááá˘
ááá á áľááá ááĽáĽ áľá
á°áľá ááťáťá áá¨ááἠáá. Cartridge á¤áá ááááŁá á á¨SWIM ááŽáśáŽáá áá ááá
á áá
ááŽáśáŽá áá°á¨áľáŁ Cartridge á ááśáá˛á á áááłáŤáľ áá°áľá áŤá°áŤááᢠáĽáŤááłááą áá°áľ á áŤáŁá˘áá áá¨áłá°áá, áĽá ááŞá á áľáááľ ááá˝ ááľá áąá áŤáá, á
áá áááá áááľáľ áá˝áá, áĽá áŤááľáŞá
á¨áŠáŤ áááá˝á á áá
áá°á¨áľ áŤáááá.
áĽáá
áá áá ááá
á ááĽá
ᣠááááŤáąá á á°á°ááá áá° áá áĽá áá° áá ááá¨á á ááŁááľ áá áá° á¨ááἠáááśá˝ áá፠áá˝ááᢠáĽááἠááᣠá áááá° á ááśáá˛á ááľááľá ááááľ á¨ááĽááľáᢠáĽá¨áá áŤááá ááá á ááá
á°á¨áľá°á ááŞá á¨á°ááá° áĽá áááą á¨á°ááá° á áá ááŁááľ áĽáá°ááá°á á áĽááá á ááá á ááĽáá˘
á¨áá áá, áááá˝ á¨áááᎠá áááááśá˝ áá á°ááłáłá áá¸á á¨áá áľááľ áá°áááľ áá˝áá. á Tarantool áá°áśá˝ ááľáĽ áĽáá° áááá˝ áĽáť áá¸á á á°áá°á áááŠá˘ áá á ááŤáł áá á¨áłá ááŠááśá˝á á á. á ááááŞáŤ ᣠááá á¨ááŽáááľ áááá˝ á á°ááłáłá áŽáľ áá á¨áľ ááá á ááŁá¸áᢠáĽá ááá ᨠTarantool áá°áśá˝ á¨á°ááłáłá áŽáľ áá°á¨áľ áááá á ááŁá¸á, áľááá á¨áá á°ááłáá áááľááá áľáááá ááá á áľááŤá áááŽá˝ áĽááłáááŠ, ááá áá á ááá á áááá. áĽáá˛áá, á áŽáľ áľáŞáśá˝ ááľáĽ ááŠááśá˝á ááááľ á¨ááĽááľá, ááááŤáąá á áĽáá°áá ááááľ áááł ááľáĽ áŤáá á¨áľáááą áŁá ᪠ááá°áá á áĽá ááá¨á á áŁá á¨áŁáľ áá.
áĽáá° áśá¨á áłáááᣠááá âááľáâ áĽáť ááľá°á áá° áá áá˝á ááľá°á áĽá፠ááľáŹáľ á áá˝ááᢠá¨áĽá áááá˝ áĽáá° áśá¨á áŽáá´áááŽá˝ á¨á°ááá á áá°ááᢠáĽáá˛ááᣠá á ááľ á ááŁá áááľ á°ááłáłá áááá˝á ááŤááľ á áá˝ááᢠáá áá á á ááá á¨ááᤠââá á ááአáá á áśá ááᢠáĽá á áśáľá°á á°á¨á, ááááš á á á ááá á¨ááŁááľ áĄáľá ááľáĽ á ááľ á áááľ ááá á ááŁá¸á, ááááŤáąá á áá áá፠á¨ááá¨áŁ áááá - áá¨áá á°ááłáłá áá, á áááአáá á¨á°áᨠáá.
á¨áá°ááŞáŤ ááłáŞáŤáá˝
áŤááľáŞá áá°áá áŞáŤáá˝á ááá°ááŤáľ áĽáá´áľ áĽáá°áá¨áł áááłá¨áľ áá ááŁáᢠáááá˝ á áááľá ááá áááľá¨áᣠáááá ᨠRPM ááŹáá˝á áááááĄ-
$ cartridge pack rpm myapp -- ŃпакŃĐľŃ Đ´ĐťŃ Đ˝Đ°Ń ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm
á¨á°áŤáá ááŹá á¨ááŤáľááááľá áááá ááá áááᥠáááąá á áááŹá˝á áĽá á¨á°áŤá áĽááá˝á˘ Tarantool áĽáá° RPM áĽá á áĽáá áá á á áááአáá áá°ááłáᣠáĽá á áááááłá˝á ááááá ááá ááᢠáá á áľáááľ á¨á°á°áŤ áá, ááá áá á ááááŞáŤ áľáá˝ áá á ááťá áŤáľáááááłá. á˘áŤááľ á¨áĽáŤááłááąá áá°áľ URI áááášá˘ áááłá áśáľáľ á á áá¸áá˘
$ 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
áĽáá á ááľ á áľá°áłá˝ ááá á áᢠá¨áááľáŽá˝ ááŽáśáŽá áá°áĽ áĽáť á¨áááá˝ ááá ᣠá¨á áľá°áááá áľá á¨áᎠá á ááá á¨áá°áąá á¨á áἠá áľáŤáť áĽááááááᢠá¨áááľá°á ááśá˝ áĽááľ á ááľ áĽáá´áľ áĽáá°áááá áĽáá˛áŤáá áá á áľááá áá. 0.0.0.0á áĽáá° advertise_uri á áľáŤáť áá áá ááĽá ááłáĽ ááᤠá¨áá á áá á áľáŤáť áĽáá á¨áśáŹáľ áá°áŞáŤ ááá á¨áá áľáᢠáŤááąáŁ ááá á áá°áŤáᣠáľááá Cartridge á ááá á¨á°áłáłá° advertise_uri áŤáá ááľááá ááááľ áĽáá˛á¨ááą á ááá áľáá˘
á áá á áááአááá áá, áá°áśášá áááá áá˝áá. áá°á á á¨áľáááľ ááá á¨á ááľ á áá áá°áľ áĽáá˛ááá áľááááá áľ á áŤááľáŞá áá áŤá áá°áá áŞáŤáá˝ á ááŁááľ á°ááááᢠáĽáá°áá á¨áá°áŠ ááŁá áááá˝
$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B
á áááአááľáĽáŁ Cartridge á¨áľá á áááá˝ á¨ááŤááááá áľá á¨á¤á˝á˛á˛á áá°áĽ ááá á - 8080. áá° áĽáą áĽáááľ áĽá áĽáááá¨á°ááĄ
áá°áśáš áĽá¨á°áŠ á˘ááá áá áĽááłáá°ááአáĽááŤááᢠáŤááśáŞá áá á¨áá áá ááľáá áĽááłáá áľ áá á áŤáá
á áĽá á áŤáą ááłá ááľá¨á á áá˝áá, áľááá
á¨áĽáá áľáááśá˝ áĽá¨á á á áá. áá áĽá áá፠á¨ááá: á¨á á˛áą áááľá°á á
áááľ á¨áááá¨á á¨ááááŞáŤá ááľááá ááááľ áá
á áá. á¨ááŤá ááášá áá° áááľá°á áĽáá¨ááŤáá, áááá˝á áĽáááľáŁá¸ááá, áĽá á áá
áá áá°ááŤáą á á°áłáŤ áááł áĽáá°á°á ááá ááá á áá˝áá.
á¨áááąáľá áá ἠá ááľ áĽááá á ááľáą áĽá á¨á¨áĽá á¨áľáŤ áłáááľ á áá áá áá áᢠáááá¨áťáá áá áá ááťáá.
áá¤áśá˝
áá¤áśáš áááľ áá¸á? ááááŠáľáŁ á°á ááá áľáŁ ááĽá¨ áááľ áľá°á á Github áá áľáŹáśá˝á áá áá˘
ááŁááťáá˝
[1]
ááá: hab.com