Π£ Π½Π°Ρ Π² Mail.ru Group Π΅ΡΡΡ Tarantool β ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Lua, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΡΠ΅Π»ΡΡΡΠ²Ρ Π΅ΡΡ ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
(ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ?). ΠΠ½ Π±ΡΡΡΡΡΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠ½ΡΠΉ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π±Π΅Π·Π³ΡΠ°Π½ΠΈΡΠ½Ρ. ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠ°Π½Π°ΡΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Tarantool Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΌΠΎΠ΄ΡΠ»Ρ vshard
Π₯ΠΎΡΠΎΡΠΈΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ: ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΡΠΈΡΠ΅ΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
Π Π² ΡΡΠΌ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΡΠ°Π½ΡΡΠ», Π΅ΡΡΡ vshard β ΡΠ΅Π³ΠΎ Π΅ΡΡ ΠΏΠΎΠΆΠ΅Π»Π°ΡΡ?
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π΅Π»ΠΎ Π² ΡΠ΄ΠΎΠ±ΡΡΠ²Π΅. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ vshard Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Lua-ΡΠ°Π±Π»ΠΈΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Tarantool ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅Π·Π΄Π΅ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ. ΠΠΈΠΊΡΠΎ Π½Π΅ Ρ ΠΎΡΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΡΠΈΠΌ Π²ΡΡΡΠ½ΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π² Ρ ΠΎΠ΄ ΠΈΠ΄ΡΡ Π²ΡΡΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ, Ansible, ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ.
Cartridge ΡΠ°ΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ vshard, ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ YAML-ΡΠ°ΠΉΠ», ΠΊΠΎΠΏΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Tarantool. Π£ΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠ°ΠΌ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π²Π΅Π·Π΄Π΅ Π±ΡΠ»Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°Ρ.
ΠΠΎ-Π²ΡΠΎΡΡΡ , Π΄Π΅Π»ΠΎ ΡΠ½ΠΎΠ²Π° Π² ΡΠ΄ΠΎΠ±ΡΡΠ²Π΅. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²ΡΠ°ΡΠ΄ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ²Π»Π΅ΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎΠ± ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ ΠΈ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. Π Π²ΡΠΊΠ°ΡΠΊΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π½Π° 3 Π΄Π°ΡΠ°ΡΠ΅Π½ΡΡΠ° Π΄ΡΠΌΠ°ΡΡ ΡΠ°Π½ΠΎ.
ΠΡ ΡΠ΅ΡΠ°Π»ΠΈ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°Π· Π·Π° ΡΠ°Π·ΠΎΠΌ, ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π²ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, CI/CD, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅.
Cartridge Π²Π²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΠΎΠ»ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Tarantool. Π ΠΎΠ»ΠΈ β ΡΡΠΎ ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΡΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Tarantool, ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ² ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Tarantool Cartridge:
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°;
- ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΠΎΠ²ΡΡ ΡΠΎΠ»Π΅ΠΉ;
- ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ;
- Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
- ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Luatest;
- ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ WebUI ΠΈ API;
- ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ.
Hello, World!
ΠΠ½Π΅ Π½Π΅ ΡΠ΅ΡΠΏΠΈΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ°ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΊΠ°Π· ΠΏΡΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΎΡΡΠ°Π²ΠΈΠΌ Π½Π° ΠΏΠΎΡΠΎΠΌ, ΠΈ Π½Π°ΡΠ½ΡΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ. ΠΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΌ 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-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌ Β«Hello, World!Β» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Π² Ρ.Ρ. ΡΠ°ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ):
$ tarantoolctl rocks make
$ ./init.lua --http-port 8080
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π·Π°ΠΏΡΡΠ΅Π½Π° ΠΎΠ΄Π½Π° Π½ΠΎΠ΄Π° Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ±ΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π·Ρ ΠΎΡΠΊΡΡΡΡ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΌΡΡΠΊΠΎΠΉ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΈ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ, Π½ΠΎ ΡΠ°Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠΊΠ° ΡΠ°Π½ΠΎ. ΠΠΎΠΊΠ° ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΌΠ΅Π΅Ρ Π΄Π΅Π»Π°ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΠΎΡΠΎΠΌ, Π° ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΡΡΡΠΏΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΠΌΡ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΡ ΠΈ ΡΠ°Π· Π² ΡΡΡΠΊΠΈ ΡΡΡΠΎΠΈΡΡ ΠΎΡΡΡΡ.
ΠΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡ
Π΅ΠΌΡ, ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π½Π° Π½Π΅Ρ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°: gateway, storage ΠΈ scheduler. ΠΡΠΎΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Π΄Π°Π»ΡΡΠ΅. Π Π°Π· ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° vshard, ΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΡΡ
Π΅ΠΌΡ vshard-router ΠΈ vshard-storage. ΠΠΈ gateway, Π½ΠΈ scheduler ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠΎΡΡΠ΅Ρ, ΠΎΠ½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π½.
ΠΡΠ° ΡΡ
Π΅ΠΌΠ° Π²ΡΡ Π΅ΡΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΎΡΠ½ΠΎ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎ. ΠΡΠΆΠ½ΠΎ Π΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΏΡΠΎΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Tarantool β ΡΠ³ΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ.
ΠΠ΅ΡΠΆΠ°ΡΡ vshard-router ΠΈ gateway Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°Ρ
ΡΠΌΡΡΠ»Π° ΠΌΠ°Π»ΠΎ. ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΌ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· Ρ
ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΈ ΡΠ°ΠΊ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΡΠΎΡΡΠ΅ΡΠ°? ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π’ΠΎ Π΅ΡΡΡ Π² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΈ gateway, ΠΈ vshard.router.cfg, ΠΈ ΠΏΡΡΡΡ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ.
ΠΠ° ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π±ΡΠ»ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ Ρ, ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΏΠΎΠΊΠ° ΠΏΠΈΡΡ ΠΊΠΎΠ΄, Π½Π΅ Ρ ΠΎΡΡ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡΡΡ ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Tarnatool. ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π» gateway. ΠΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ, Ρ Ρ ΠΎΡΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ ΡΠΈΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΠ½Π΅ ΠΌΡΡΠΈΡΡΡΡ Ρ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ²? ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΡΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠΎΠ»Π΅ΠΉ. Π ΠΎΠ»Ρ β ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ Π»ΡΠ°ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Cartridge. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡ ΡΠ΅ΡΡΡΠ΅ β gateway, router, storage, scheduler. Π Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠ΅ ΡΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΠΈ ΡΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
Π ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄ΡΡ ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠΈ Π² staging ΠΈΠ»ΠΈ Π² ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΡ, ΡΠΎΠ³Π΄Π° ΠΌΡ Π½Π°Π·Π½Π°ΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ Tarantool ΡΠ²ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠΎΠ»Π΅ΠΉ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ:
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎΠ»ΠΈ Π·Π°ΠΏΡΡΠ΅Π½Ρ, Π½Π°Π΄ΠΎ Π³Π΄Π΅-ΡΠΎ Ρ ΡΠ°Π½ΠΈΡΡ. Π ΡΡΠΎ Β«Π³Π΄Π΅-ΡΠΎΒ» β ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» Π²ΡΡΠ΅. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ Π² Π½Π΅ΠΉ β ΡΡΠΎ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠ΄Π΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ 3 ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΠΈΠ· 5 ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Tarantool:
ΠΡ Π½Π΅ Ρ
ΠΎΡΠΈΠΌ ΠΏΠΎΡΠ΅ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π±Π΅ΡΠ΅ΠΆΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΠΌΡΡ ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ
. Cartridge ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΡΡ
ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΎΠ½ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ ΠΈΡ
Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΡΡ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π·ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ ΡΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡΡ ΠΈ Π²Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ.
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠΊΠ°Π·Π°Π½ ΡΠ°ΠΊΠΎΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠ°ΠΊ Π»ΠΈΠ΄Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ²Π»ΡΡΡΡΡ read-only, Ρ ΠΎΡΡ ΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ½ΠΎΠ³Π΄Π° ΡΠΌΠ΅Π»ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ Π±ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π½ΠΎ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΡΠΌΠΎΡΡΡ Π½ΠΈ Π½Π° ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊ Π»ΠΈΠ΄Π΅ΡΠ°.
ΠΠΈΠ·Π½Ρ ΡΠΎΠ»Π΅ΠΉ
Π§ΡΠΎΠ±Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½Π°Ρ ΡΠΎΠ»Ρ ΠΌΠΎΠ³Π»Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΊΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠΈ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° Tarantool. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΌΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 4 ΠΊΠΎΠ»Π±Π΅ΠΊΠ°. Cartridge ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡ Π²ΡΠ·Π²Π°ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π½Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠΎΠ»ΡΠΌ.
function init()
function validate_config()
function apply_config()
function stop()
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΠ»ΠΈ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ init
. ΠΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ»ΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅ TarantoolβΠ°. Π’Π°ΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ box.space.create, ΠΈΠ»ΠΈ scheduler ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΎΠ½ΠΎΠ²ΡΠΉ fiber, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ init
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. Cartridge ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΡΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΡΠ΅ΠΊΡΠΈΡ ΠΈ Ρ
ΡΠ°Π½ΠΈΡΡ Π² Π½Π΅ΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π ΠΌΠΎΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡ
Π΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ
, Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ»ΠΈ scheduler.
ΠΠ»Π°ΡΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ validate_config
ΠΈ apply_config
ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π²ΡΡ
ΡΠ°Π·Π½ΡΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ, ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠΎΠ»Ρ Π³ΠΎΡΠΎΠ²Π° ΠΏΡΠΈΠ½ΡΡΡ ΡΡΡ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠΈΠ»ΠΈΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ apply_config
.
Π’Π°ΠΊΠΆΠ΅ Ρ ΡΠΎΠ»Π΅ΠΉ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ stop
, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΆΠΈΠ·Π½Π΅Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ»ΠΈ. ΠΡΠ»ΠΈ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ, ΡΡΠΎ scheduler Π½Π° ΡΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ ΡΠ°ΠΉΠ±Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π» Ρ ΠΏΠΎΠΌΠΎΡΡΡ init
.
Π ΠΎΠ»ΠΈ ΠΌΠΎΠ³ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΡ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° Lua, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π½Π΅Ρ Π½ΡΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ ΡΠΎΠ»ΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΡΠΈ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ rpc (remote procedure call), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ netbox, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Tarantool. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°Ρ gateway Π·Π°Ρ ΠΎΡΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ scheduler ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, Π° Π½Π΅ ΠΆΠ΄Π°ΡΡ ΡΡΡΠΊΠΈ.
ΠΡΡ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ β ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. ΠΠ»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π·Π΄ΠΎΡΠΎΠ²ΡΡ Π² Cartridge ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» SWIM
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Cartridge ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΊΠ°Π·ΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠ²ΠΎΠΈΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ Π΅ΡΠ»ΠΈ Π»ΠΈΠ΄Π΅Ρ Π²Π΄ΡΡΠ³ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΠΎΡΠ²Π΅ΡΠ°ΡΡ, ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π²Π·ΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ»Ρ Π½Π° ΡΠ΅Π±Ρ, Π° Cartridge ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ»ΠΈ.
ΠΠ΄Π΅ΡΡ Π½Π°Π΄ΠΎ Π±ΡΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΄Π°-ΡΡΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΊΠ»ΡΡΠ°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ failover Π½Π°ΠΎΠ±ΡΠΌ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΡΡΠΎΠΈΡ. ΠΠ°Π΄ΠΎ ΡΠ΅ΡΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΈ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ, ΡΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π»ΠΈΠ΄Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈ Π΅ΠΌΡ Π²Π΅ΡΠ½ΡΡ ΠΊΠΎΡΠΎΠ½Ρ.
ΠΠ· Π²ΡΠ΅Π³ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΎΠ»ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ. Π ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠΌΡΡΠ»Π΅ ΠΎΠ½ΠΈ ΠΈΠΌΠΈ ΠΈ ΡΠ²Π»ΡΡΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Tarantool. ΠΠΎ Π΅ΡΡΡ ΠΈ ΡΡΠ΄ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²ΡΠ΅ ΡΠΎΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΆΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅. Π Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Tarantool Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΡΡΡΠΏΡΠΈΠ·ΠΎΠ² Π²ΡΠΎΠ΄Π΅ ΡΠ΅Ρ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ scheduler, Π° Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π΅Ρ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ Π² Π²Π΅ΡΡΠΈΡΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Docker, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ Β«ΠΎΠ±ΡΠ°Π·Β» ΡΠΎΠ»ΠΈ, ΠΎΡΠ½Π΅ΡΡΠΈ Π΅Π³ΠΎ Π½Π° Π΄ΡΡΠ³ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΡΠ°ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ. ΠΠ°ΡΠΈ ΡΠΎΠ»ΠΈ Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Ρ, ΠΊΠ°ΠΊ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Π΄Π²Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΎΠ»ΠΈ. Π ΠΎΠ»Ρ Π»ΠΈΠ±ΠΎ Π΅ΡΡΡ, Π»ΠΈΠ±ΠΎ Π΅Ρ Π½Π΅Ρ, Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠΌΡΡΠ»Π΅ ΡΡΠΎ singleton. ΠΡ ΠΈ Π²-ΡΡΠ΅ΡΡΠΈΡ , Π²Π½ΡΡΡΠΈ Π²ΡΠ΅ΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΡΠΎΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅Π»Π΅ΠΏΠΎ β Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅, Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ°Π·Π½Π°Ρ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΏΠ»ΠΎΡ
Π― ΠΎΠ±Π΅ΡΠ°Π» ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ 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
ΠΠ΄Π΅ΡΡ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π½ΡΠ°Π½Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Π»ΠΈΡΡ ΠΏΠΎΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²ΠΊΠ»ΡΡΠ°Ρ hostname. ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ·Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ. ΠΠ»ΠΎΡ Π°Ρ ΠΈΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ advertise_uri Π°Π΄ΡΠ΅Ρ 0.0.0.0, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ IP-Π°Π΄ΡΠ΅Ρ, Π° Π½Π΅ bind ΡΠΎΠΊΠ΅ΡΠ°. ΠΠ΅Π· Π½Π΅Π³ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Cartridge ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π΅ Π΄Π°ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ·Π΅Π» Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ advertise_uri.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π³ΠΎΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ systemd-ΡΠ½ΠΈΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Cartridge ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Ρ.Π½. instantiated-ΡΠ½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ:
$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ HTTP-ΠΏΠΎΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Cartridge ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β 8080. ΠΠ°ΠΉΠ΄ΡΠΌ Π½Π° Π½Π΅Π³ΠΎ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ:
ΠΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ Ρ
ΠΎΡΡ ΠΈ Π·Π°ΠΏΡΡΠ΅Π½Ρ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠ°ΡΡΡΠΈΠ΄ΠΆ ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π½Π°Π΅Ρ, ΠΊΡΠΎ Ρ ΠΊΠ΅ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΆΠ΄ΡΡ Π½Π°ΡΠΈΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. Π Ρ Π½Π°Ρ Π²ΡΠ±ΠΎΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠΎΠΉ: ΠΆΠΈΠ·Π½Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΠΎΡΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, Π½Π°Π·Π½Π°ΡΠΈΠΌ ΠΈΠΌ ΡΠΎΠ»ΠΈ, ΠΈ Π½Π° ΡΡΠΎΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΠΌ.
ΠΠ°Π»ΡΡΠΌ ΠΊΡΡΠΆΠ΅ΡΠΊΡ Π»ΡΠ±ΠΈΠΌΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠΊΠ° ΠΈ ΡΠ°ΡΡΠ»Π°Π±ΠΈΠΌΡΡ ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ»Π³ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΡΠΎΠ³ΠΈ
Π ΡΡΠΎ ΠΈΡΠΎΠ³ΠΈ? ΠΡΠΎΠ±ΡΠΉΡΠ΅, ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ, ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ, Π·Π°Π²ΠΎΠ΄ΠΈΡΠ΅ ΡΠΈΠΊΠ΅ΡΡ Π½Π° Π³ΠΈΡΡ Π°Π±Π΅.
Π‘ΡΡΠ»ΠΊΠΈ
[1]
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com