Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π’ΠΎ Mail.ru Group ΠΈΠΌΠ°ΠΌΠ΅ Tarantool - ΠΎΠ²Π° Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ‚ΠΈΠ²Π΅Π½ сСрвСр Π²ΠΎ Π›ΡƒΠ°, кој исто Ρ‚Π°ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ?). Π‘Ρ€Π·ΠΎ Π΅ ΠΈ ΠΊΡƒΠ», Π½ΠΎ моТноститС Π½Π° Π΅Π΄Π΅Π½ сСрвСр сè ΡƒΡˆΡ‚Π΅ Π½Π΅ сС Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ. Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎΡ‚ΠΎ ΡΠΊΠ°Π»ΠΈΡ€Π°ΡšΠ΅ исто Ρ‚Π°ΠΊΠ° Π½Π΅ Π΅ Π»Π΅ΠΊ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Tarantool ΠΈΠΌΠ° Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡ€Π°ΡšΠ΅ - ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ vshard [1]. Π’ΠΎΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сподСлуватС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΏΡ€Π΅ΠΊΡƒ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ сСрвСри, Π½ΠΎ ΠΌΠΎΡ€Π° Π΄Π° Π³ΠΈ прСскокнуватС Π·Π° Π΄Π° Π³ΠΈ поставитС ΠΈ Π΄Π° ја ΠΏΡ€ΠΈΠΊΠ°Ρ‡ΠΈΡ‚Π΅ Π΄Π΅Π»ΠΎΠ²Π½Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ°.

Π”ΠΎΠ±Ρ€Π° вСст: собравмС Π½Π΅ΠΊΠΎΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ снимки (Π½Π° ΠΏΡ€ [2], [3]) ΠΈ создадС Π΄Ρ€ΡƒΠ³Π° Ρ€Π°ΠΌΠΊΠ° која Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ќС Π³ΠΎ поСдностави Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π’Π°Ρ€Π°Π½Ρ‚ΡƒΠ» ΠΊΠ΅Ρ€Ρ‚Ρ€ΠΈΡŸ Π΅ Π½ΠΎΠ²Π° Ρ€Π°ΠΌΠΊΠ° Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° слоТСни дистрибуирани систСми. Π’ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сС фокусиратС Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π΄Π΅Π»ΠΎΠ²Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° намСсто Π΄Π° Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚Π΅ инфраструктурни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. ΠŸΠΎΠ΄ΠΎΠ»Ρƒ ќС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΎΠ²Π°Π° Ρ€Π°ΠΌΠΊΠ° ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ дистрибуирани услуги ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја.

Π¨Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚?

ИмамС Ρ‚Π°Ρ€Π°Π½Ρ‚ΡƒΠ»Π°, ΠΈΠΌΠ°ΠΌΠ΅ Π²ΡˆΠ°Ρ€Π΄ - ΡˆΡ‚ΠΎ повСќС Π΄Π° сакаш?

ΠŸΡ€Π²ΠΎ, Ρ‚ΠΎΠ° Π΅ ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅ Π½Π° погодност. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° 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

Π—Π½Π°Ρ‡ΠΈ, ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π΅Π½ јазол ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° ΠΈΠ΄Π½Π°Ρ‚Π° ΡΠΊΡ€ΡˆΠ΅Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. Π˜ΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°Ρ‡ΠΊΠΈΠΎΡ‚ Π»Π°ΠΈΠΊ ΠΌΠΎΠΆΠ΅ вСднаш Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π²Π΅Π±-ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚, Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° кластСр ΠΎΠ΄ Π΅Π΄Π΅Π½ јазол со Π³Π»ΡƒΠ²Ρ‡Π΅Ρ‚ΠΎ ΠΈ Π΄Π° ΡƒΠΆΠΈΠ²Π° Π²ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚, Π½ΠΎ Ρ€Π°Π½ΠΎ Π΅ Π΄Π° сС Ρ€Π°Π΄ΡƒΠ²Π°ΠΌΠ΅. ДосСга, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΈΡˆΡ‚ΠΎ корисно, ΠΏΠ° ќС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΡ†Π½Π°, Π½ΠΎ сСга Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° сС напишС ΠΊΠΎΠ΄.

Развој Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

ЗамислСтС, Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ кој ΠΌΠΎΡ€Π° Π΄Π° ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π΄Π° Π³ΠΈ Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π° ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΠΈΠ·Π²Π΅ΡˆΡ‚Π°Ρ˜ Сднаш Π΄Π½Π΅Π²Π½ΠΎ.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

ΠŸΠΎΡ‡Π½ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° Ρ†Ρ€Ρ‚Π°ΠΌΠ΅ Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ ΠΈ ставамС Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Π½Π΅Π³ΠΎ: ΠΏΠΎΡ€Ρ‚Π°, ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΈ распорСдувач. ΠŸΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ користимС vshard ΠΊΠ°ΠΊΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅, Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ vshard-Ρ€ΡƒΡ‚Π΅Ρ€ ΠΈ vshard-storage Π²ΠΎ ΡˆΠ΅ΠΌΠ°Ρ‚Π°. Ниту ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π°, Π½ΠΈΡ‚Ρƒ распорСдувачот Π½Π΅ΠΌΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π° пристапат Π΄ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ; Π·Π° Ρ‚ΠΎΠ° слуТи Ρ€ΡƒΡ‚Π΅Ρ€ΠΎΡ‚, Π·Π° Ρ‚ΠΎΠ° Π΅ создадСн.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Овој Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π³ΠΎ прСтставува Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠ½Π° ΡˆΡ‚ΠΎ ќС Π³ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌΠ΅ Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ бидСјќи ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ‚ апстрактно. Π‘Γ¨ ΡƒΡˆΡ‚Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π° ќС сС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π° Π½Π° вистинскиот Tarantool - ајдС Π΄Π° Π³ΠΈ Π³Ρ€ΡƒΠΏΠΈΡ€Π°ΠΌΠ΅ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΏΠΎ процСс.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

НСма смисла Π΄Π° сС Ρ‡ΡƒΠ²Π°Π°Ρ‚ vshard-Ρ€ΡƒΡ‚Π΅Ρ€ ΠΈ ΠΏΠΎΡ€Ρ‚Π°Ρ‚Π° Π½Π° посСбни ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ. Π—ΠΎΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° ΡƒΡˆΡ‚Π΅ Сднаш Π΄Π° сурфамС Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π°ΠΊΠΎ ΠΎΠ²Π° Π΅ вСќС одговорност Π½Π° Ρ€ΡƒΡ‚Π΅Ρ€ΠΎΡ‚? Π’ΠΈΠ΅ ΠΌΠΎΡ€Π° Π΄Π° сС Π²ΠΎΠ΄Π°Ρ‚ Π²ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° истиот процСс. Односно, ΠΈ gateway ΠΈ vshard.router.cfg сС ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ Π΅Π΄Π΅Π½ процСс ΠΈ Π½Π΅ΠΊΠ° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π°Π°Ρ‚ Π»ΠΎΠΊΠ°Π»Π½ΠΎ.

Π’ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΡšΠ΅, бСшС ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΄Π° сС Ρ€Π°Π±ΠΎΡ‚ΠΈ со Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ, Π½ΠΎ јас, ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡, Π΄ΠΎΠ΄Π΅ΠΊΠ° Π³ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΠΌ ΠΊΠΎΠ΄ΠΎΡ‚, Π½Π΅ сакам Π΄Π° размислувам Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° Tarnatool. Π’Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠ°ΠΌ тСстови ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€Π°ΠΌ Π΄Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ сум напишал gateway. Или ΠΌΠΎΠΆΠ΅Π±ΠΈ сакам Π΄Π° ΠΈΠΌ ΠΏΠΎΠΊΠ°ΠΆΠ°ΠΌ карактСристика Π½Π° ΠΌΠΎΠΈΡ‚Π΅ ΠΊΠΎΠ»Π΅Π³ΠΈ. Π—ΠΎΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΠΎΠΌΠΈΠ½Π°ΠΌ Π½ΠΈΠ· ΠΌΠ°ΠΊΠ° Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠΎΠΏΠΈΠΈ? Π’Π°ΠΊΠ° сС Ρ€ΠΎΠ΄ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚ Π½Π° ΡƒΠ»ΠΎΠ³ΠΈ. Π£Π»ΠΎΠ³Π° Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ» Π·Π° Π»ΡƒΡˆ, Ρ‡ΠΈΡ˜ ΠΆΠΈΠ²ΠΎΡ‚Π΅Π½ циклус Π³ΠΎ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π° ΠšΠ°Ρ€Ρ‚Ρ€ΠΈΡŸ. Π’ΠΎ овој ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠΌΠ° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ ΠΎΠ΄ Π½ΠΈΠ² - ΠΏΠΎΡ€Ρ‚Π°Π», Ρ€ΡƒΡ‚Π΅Ρ€, ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅, распорСдувач. МоТС Π΄Π° ΠΈΠΌΠ° повСќС Π²ΠΎ нСкој Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π‘ΠΈΡ‚Π΅ ΡƒΠ»ΠΎΠ³ΠΈ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠ°Ρ‚ Π²ΠΎ Π΅Π΄Π΅Π½ процСс, ΠΈ Ρ‚ΠΎΠ° ќС Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

И ΠΊΠΎΠ³Π° станува Π·Π±ΠΎΡ€ Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° сцСна ΠΈΠ»ΠΈ производство, Ρ‚ΠΎΠ³Π°Ρˆ Π½Π° сСкој процСс Π½Π° Tarantool ќС ΠΌΡƒ Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ сопствСн сСт Π½Π° ΡƒΠ»ΠΎΠ³ΠΈ Π²ΠΎ зависност ΠΎΠ΄ хардвСрскитС моТности:

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π£ΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°Π΄Π΅ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ ΡƒΠ»ΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠΎΡ€Π° Π΄Π° сС складираат Π½Π΅ΠΊΠ°Π΄Π΅. И ΠΎΠ²Π° β€žΠ½Π΅ΠΊΠ°Π΄Π΅β€œ Π΅ дистрибуираната ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°, која вСќС ја спомСнав ΠΏΠΎΠ³ΠΎΡ€Π΅. НајваТно Π·Π° Π½Π΅Π³ΠΎ Π΅ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°Ρ‚Π° Π½Π° кластСрот. Π•Π²Π΅ 3 Π³Ρ€ΡƒΠΏΠΈ Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ 5 процСси Π½Π° Tarantool:

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

НС сакамС Π΄Π° Π³ΡƒΠ±ΠΈΠΌΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π·Π°Ρ‚ΠΎΠ° Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ Π³ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° процСситС ΡˆΡ‚ΠΎ сС Π²ΠΎΠ΄Π°Ρ‚. ΠšΠ°Ρ€Ρ‚Ρ€ΠΈΡŸΠΎΡ‚ ја слСди ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π΄Π²ΠΎΡ„Π°Π·Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅. ΠžΡ‚ΠΊΠ°ΠΊΠΎ сакамС Π΄Π° ја Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, ΠΏΡ€Π²ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π° Π΄Π°Π»ΠΈ ситС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ†ΠΈ сС достапни ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π΄Π° ја ΠΏΡ€ΠΈΡ„Π°Ρ‚Π°Ρ‚ Π½ΠΎΠ²Π°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. По ΠΎΠ²Π°, Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Ρ„Π°Π·Π° ја ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π’Π°ΠΊΠ°, Π΄ΡƒΡ€ΠΈ ΠΈ Π°ΠΊΠΎ Π΅Π΄Π½Π° копија сС ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° Π΅ ΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΎ нСдостапна, Π½ΠΈΡˆΡ‚ΠΎ лошо Π½Π΅ΠΌΠ° Π΄Π° сС случи. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Сдноставно Π½Π΅ΠΌΠ° Π΄Π° сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΠΎΠ΄Π½Π°ΠΏΡ€Π΅Π΄ ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°.

Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ Π·Π° Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π΅ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ Ρ‚Π°ΠΊΠΎΠ² Π²Π°ΠΆΠ΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ ΠΊΠ°ΠΊΠΎ Π»ΠΈΠ΄Π΅Ρ€ Π½Π° сСкоја Π³Ρ€ΡƒΠΏΠ° Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°. ΠžΠ±ΠΈΡ‡Π½ΠΎ ΠΎΠ²Π° Π΅ ΠΊΠΎΠΏΠΈΡ˜Π°Ρ‚Π° ΡˆΡ‚ΠΎ сС снима. ΠžΡΡ‚Π°Π½Π°Ρ‚ΠΈΡ‚Π΅ Π½Π°Ρ˜Ρ‡Π΅ΡΡ‚ΠΎ сС само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅, ΠΈΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° исклучоци. ПонСкогаш Ρ…Ρ€Π°Π±Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π½Π΅ сС ΠΏΠ»Π°ΡˆΠ°Ρ‚ ΠΎΠ΄ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΈ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ, Π½ΠΎ ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΈ, Π±Π΅Π· Ρ€Π°Π·Π»ΠΈΠΊΠ° Π½Π° сС, Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π²Ρ€ΡˆΠ°Ρ‚ Π΄Π²Π°ΠΏΠ°Ρ‚ΠΈ. Π—Π° ΠΎΠ²Π° постои Π·Π½Π°ΠΊ Π½Π° Π»ΠΈΠ΄Π΅Ρ€.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π–ΠΈΠ²ΠΎΡ‚ΠΎΡ‚ Π½Π° ΡƒΠ»ΠΎΠ³ΠΈΡ‚Π΅

Π—Π° Π΄Π° постои апстрактна ΡƒΠ»ΠΎΠ³Π° Π²ΠΎ Ρ‚Π°ΠΊΠ²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° ΠΌΠΎΡ€Π° Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π° со Π½ΠΈΠ². Π‘Π΅ΠΊΠ°ΠΊΠΎ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°Ρ‚Π° сС случува Π±Π΅Π· Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° процСсот 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 Π·Π° Π΄Π° Π³ΠΎ слСди Π·Π΄Ρ€Π°Π²Ρ˜Π΅Ρ‚ΠΎ [4]. Накратко, процСситС Ρ€Π°Π·ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ β€žΠ³Π»Π°ΡΠΈΠ½ΠΈβ€œ Π΅Π΄Π½ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€Π΅ΠΊΡƒ UDP - сСкој процСс ΠΈΠΌ Π³ΠΈ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° своитС сосСди Π½Π°Ρ˜Π½ΠΎΠ²ΠΈΡ‚Π΅ вСсти, Π° Ρ‚ΠΈΠ΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Π°Ρ‚. Ако одСднаш ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π½Π΅ дојдС, Π’Π°Ρ€Π°Π½Ρ‚ΡƒΠ» ΠΏΠΎΡ‡Π½ΡƒΠ²Π° Π΄Π° сС сомнСва Π΄Π΅ΠΊΠ° Π½Π΅ΡˆΡ‚ΠΎ Π½Π΅ Π΅ Π²ΠΎ Ρ€Π΅Π΄, Π° ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ Π²Ρ€Π΅ΠΌΠ΅ ја Ρ€Π΅Ρ†ΠΈΡ‚ΠΈΡ€Π° смртта ΠΈ ΠΏΠΎΡ‡Π½ΡƒΠ²Π° Π΄Π° ΠΈΠΌ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° ситС ΠΎΠΊΠΎΠ»Ρƒ ΠΎΠ²Π°Π° вСст.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π’Ρ€Π· основа Π½Π° овој ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Cartridge ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° автоматско ΠΏΡ€ΠΎΡ†Π΅ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΈ. БСкој процСс ја слСди ΡΠ²ΠΎΡ˜Π°Ρ‚Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π° ΠΈ Π°ΠΊΠΎ Π»ΠΈΠ΄Π΅Ρ€ΠΎΡ‚ одСднаш прСстанС Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°, Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ја ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅ Π½Π΅Ρ˜Π·ΠΈΠ½Π°Ρ‚Π° ΡƒΠ»ΠΎΠ³Π°, Π° Cartridge соодвСтно Π³ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° ΡƒΠ»ΠΎΠ³ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π’ΡƒΠΊΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΈ, бидСјќи чСстото ΠΏΡ€Π΅Ρ„Ρ€Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π°ΠΏΡ€Π΅Π΄-Π½Π°Π·Π°Π΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ‚Π΅ автоматско ΠΎΡ‚ΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎ случаСн ΠΈΠ·Π±ΠΎΡ€. ΠœΠΎΡ€Π° јасно Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌΠ΅ ΡˆΡ‚ΠΎ сС случува ΠΈ Π΄Π° Π±ΠΈΠ΄Π΅ΠΌΠ΅ сигурни Π΄Π΅ΠΊΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π΅ΠΌΠ° Π΄Π° сС ΡΠΊΡ€ΡˆΠΈ ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС сС Π²Ρ€Π°Ρ‚ΠΈ Π»ΠΈΠ΄Π΅Ρ€ΠΎΡ‚ ΠΈ ќС ΠΌΡƒ Π±ΠΈΠ΄Π΅ Π²Ρ€Π°Ρ‚Π΅Π½Π° ΠΊΡ€ΡƒΠ½Π°Ρ‚Π°.

Од сСто ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ чувство Π΄Π΅ΠΊΠ° ΡƒΠ»ΠΎΠ³ΠΈΡ‚Π΅ сС слични Π½Π° микросСрвиситС. Π’ΠΎ извСсна смисла, Ρ‚ΠΈΠ΅ сС Ρ‚ΠΎΠΊΠΌΡƒ Ρ‚ΠΎΠ°, само ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π²ΠΎ процСситС Π½Π° 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. АјдС Π΄Π° ΠΎΠ΄ΠΈΠΌΠ΅ Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΈ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅:

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π“Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠ°ΠΊΠΎ процСситС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚, Ρ‚ΠΈΠ΅ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ. ΠšΠ°Ρ€Ρ‚Ρ€ΠΈΡŸΠΎΡ‚ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π·Π½Π°Π΅ кој со ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ сам Π΄Π° донСсС ΠΎΠ΄Π»ΡƒΠΊΠ°, ΠΏΠ° Π³ΠΈ Ρ‡Π΅ΠΊΠ° Π½Π°ΡˆΠΈΡ‚Π΅ постапки. Но, Π½Π΅ΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΈΠ·Π±ΠΎΡ€: ΠΆΠΈΠ²ΠΎΡ‚ΠΎΡ‚ Π½Π° Π½ΠΎΠ²ΠΈΠΎΡ‚ кластСр Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ јазол. ΠŸΠΎΡ‚ΠΎΠ° ќС Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π²ΠΎ кластСрот, ќС ΠΈΠΌ Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ ΡƒΠ»ΠΎΠ³ΠΈ ΠΈ Π²ΠΎ овој ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСта Π·Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²Ρ€ΡˆΠ΅Π½ΠΎ.

АјдС Π΄Π° истуримС Ρ‡Π°ΡˆΠ° ΠΎΠ΄ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΎΠΌΠΈΠ»Π΅Π½ пијалок ΠΈ Π΄Π° сС ΠΎΠΏΡƒΡˆΡ‚ΠΈΠΌΠ΅ ΠΏΠΎ Π΄ΠΎΠ»Π³Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° Π½Π΅Π΄Π΅Π»Π°. ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи.

Tarantool Cartridge: ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° Lua backend Π²ΠΎ Ρ‚Ρ€ΠΈ Π»ΠΈΠ½ΠΈΠΈ

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄

Кои сС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅? ΠŸΡ€ΠΎΠ±Π°Ρ˜Ρ‚Π΅ Π³ΠΎ, искористСтС Π³ΠΎ, оставСтС ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π±ΠΈΠ»Π΅Ρ‚ΠΈ Π½Π° Github.

Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈ

[1] Tarantool Β» 2.2 Β» Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†Π° Β» Π Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†Π° Π·Π° ΠΊΠ°Ρ€ΠΏΠΈ Β» ΠœΠΎΠ΄ΡƒΠ» vshard

[2] Како Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π²ΠΌΠ΅ Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π½Π° инвСстицискиот бизнис Π½Π° Alfa-Bank Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Tarantool

[3] АрхитСктура Π·Π° Π½Π°ΠΏΠ»Π°Ρ‚Π° Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ˜Π°: Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° со ΠΏΡ€Π΅ΠΌΠΈΠ½ΠΎΡ‚ ΠΊΠΎΠ½ Tarantool

[4] SWIM - ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° кластСр

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - Ρ‚Π°Ρ€Π°Π½Ρ‚ΠΎΠ»/ΠΊΠ΅Ρ€Ρ‚Ρ€ΠΈΡŸ

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€