ΠΠΎ Mail.ru Group ΠΈΠΌΠ°ΠΌΠ΅ Tarantool - ΠΎΠ²Π° Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ Π²ΠΎ ΠΡΠ°, ΠΊΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ?). ΠΡΠ·ΠΎ Π΅ ΠΈ ΠΊΡΠ», Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΅Π΄Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ. ΠΠ΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎΡΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π΅ Π΅ Π»Π΅ΠΊ, ΡΠ°ΠΊΠ° ΡΡΠΎ Tarantool ΠΈΠΌΠ° Π°Π»Π°ΡΠΊΠΈ Π·Π° Ρ
ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ - ΠΌΠΎΠ΄ΡΠ»ΠΎΡ vshard
ΠΠΎΠ±ΡΠ° Π²Π΅ΡΡ: ΡΠΎΠ±ΡΠ°Π²ΠΌΠ΅ Π½Π΅ΠΊΠΎΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ (Π½Π° ΠΏΡ
Π¨ΡΠΎ ΡΠΎΡΠ½ΠΎ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ?
ΠΠΌΠ°ΠΌΠ΅ ΡΠ°ΡΠ°Π½ΡΡΠ»Π°, ΠΈΠΌΠ°ΠΌΠ΅ Π²ΡΠ°ΡΠ΄ - ΡΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π° ΡΠ°ΠΊΠ°Ρ?
ΠΡΠ²ΠΎ, ΡΠΎΠ° Π΅ ΠΏΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° vshard Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π° ΠΏΡΠ΅ΠΊΡ ΡΠ°Π±Π΅Π»ΠΈΡΠ΅ Lua. ΠΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Tarantool Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΡΡΠ° Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅. ΠΠΈΠΊΠΎΡ Π½Π΅ ΡΠ°ΠΊΠ° Π΄Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΠΎΠ²Π° ΡΠ°ΡΠ½ΠΎ. ΠΠ°ΡΠΎΠ°, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠΈΡΠ΅ Π²ΠΈΠ΄ΠΎΠ²ΠΈ ΡΠΊΡΠΈΠΏΡΠΈ, Ansible ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅.
Π‘Π°ΠΌΠΈΠΎΡ ΠΊΠ΅ΡΡΡΠΈΡ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° vshard, ΡΠΎΠ° Π³ΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. ΠΠΎ ΡΡΡΡΠΈΠ½Π°, ΡΠΎΠ° Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° YAML-Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΡΠΈΡΠ° ΠΊΠΎΠΏΠΈΡΠ° Π΅ Π·Π°ΡΡΠ²Π°Π½Π° Π²ΠΎ ΡΠ΅ΠΊΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Tarantool. ΠΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π΅ ΡΡΠΎ ΡΠ°ΠΌΠ°ΡΠ° ΡΠ°ΠΌΠΊΠ° ΡΠ° ΡΠ»Π΅Π΄ΠΈ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΄Π΅ΠΊΠ° Π΅ ΠΈΡΡΠ° Π½Π°ΡΠ΅ΠΊΠ°Π΄Π΅.
ΠΡΠΎΡΠΎ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΅ ΠΏΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΡΡ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° vshard Π½Π΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²Π° Π²ΡΡΠΊΠ° ΡΠΎ ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° Π΄Π΅Π»ΠΎΠ²Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ ΡΠ°ΠΌΠΎ Π³ΠΎ ΠΎΠ΄Π²Π»Π΅ΠΊΡΠ²Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΎΡ ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΠ³Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ, Π½Π°ΡΡΠ΅ΡΡΠΎ Π·Π±ΠΎΡΡΠ²Π°ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ Π½ΠΈΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ°. ΠΡΠ΅ΠΌΠ½ΠΎΠ³Ρ Π΅ ΡΠ°Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π° Π·Π° Π²ΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ Π²ΠΎ 3 ΡΠ΅Π½ΡΡΠΈ Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
ΠΠΈ ΡΠ΅ΡΠ°Π²Π°Π²ΠΌΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΠΎ, ΠΈ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΏΠ΅Π°Π²ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π²ΠΈΠ΅ΠΌΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ ΠΊΠΎΡ ΡΠ° ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π²ΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° ΡΠ΅Π»ΠΈΠΎΡ Π½Π΅ΡΠ·ΠΈΠ½ ΠΆΠΈΠ²ΠΎΡΠ΅Π½ ΡΠΈΠΊΠ»ΡΡ: ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅, ΡΠ°Π·Π²ΠΎΡ, ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, CI/CD, ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅.
ΠΠ°ΡΡΡΠΈΡ Π³ΠΎ Π²ΠΎΠ²Π΅Π΄ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° ΡΠ»ΠΎΠ³Π° Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Tarantool. Π£Π»ΠΎΠ³ΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ ΡΡΠΎ ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ Π΄Π° ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄. Π‘ΠΈΡΠ΅ ΡΠ»ΠΎΠ³ΠΈ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π½Π° Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Tarantool ΠΈ ΡΠΎΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π·Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ.
ΠΠ»Π°Π²Π½ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΠΊΠ΅ΡΡΡΠΈΡΠΎΡ Tarantool:
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΡΠΊΠ° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡΠ°;
- ΠΏΡΠΎΡΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π½ΠΎΠ²ΠΈ ΡΠ»ΠΎΠ³ΠΈ;
- ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΡΠ°Π·Π²ΠΎΡ ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅;
- Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠ΅ΡΠ΅ΡΠ΅;
- ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΡΠΎ ΡΠ°ΠΌΠΊΠ°ΡΠ° Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ Luatest;
- ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ 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
ΠΠ½Π°ΡΠΈ, ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ» ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΠΈΠ΄Π½Π°ΡΠ° ΡΠΊΡΡΠ΅Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΡΡΡΠ°ΠΆΡΠ²Π°ΡΠΊΠΈΠΎΡ Π»Π°ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π³ΠΎ ΠΎΡΠ²ΠΎΡΠΈ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ, Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΡΠ°Π·ΠΎΠ» ΡΠΎ Π³Π»ΡΠ²ΡΠ΅ΡΠΎ ΠΈ Π΄Π° ΡΠΆΠΈΠ²Π° Π²ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ, Π½ΠΎ ΡΠ°Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π΄ΡΠ²Π°ΠΌΠ΅. ΠΠΎΡΠ΅Π³Π°, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π½ΠΈΡΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΎ, ΠΏΠ° ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΡΠ½Π°, Π½ΠΎ ΡΠ΅Π³Π° Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ ΠΊΠΎΠ΄.
Π Π°Π·Π²ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ
ΠΠ°ΠΌΠΈΡΠ»Π΅ΡΠ΅, Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΡ ΠΌΠΎΡΠ° Π΄Π° ΠΏΡΠΈΠΌΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π΄Π° Π³ΠΈ Π·Π°ΡΡΠ²ΡΠ²Π° ΠΈ Π΄Π° ΠΏΡΠ°Π²ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ°Ρ Π΅Π΄Π½Π°Ρ Π΄Π½Π΅Π²Π½ΠΎ.
ΠΠΎΡΠ½ΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΡΡΠ°ΠΌΠ΅ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ ΠΈ ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Π½Π΅Π³ΠΎ: ΠΏΠΎΡΡΠ°, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Ρ. ΠΠΎΠ½Π°ΡΠ°ΠΌΡ ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ°. ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ vshard ΠΊΠ°ΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅, Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ vshard-ΡΡΡΠ΅Ρ ΠΈ vshard-storage Π²ΠΎ ΡΠ΅ΠΌΠ°ΡΠ°. ΠΠΈΡΡ ΠΏΠΎΡΡΠ°ΡΠ°, Π½ΠΈΡΡ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ Π½Π΅ΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΠ°Ρ Π΄ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ΡΠΎ; Π·Π° ΡΠΎΠ° ΡΠ»ΡΠΆΠΈ ΡΡΡΠ΅ΡΠΎΡ, Π·Π° ΡΠΎΠ° Π΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½.
ΠΠ²ΠΎΡ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π³ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π° ΡΠΎΡΠ½ΠΎ ΠΎΠ½Π° ΡΡΠΎ ΡΠ΅ Π³ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠ΅ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ Π°ΠΏΡΡΡΠ°ΠΊΡΠ½ΠΎ. Π‘Γ¨ ΡΡΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π° ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ° Π½Π° Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈΠΎΡ Tarantool - Π°ΡΠ΄Π΅ Π΄Π° Π³ΠΈ Π³ΡΡΠΏΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΏΠΎ ΠΏΡΠΎΡΠ΅Ρ.
ΠΠ΅ΠΌΠ° ΡΠΌΠΈΡΠ»Π° Π΄Π° ΡΠ΅ ΡΡΠ²Π°Π°Ρ vshard-ΡΡΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ. ΠΠΎΡΡΠΎ ΡΡΠ΅Π±Π° ΡΡΡΠ΅ Π΅Π΄Π½Π°Ρ Π΄Π° ΡΡΡΡΠ°ΠΌΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π°ΠΊΠΎ ΠΎΠ²Π° Π΅ Π²Π΅ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π½Π° ΡΡΡΠ΅ΡΠΎΡ? Π’ΠΈΠ΅ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ Π²ΠΎΠ΄Π°Ρ Π²ΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΈΡΡΠΈΠΎΡ ΠΏΡΠΎΡΠ΅Ρ. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, ΠΈ gateway ΠΈ vshard.router.cfg ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΠΎ Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΈ Π½Π΅ΠΊΠ° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°Π°Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎ.
ΠΠΎ ΡΠ°Π·Π°ΡΠ° Π½Π° Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°ΡΠ΅, Π±Π΅ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΎ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π½ΠΎ ΡΠ°Ρ, ΠΊΠ°ΠΊΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ, Π΄ΠΎΠ΄Π΅ΠΊΠ° Π³ΠΎ ΠΏΠΈΡΡΠ²Π°ΠΌ ΠΊΠΎΠ΄ΠΎΡ, Π½Π΅ ΡΠ°ΠΊΠ°ΠΌ Π΄Π° ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°ΠΌ Π·Π° Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½Π° Tarnatool. Π’ΡΠ΅Π±Π° Π΄Π° ΠΈΠ·Π²ΡΡΠ°ΠΌ ΡΠ΅ΡΡΠΎΠ²ΠΈ ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠ°ΠΌ Π΄Π°Π»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΡΠΌ Π½Π°ΠΏΠΈΡΠ°Π» gateway. ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ°ΠΊΠ°ΠΌ Π΄Π° ΠΈΠΌ ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° ΠΌΠΎΠΈΡΠ΅ ΠΊΠΎΠ»Π΅Π³ΠΈ. ΠΠΎΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΎΠΌΠΈΠ½Π°ΠΌ Π½ΠΈΠ· ΠΌΠ°ΠΊΠ° Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠΈ ΠΊΠΎΠΏΠΈΠΈ? Π’Π°ΠΊΠ° ΡΠ΅ ΡΠΎΠ΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ Π½Π° ΡΠ»ΠΎΠ³ΠΈ. Π£Π»ΠΎΠ³Π° Π΅ ΡΠ΅Π΄ΠΎΠ²Π΅Π½ ΠΌΠΎΠ΄ΡΠ» Π·Π° Π»ΡΡ, ΡΠΈΡ ΠΆΠΈΠ²ΠΎΡΠ΅Π½ ΡΠΈΠΊΠ»ΡΡ Π³ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π° ΠΠ°ΡΡΡΠΈΡ. ΠΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠΌΠ° ΡΠ΅ΡΠΈΡΠΈ ΠΎΠ΄ Π½ΠΈΠ² - ΠΏΠΎΡΡΠ°Π», ΡΡΡΠ΅Ρ, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅, ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°Ρ. ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΠΎ Π½Π΅ΠΊΠΎΡ Π΄ΡΡΠ³ ΠΏΡΠΎΠ΅ΠΊΡ. Π‘ΠΈΡΠ΅ ΡΠ»ΠΎΠ³ΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Ρ Π²ΠΎ Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ, ΠΈ ΡΠΎΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ.
Π ΠΊΠΎΠ³Π° ΡΡΠ°Π½ΡΠ²Π° Π·Π±ΠΎΡ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΠΎΠ³Π°Ρ Π½Π° ΡΠ΅ΠΊΠΎΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Tarantool ΡΠ΅ ΠΌΡ Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΡΠ΅Ρ Π½Π° ΡΠ»ΠΎΠ³ΠΈ Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ Ρ
Π°ΡΠ΄Π²Π΅ΡΡΠΊΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
Π£ΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΎΠ° ΠΊΠ°Π΄Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ ΡΠ»ΠΎΠ³ΠΈΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ Π½Π΅ΠΊΠ°Π΄Π΅. Π ΠΎΠ²Π° βΠ½Π΅ΠΊΠ°Π΄Π΅β Π΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°, ΠΊΠΎΡΠ° Π²Π΅ΡΠ΅ ΡΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°Π² ΠΏΠΎΠ³ΠΎΡΠ΅. ΠΠ°ΡΠ²Π°ΠΆΠ½ΠΎ Π·Π° Π½Π΅Π³ΠΎ Π΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ. ΠΠ²Π΅ 3 Π³ΡΡΠΏΠΈ Π·Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΠ΄ 5 ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Tarantool:
ΠΠ΅ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π³ΡΠ±ΠΈΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π·Π°ΡΠΎΠ° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π³ΠΈ ΡΡΠ΅ΡΠΈΡΠ°ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ Π²ΠΎΠ΄Π°Ρ. ΠΠ°ΡΡΡΠΈΡΠΎΡ ΡΠ° ΡΠ»Π΅Π΄ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π΄Π²ΠΎΡΠ°Π·Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅. ΠΡΠΊΠ°ΠΊΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ° Π°ΠΆΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, ΠΏΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π΄Π°Π»ΠΈ ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ ΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π΄Π° ΡΠ° ΠΏΡΠΈΡΠ°ΡΠ°Ρ Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. ΠΠΎ ΠΎΠ²Π°, Π²ΡΠΎΡΠ°ΡΠ° ΡΠ°Π·Π° ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°. Π’Π°ΠΊΠ°, Π΄ΡΡΠΈ ΠΈ Π°ΠΊΠΎ Π΅Π΄Π½Π° ΠΊΠΎΠΏΠΈΡΠ° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° Π΅ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΠΏΠ½Π°, Π½ΠΈΡΡΠΎ Π»ΠΎΡΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ΄Π½Π°ΠΏΡΠ΅Π΄ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°.
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π²ΠΎ Π΄Π΅Π»ΠΎΡ Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ° Π΅ ΠΎΠ·Π½Π°ΡΠ΅Π½ ΡΠ°ΠΊΠΎΠ² Π²Π°ΠΆΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΊΠ°ΠΊΠΎ Π»ΠΈΠ΄Π΅Ρ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° Π³ΡΡΠΏΠ° Π·Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠ±ΠΈΡΠ½ΠΎ ΠΎΠ²Π° Π΅ ΠΊΠΎΠΏΠΈΡΠ°ΡΠ° ΡΡΠΎ ΡΠ΅ ΡΠ½ΠΈΠΌΠ°. ΠΡΡΠ°Π½Π°ΡΠΈΡΠ΅ Π½Π°ΡΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅, ΠΈΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ. ΠΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Ρ ΡΠ°Π±ΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π½Π΅ ΡΠ΅ ΠΏΠ»Π°ΡΠ°Ρ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΏΠΈΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π½ΠΎ ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΈ, Π±Π΅Π· ΡΠ°Π·Π»ΠΈΠΊΠ° Π½Π° ΡΠ΅, Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π²ΡΡΠ°Ρ Π΄Π²Π°ΠΏΠ°ΡΠΈ. ΠΠ° ΠΎΠ²Π° ΠΏΠΎΡΡΠΎΠΈ Π·Π½Π°ΠΊ Π½Π° Π»ΠΈΠ΄Π΅Ρ.
ΠΠΈΠ²ΠΎΡΠΎΡ Π½Π° ΡΠ»ΠΎΠ³ΠΈΡΠ΅
ΠΠ° Π΄Π° ΠΏΠΎΡΡΠΎΠΈ Π°ΠΏΡΡΡΠ°ΠΊΡΠ½Π° ΡΠ»ΠΎΠ³Π° Π²ΠΎ ΡΠ°ΠΊΠ²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΡΠ°ΠΌΠΊΠ°ΡΠ° ΠΌΠΎΡΠ° Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π½ΠΈΠ². Π‘Π΅ΠΊΠ°ΠΊΠΎ, ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΡΠ° ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° Π±Π΅Π· ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Tarantool. ΠΠΌΠ° 4 ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ»ΠΎΠ³ΠΈ. Π‘Π°ΠΌΠΈΠΎΡ ΠΊΠ΅ΡΡΡΠΈΡ ΡΠ΅ Π³ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ° Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΡΠΎΠ° ΡΡΠΎ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π²ΠΎ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°, Π° ΡΠΎ ΡΠΎΠ° ΡΠ΅ ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΡΠ»ΠΎΠ³ΠΈ.
function init()
function validate_config()
function apply_config()
function stop()
Π‘Π΅ΠΊΠΎΡΠ° ΡΠ»ΠΎΠ³Π° ΠΈΠΌΠ° ΡΠ²ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ° init
. Π‘Π΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° Π΅Π΄Π½Π°Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π° ΡΠ»ΠΎΠ³Π°ΡΠ° Π΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π° Tarantool ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°. Π’Π°ΠΌΡ Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ° box.space.create, ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°ΡΡΡΠ²Π° Π½Π΅ΠΊΠΎΠ΅ Π·Π°Π΄Π½ΠΈΠ½ΡΠΊΠΎ Π²Π»Π°ΠΊΠ½ΠΎ ΡΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ.
ΠΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° init
ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ. ΠΠ°ΡΡΡΠΈΡΠΎΡ ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° ΡΠ»ΠΎΠ³ΠΈΡΠ΅ Π΄Π° Π³ΠΈ ΠΈΡΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΡΡΠΎ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ°. ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΠΌΠ΅ Π½ΠΎΠ² Π΄Π΅Π» Π²ΠΎ ΠΈΡΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΈ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΠ΄ Π΄Π΅Π»ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° Π²ΠΎ Π½Π΅Π°. ΠΠΎ ΠΌΠΎΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΠ΅ΠΌΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ Π·Π° ΡΠ»ΠΎΠ³Π°ΡΠ° Π½Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ.
ΠΠ»Π°ΡΡΠ΅ΡΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ validate_config
ΠΈ apply_config
ΡΠ΅ΠΊΠΎΡ ΠΏΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. ΠΠΎΠ³Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° ΡΠΎ ΠΎΠ±Π²ΡΠ·ΡΠ²Π°ΡΠ΅ Π²ΠΎ Π΄Π²Π΅ ΡΠ°Π·ΠΈ, ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π΄Π°Π»ΠΈ ΡΠ΅ΠΊΠΎΡΠ° ΡΠ»ΠΎΠ³Π° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° Π΄Π° ΡΠ° ΠΏΡΠΈΡΠ°ΡΠΈ ΠΎΠ²Π°Π° Π½ΠΎΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ° ΠΈ, Π΄ΠΎΠΊΠΎΠ»ΠΊΡ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ, ΠΈΠ·Π²Π΅ΡΡΡΠ²Π° Π·Π° Π³ΡΠ΅ΡΠΊΠ° Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ. ΠΠΎΠ³Π° ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ°Ρ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π΅ Π½ΠΎΡΠΌΠ°Π»Π½Π°, ΡΠΎΠ³Π°Ρ apply_config
.
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ»ΠΎΠ³ΠΈΡΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ stop
, ΡΡΠΎ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° Π΄Π° ΡΠ΅ ΠΈΡΡΠΈΡΡΠΈ ΠΈΠ·Π»Π΅Π·ΠΎΡ Π½Π° ΡΠ»ΠΎΠ³Π°ΡΠ°. ΠΠΊΠΎ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π½Π° ΠΎΠ²ΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ Π·Π°ΠΏΡΠ΅ ΠΎΠ½ΠΈΠ΅ Π²Π»Π°ΠΊΠ½Π° ΡΠΎ ΠΊΠΎΠΈ Π·Π°ΠΏΠΎΡΠ½Π° init
.
Π£Π»ΠΎΠ³ΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°Π°Ρ Π΅Π΄Π½ΠΈ ΡΠΎ Π΄ΡΡΠ³ΠΈ. ΠΠ°Π²ΠΈΠΊΠ½Π°ΡΠΈ ΡΠΌΠ΅ Π΄Π° ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎ Lua, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π΄Π° ΡΠ° Π½Π΅ΠΌΠ° ΡΠ»ΠΎΠ³Π°ΡΠ° ΡΡΠΎ Π½ΠΈ ΡΡΠ΅Π±Π°. ΠΠ° Π΄Π° Π³ΠΈ ΠΎΠ»Π΅ΡΠ½ΠΈΠΌΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΊΡ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΎΡ ΠΌΠΎΠ΄ΡΠ» rpc (ΠΏΠΎΠ²ΠΈΠΊ Π·Π° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°), ΠΊΠΎΡ Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎΡΠΎ netbox Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ Π²ΠΎ Tarantool. ΠΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π°ΠΊΠΎ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΡΠΈΠΎΡ ΠΏΠΎΡΡΠ°Π» ΡΠ°ΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΠΏΠΎΠ±Π°ΡΠ° ΠΎΠ΄ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ Π΄Π° ΡΠ° Π·Π°Π²ΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΎΠΊΠΌΡ ΡΠ΅Π³Π°, Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ΠΊΠ° Π΅Π΄Π΅Π½ Π΄Π΅Π½.
ΠΡΡΠ³Π° Π²Π°ΠΆΠ½Π° ΡΠΎΡΠΊΠ° Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠΈΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠ°ΡΡΡΠΈΡΠΎΡ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ SWIM Π·Π° Π΄Π° Π³ΠΎ ΡΠ»Π΅Π΄ΠΈ Π·Π΄ΡΠ°Π²ΡΠ΅ΡΠΎ
ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», Cartridge ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° Π΄Π΅ΡΠ΅ΠΊΡΠΈ. Π‘Π΅ΠΊΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ° ΡΠ»Π΅Π΄ΠΈ ΡΠ²ΠΎΡΠ°ΡΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π° ΠΈ Π°ΠΊΠΎ Π»ΠΈΠ΄Π΅ΡΠΎΡ ΠΎΠ΄Π΅Π΄Π½Π°Ρ ΠΏΡΠ΅ΡΡΠ°Π½Π΅ Π΄Π° ΡΠ΅Π°Π³ΠΈΡΠ°, ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΡΠ»ΠΎΠ³Π°, Π° Cartridge ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ Π³ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΡΠ»ΠΎΠ³ΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ.
Π’ΡΠΊΠ° ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΡΠ΅ΡΡΠΎΡΠΎ ΠΏΡΠ΅ΡΡΠ»ΡΠ²Π°ΡΠ΅ Π½Π°ΠΏΡΠ΅Π΄-Π½Π°Π·Π°Π΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°. Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΠΎΡΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ ΠΏΠΎ ΡΠ»ΡΡΠ°Π΅Π½ ΠΈΠ·Π±ΠΎΡ. ΠΠΎΡΠ° ΡΠ°ΡΠ½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΠ΅ ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΠΈ Π΄Π° Π±ΠΈΠ΄Π΅ΠΌΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π΅ΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΡΠΊΡΡΠΈ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ Π²ΡΠ°ΡΠΈ Π»ΠΈΠ΄Π΅ΡΠΎΡ ΠΈ ΡΠ΅ ΠΌΡ Π±ΠΈΠ΄Π΅ Π²ΡΠ°ΡΠ΅Π½Π° ΠΊΡΡΠ½Π°ΡΠ°.
ΠΠ΄ ΡΠ΅ΡΠΎ ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΡΡΠ²ΡΡΠ²ΠΎ Π΄Π΅ΠΊΠ° ΡΠ»ΠΎΠ³ΠΈΡΠ΅ ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅. ΠΠΎ ΠΈΠ·Π²Π΅ΡΠ½Π° ΡΠΌΠΈΡΠ»Π°, ΡΠΈΠ΅ ΡΠ΅ ΡΠΎΠΊΠΌΡ ΡΠΎΠ°, ΡΠ°ΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π²ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° Tarantool. ΠΠΎ, ΠΏΠΎΡΡΠΎΡΠ°Ρ ΠΈ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ. ΠΡΠ²ΠΎ, ΡΠΈΡΠ΅ ΡΠ»ΠΎΠ³ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΌΠΎΡΠ° Π΄Π° ΠΆΠΈΠ²Π΅Π°Ρ Π²ΠΎ ΠΈΡΡΠ°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. Π ΡΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Tarantool ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΡΠ²Π°Π°Ρ ΠΎΠ΄ ΠΈΡΡΠ°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ, Π·Π° Π΄Π° Π½Π΅ΠΌΠ° ΠΈΠ·Π½Π΅Π½Π°Π΄ΡΠ²Π°ΡΠ° ΠΊΠ°ΠΊΠΎ ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠΎΡ, Π½ΠΎ ΡΠΎΡ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΏΠΎΡΡΠΎΠΈ. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π²ΠΎ Π²Π΅ΡΠ·ΠΈΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π²ΠΎ ΡΠ°ΠΊΠ²Π° ΡΠΈΡΡΠ°ΡΠΈΡΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈ ΠΈ Π΄Π΅Π±Π°Π³ΠΈΡΠ°.
ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Docker, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π·Π΅ΠΌΠ΅ΠΌΠ΅ βΡΠ»ΠΈΠΊΠ°β Π½Π° ΡΠ»ΠΎΠ³Π°ΡΠ°, Π΄Π° ΡΠ° ΠΎΠ΄Π½Π΅ΡΠ΅ΠΌΠ΅ Π½Π° Π΄ΡΡΠ³Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈ Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΡΠ°ΠΌΡ. ΠΠ°ΡΠΈΡΠ΅ ΡΠ»ΠΎΠ³ΠΈ Π½Π΅ ΡΠ΅ ΡΠΎΠ»ΠΊΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ Π½Π° ΠΠΎΠΊΠ΅Ρ. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ Π΄Π²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΡΠ»ΠΎΠ³ΠΈ Π½Π° Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ. Π£Π»ΠΎΠ³Π°ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΎΠΈ ΠΈΠ»ΠΈ Π½Π΅; Π²ΠΎ ΠΈΠ·Π²Π΅ΡΠ½Π° ΡΠΌΠΈΡΠ»Π°, ΡΠΎΠ° Π΅ ΡΠΈΠ½Π³Π». Π ΡΡΠ΅ΡΠΎ, ΡΠ»ΠΎΠ³ΠΈΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ ΠΈΡΡΠΈ Π²ΠΎ ΡΠ΅Π»Π°ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΊΠ° Π³ΡΡΠΏΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π²ΠΎ ΡΠΏΡΠΎΡΠΈΠ²Π½ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π°ΠΏΡΡΡΠ΄Π½ΠΎ - ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ ΠΈΡΡΠΈ, Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π΅ ΡΠ°Π·Π»ΠΈΡΠ½Π°.
ΠΠ»Π°ΡΠΊΠΈ Π·Π° ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅
ΠΠ΅ΡΠΈΠ² Π΄Π΅ΠΊΠ° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Cartridge ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅. ΠΠ° Π΄Π° ΠΈΠΌ Π³ΠΎ ΠΎΠ»Π΅ΡΠ½ΠΈ ΠΆΠΈΠ²ΠΎΡΠΎΡ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅, ΡΠ°ΠΌΠΊΠ°ΡΠ° Π³ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ RPM ΠΏΠ°ΠΊΠ΅ΡΠΈ:
$ cartridge pack rpm myapp -- ΡΠΏΠ°ΠΊΡΠ΅Ρ Π΄Π»Ρ Π½Π°Ρ ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΠΎΠ΄ΡΠΆΠΈ ΡΠ΅ΡΠΈΡΠΈ ΡΓ¨ ΡΡΠΎ Π²ΠΈ ΡΡΠ΅Π±Π°: ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. Tarantool, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΊΠ°ΠΊΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΏΠ°ΠΊΠ΅ΡΠΎΡ RPM, Π° Π½Π°ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π° Π·Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅. ΠΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ΅ΠΊΡ systemd, Π½ΠΎ ΠΏΡΠ²ΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ°Π»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°. ΠΠ°ΡΠΌΠ°Π»ΠΊΡ, Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π³ΠΎ 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 Π°Π΄ΡΠ΅ΡΠ°; ΡΠΎΠ° ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π° IP Π°Π΄ΡΠ΅ΡΠ°, Π° Π½Π΅ ΡΡΠ΅ΠΊΠ΅Ρ. ΠΠ΅Π· Π½Π΅Π³ΠΎ, Π½ΠΈΡΡΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ, ΠΏΠ° Cartridge Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ ΡΠ°Π·ΠΎΠ» ΡΠΎ ΠΏΠΎΠ³ΡΠ΅ΡΠ΅Π½ advertise_uri.
Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅. ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΎΠ±ΠΈΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° Π΅Π΄ΠΈΠ½ΠΈΡΠ° Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΠ°ΡΡΡΠΈΡΠΎΡ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π°Ρ ΡΠΎ Ρ.Π½. ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ°Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π²Π°ΠΊΠ°:
$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B
ΠΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ°, ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΠΈΠ²ΠΌΠ΅ HTTP-ΠΏΠΎΡΡΠ°ΡΠ° Π½Π° ΠΊΠΎΡΠ° ΠΠ°ΡΡΡΠΈΡΠΎΡ Π³ΠΎ ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π° Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ - 8080. ΠΡΠ΄Π΅ Π΄Π° ΠΎΠ΄ΠΈΠΌΠ΅ Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅:
ΠΠ»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠ°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Ρ, ΡΠΈΠ΅ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ. ΠΠ°ΡΡΡΠΈΡΠΎΡ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π·Π½Π°Π΅ ΠΊΠΎΡ ΡΠΎ ΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌ Π΄Π° Π΄ΠΎΠ½Π΅ΡΠ΅ ΠΎΠ΄Π»ΡΠΊΠ°, ΠΏΠ° Π³ΠΈ ΡΠ΅ΠΊΠ° Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ°ΠΏΠΊΠΈ. ΠΠΎ, Π½Π΅ΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΈΠ·Π±ΠΎΡ: ΠΆΠΈΠ²ΠΎΡΠΎΡ Π½Π° Π½ΠΎΠ²ΠΈΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΏΡΠ²ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ». ΠΠΎΡΠΎΠ° ΡΠ΅ Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ Π΄ΡΡΠ³ΠΈΡΠ΅ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΡ, ΡΠ΅ ΠΈΠΌ Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ ΡΠ»ΠΎΠ³ΠΈ ΠΈ Π²ΠΎ ΠΎΠ²ΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΌΠ΅ΡΠ° Π·Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΠ΅Π½ΠΎ.
ΠΡΠ΄Π΅ Π΄Π° ΠΈΡΡΡΡΠΈΠΌΠ΅ ΡΠ°ΡΠ° ΠΎΠ΄ Π²Π°ΡΠΈΠΎΡ ΠΎΠΌΠΈΠ»Π΅Π½ ΠΏΠΈΡΠ°Π»ΠΎΠΊ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΡΡΡΠΈΠΌΠ΅ ΠΏΠΎ Π΄ΠΎΠ»Π³Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ½Π° Π½Π΅Π΄Π΅Π»Π°. ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΠ΄
ΠΠΎΠΈ ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅? ΠΡΠΎΠ±Π°ΡΡΠ΅ Π³ΠΎ, ΠΈΡΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΎ, ΠΎΡΡΠ°Π²Π΅ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΠ½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π±ΠΈΠ»Π΅ΡΠΈ Π½Π° Github.
ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈ
[1]
ΠΠ·Π²ΠΎΡ: www.habr.com