Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

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 แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ›แƒ–แƒ "Hello, World!" แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜. แƒจแƒ”แƒ•แƒ”แƒชแƒแƒ“แƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒฃแƒงแƒแƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ, แƒแƒ“แƒ แƒ” แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก (แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒ—แƒแƒ•แƒแƒ“ แƒฉแƒแƒ แƒฉแƒแƒก แƒฉแƒแƒ—แƒ•แƒšแƒ˜แƒ—):

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

แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒฎแƒ”แƒฎแƒ˜แƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒชแƒœแƒแƒ‘แƒ˜แƒกแƒ›แƒแƒงแƒ•แƒแƒ แƒ” แƒฃแƒ‘แƒ แƒแƒšแƒ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒฎแƒกแƒœแƒแƒก แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜, แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒก แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ›แƒแƒฃแƒกแƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒขแƒ™แƒ‘แƒ”แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฏแƒ”แƒ  แƒœแƒแƒแƒ“แƒ แƒ”แƒ•แƒ˜แƒ แƒ’แƒแƒฎแƒแƒ แƒ”แƒ‘แƒ. แƒฏแƒ”แƒ แƒฏแƒ”แƒ แƒแƒ‘แƒ˜แƒ—, แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ•แƒ”แƒ แƒแƒคแƒ”แƒ แƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ— แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒ แƒ“แƒ แƒแƒ แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ™แƒแƒ“แƒ˜.

แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ

แƒฌแƒแƒ แƒ›แƒแƒ˜แƒ“แƒ’แƒ˜แƒœแƒ”แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ’แƒ”แƒ’แƒ›แƒแƒ•แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒก แƒ“แƒ แƒจแƒ”แƒแƒ“แƒ’แƒ˜แƒœแƒแƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒ“แƒฆแƒ”แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ“แƒแƒฎแƒแƒขแƒ•แƒแƒก แƒ“แƒ แƒ›แƒแƒกแƒ–แƒ” แƒ•แƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ— แƒกแƒแƒ› แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก: แƒ™แƒแƒ แƒ˜แƒ‘แƒญแƒ”, แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ–แƒ” แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒจแƒ˜. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— vshard-แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— vshard-แƒ แƒแƒฃแƒขแƒ”แƒ แƒก แƒ“แƒ vshard-storage-แƒก แƒกแƒฅแƒ”แƒ›แƒแƒก. แƒแƒ แƒช แƒ™แƒแƒ แƒ˜แƒ‘แƒญแƒ” แƒ“แƒ แƒแƒ แƒช แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ  แƒจแƒ”แƒ“แƒ˜แƒแƒœ แƒกแƒแƒชแƒแƒ•แƒ–แƒ”; แƒกแƒฌแƒแƒ แƒ”แƒ“ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜, แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒช แƒ˜แƒก แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒ”แƒก แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ  แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ”แƒœแƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ›แƒแƒก, แƒ แƒแƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒแƒ•แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒฃแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ. แƒฉแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒœแƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ”แƒก แƒ“แƒแƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  Tarantool-แƒ–แƒ” - แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒฏแƒ’แƒฃแƒคแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒแƒ–แƒ แƒ˜ แƒแƒ  แƒแƒฅแƒ•แƒก vshard-แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒ™แƒแƒ แƒ˜แƒ‘แƒญแƒ˜แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ”แƒ‘แƒ–แƒ” แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒแƒก. แƒ แƒแƒขแƒแƒ› แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒกแƒ”แƒ แƒคแƒ˜แƒœแƒ’แƒ˜ แƒฅแƒกแƒ”แƒšแƒจแƒ˜, แƒ—แƒฃ แƒ”แƒก แƒฃแƒ™แƒ•แƒ” แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒแƒ? แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜. แƒแƒœแƒฃ, แƒ แƒแƒ’แƒแƒ แƒช gateway, แƒแƒกแƒ”แƒ•แƒ” vshard.router.cfg แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”แƒ แƒ— แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜, แƒ“แƒ แƒ›แƒ˜แƒ”แƒชแƒ˜แƒ— แƒ›แƒแƒ— แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒ.

แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒ”แƒขแƒแƒžแƒ–แƒ” แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒงแƒ แƒกแƒแƒ› แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜, แƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒ”แƒ แƒ˜แƒกแƒแƒก, แƒแƒ  แƒ›แƒ˜แƒœแƒ“แƒ แƒ•แƒ˜แƒคแƒ˜แƒฅแƒ แƒ Tarnatool-แƒ˜แƒก แƒกแƒแƒ›แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ–แƒ”. แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ•แƒแƒขแƒแƒ แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒแƒ›แƒแƒฌแƒ›แƒ, แƒ แƒแƒ› แƒกแƒฌแƒแƒ แƒแƒ“ แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ” gateway. แƒแƒœ แƒ˜แƒฅแƒœแƒ”แƒ‘ แƒ›แƒกแƒฃแƒ แƒก แƒฉแƒ”แƒ›แƒ˜ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ. แƒ แƒแƒขแƒแƒ› แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒ˜แƒแƒ แƒ แƒกแƒแƒ›แƒ˜ แƒแƒกแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ? แƒแƒกแƒ” แƒ“แƒแƒ˜แƒ‘แƒแƒ“แƒ แƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ. แƒ แƒแƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ luash แƒ›แƒแƒ“แƒฃแƒšแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒกแƒแƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ แƒชแƒ˜แƒ™แƒšแƒก แƒ›แƒแƒ แƒ—แƒแƒ•แƒก แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜. แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜ แƒแƒ—แƒฎแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜แƒ - แƒ™แƒแƒ แƒ˜แƒ‘แƒญแƒ”, แƒ แƒแƒฃแƒขแƒ”แƒ แƒ˜, แƒกแƒแƒชแƒแƒ•แƒ˜, แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜. แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒ”แƒขแƒ˜ แƒ˜แƒงแƒแƒก. แƒงแƒ•แƒ”แƒšแƒ แƒ แƒแƒšแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒ”แƒ แƒ— แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜ แƒ“แƒ แƒ”แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒ“แƒ แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒ“แƒแƒ“แƒ’แƒ›แƒแƒก แƒแƒœ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒฉแƒ•แƒ”แƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš Tarantool แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒ›แƒ˜แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ‘แƒ— แƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก, แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”:

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒขแƒแƒžแƒแƒšแƒแƒ’แƒ˜แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ

แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒกแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ แƒแƒšแƒ”แƒ‘แƒ˜, แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒกแƒแƒ“แƒ›แƒ”. แƒ“แƒ แƒ”แƒก "แƒกแƒแƒ“แƒฆแƒแƒช" แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒฃแƒ™แƒ•แƒ” แƒแƒฆแƒ•แƒœแƒ˜แƒจแƒœแƒ”. แƒ›แƒแƒกแƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ™แƒแƒกแƒ”แƒขแƒฃแƒ แƒ˜ แƒขแƒแƒžแƒแƒšแƒแƒ’แƒ˜แƒแƒ. แƒแƒฅ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ 3 Tarantool แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก 5 แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ˜:

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ˜แƒ— แƒ•แƒ”แƒžแƒงแƒ แƒแƒ‘แƒ˜แƒ— แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒก แƒแƒ“แƒ”แƒ•แƒœแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก แƒแƒ แƒคแƒแƒ–แƒ˜แƒแƒœแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ’แƒ•แƒกแƒฃแƒ แƒก, แƒ˜แƒก แƒฏแƒ”แƒ  แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ“แƒ แƒ›แƒ–แƒแƒ“ แƒแƒ แƒ˜แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ”แƒแƒ แƒ” แƒ”แƒขแƒแƒžแƒ˜ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒแƒ•แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒก. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ”แƒ แƒ—แƒ˜ แƒ”แƒ’แƒ–แƒ”แƒ›แƒžแƒšแƒแƒ แƒ˜ แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒ˜แƒฃแƒฌแƒ•แƒ“แƒแƒ›แƒ”แƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒก, แƒชแƒฃแƒ“แƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ. แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒฌแƒ˜แƒœแƒแƒกแƒฌแƒแƒ  แƒ“แƒแƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒก.

แƒแƒกแƒ”แƒ•แƒ” แƒขแƒแƒžแƒแƒšแƒแƒ’แƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒช แƒแƒ แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒšแƒ˜แƒ“แƒ”แƒ แƒ˜. แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒกแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒ. แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜แƒ, แƒ—แƒฃแƒ›แƒชแƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ’แƒแƒ›แƒแƒœแƒแƒ™แƒšแƒ˜แƒกแƒ”แƒ‘แƒ˜. แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒ›แƒแƒ›แƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒแƒ  แƒ”แƒจแƒ˜แƒœแƒ˜แƒแƒ— แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒแƒ“ แƒ“แƒแƒฌแƒ”แƒ แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช, แƒ แƒแƒช แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก, แƒแƒ แƒฏแƒ”แƒ  แƒแƒ  แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒก. แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒšแƒ˜แƒ“แƒ”แƒ แƒ˜แƒก แƒœแƒ˜แƒจแƒแƒœแƒ˜.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒ แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒขแƒฃแƒšแƒ˜ แƒ แƒแƒšแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก แƒแƒกแƒ”แƒ— แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒแƒจแƒ˜, แƒฉแƒแƒ แƒฉแƒแƒ› แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ แƒ—แƒแƒก แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ แƒแƒ’แƒแƒ แƒ›แƒ”. แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜แƒ, แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ 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 (แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ˜แƒก แƒ–แƒแƒ แƒ˜) แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ” แƒ›แƒแƒ“แƒฃแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Tarantool-แƒจแƒ˜ แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ netbox-แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ, แƒ—แƒฃ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒ แƒ˜แƒ‘แƒญแƒ”แƒก แƒกแƒฃแƒ แƒก แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒกแƒ—แƒฎแƒแƒ•แƒแƒก แƒ’แƒแƒœแƒ แƒ˜แƒ’แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒแƒฎแƒšแƒแƒ•แƒ”, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ”แƒ แƒ—แƒ˜ แƒ“แƒฆแƒ” แƒ“แƒแƒ”แƒšแƒแƒ“แƒ.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒขแƒแƒšแƒ”แƒ แƒแƒœแƒขแƒแƒ‘แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ. แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก SWIM แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒก แƒฏแƒแƒœแƒ›แƒ แƒ—แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก [4]. แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒฃแƒชแƒ•แƒšแƒ˜แƒแƒœ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒก "แƒญแƒแƒ แƒ”แƒ‘แƒก" UDP-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— - แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ›แƒ”แƒ–แƒแƒ‘แƒšแƒ”แƒ‘แƒก แƒฃแƒแƒฎแƒšแƒ”แƒก แƒแƒ›แƒ‘แƒ”แƒ‘แƒก แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒแƒ‘แƒ”แƒœ. แƒ—แƒฃ แƒ›แƒแƒฃแƒšแƒแƒ“แƒœแƒ”แƒšแƒแƒ“ แƒžแƒแƒกแƒฃแƒฎแƒ˜ แƒแƒ  แƒ›แƒแƒ•แƒ˜แƒ“แƒ, แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒ˜ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ”แƒญแƒ•แƒก, แƒ แƒแƒ› แƒ แƒแƒฆแƒแƒช แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜แƒ แƒ“แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒก แƒ˜แƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒ˜แƒ™แƒ•แƒ“แƒ˜แƒšแƒก แƒ“แƒ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒงแƒ•แƒ”แƒšแƒแƒก แƒแƒ› แƒแƒ›แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒแƒ› แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒแƒฌแƒงแƒแƒ‘แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒก แƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ“แƒ แƒ—แƒฃ แƒšแƒ˜แƒ“แƒ”แƒ แƒ˜ แƒ›แƒแƒฃแƒšแƒแƒ“แƒœแƒ”แƒšแƒแƒ“ แƒจแƒ”แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ แƒ”แƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒแƒก, แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒก แƒ›แƒ˜แƒกแƒ˜ แƒ แƒแƒšแƒ˜ แƒ“แƒ แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“ แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒš แƒ แƒแƒšแƒ”แƒ‘แƒก.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒแƒฅ แƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฎแƒจแƒ˜แƒ แƒ›แƒ แƒฌแƒ˜แƒœ แƒ“แƒ แƒฃแƒ™แƒแƒœ แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜ แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ แƒ—แƒแƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒฃแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒแƒ‘แƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—. แƒœแƒแƒ—แƒšแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ’แƒ•แƒ”แƒกแƒ›แƒแƒ“แƒ”แƒก แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒงแƒแƒ—, แƒ แƒแƒ› แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒแƒ  แƒ’แƒแƒขแƒงแƒ“แƒ”แƒ‘แƒ แƒšแƒ˜แƒ“แƒ”แƒ แƒ˜แƒก แƒแƒฆแƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒ“แƒ แƒ’แƒ•แƒ˜แƒ แƒ’แƒ•แƒ˜แƒœแƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ’แƒแƒœแƒชแƒ“แƒ, แƒ แƒแƒ› แƒ แƒแƒšแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜แƒ. แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒกแƒ”แƒ, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ Tarantool แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒจแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ˜แƒ’แƒ˜ แƒคแƒฃแƒœแƒ“แƒแƒ›แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ แƒแƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒชแƒฎแƒแƒ•แƒ แƒแƒ‘แƒ“แƒ”แƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒ™แƒแƒ“แƒ˜แƒก แƒ‘แƒแƒ–แƒแƒจแƒ˜. แƒ“แƒ Tarantool-แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒ›แƒแƒ•แƒ” แƒ™แƒแƒ“แƒ˜แƒก แƒ‘แƒแƒ–แƒ˜แƒ“แƒแƒœ, แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒแƒ  แƒ˜แƒงแƒแƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒกแƒ˜แƒฃแƒ แƒžแƒ แƒ˜แƒ–แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก. แƒแƒกแƒ”แƒ•แƒ”, แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒฃแƒจแƒ•แƒแƒ— แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฅแƒชแƒ”แƒ•แƒ แƒแƒกแƒ”แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ.

Docker-แƒ˜แƒกแƒ’แƒแƒœ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ•แƒ˜แƒฆแƒแƒ— แƒ แƒแƒšแƒ˜ "แƒ˜แƒ›แƒ˜แƒฏแƒ˜", แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒ˜แƒ’แƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒแƒ— แƒ˜แƒฅ. แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ แƒแƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ˜แƒ–แƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜. แƒแƒกแƒ”แƒ•แƒ”, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒแƒ แƒ˜ แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒ–แƒ”. แƒ แƒแƒšแƒ˜ แƒแƒœ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒแƒœ แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก; แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒ—, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ˜แƒœแƒ’แƒšแƒ˜. แƒ“แƒ แƒ›แƒ”แƒกแƒแƒ›แƒ”, แƒ แƒแƒšแƒ”แƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒ‘แƒกแƒฃแƒ แƒ“แƒ˜ - แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.

แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜

แƒ›แƒ” แƒ“แƒแƒ•แƒžแƒ˜แƒ แƒ“แƒ˜, แƒ แƒแƒ› แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒแƒก. แƒกแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒฉแƒแƒ แƒฉแƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก 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 แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒ“แƒ แƒแƒ แƒ แƒกแƒแƒ™แƒ”แƒขแƒ˜. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก, แƒแƒกแƒ” แƒ แƒแƒ› แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ  แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ advertise_uri-แƒ˜แƒ—.

แƒแƒฎแƒšแƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒ–แƒแƒ“ แƒแƒ แƒ˜แƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ systemd แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜ แƒแƒ  แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒ”แƒ แƒ—แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก, แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ–แƒ” แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”.แƒฌ. แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒแƒกแƒ”:

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

แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ“แƒแƒ•แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ— HTTP แƒžแƒแƒ แƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜ แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒก - 8080. แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ›แƒแƒกแƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒฎแƒ”แƒ“แƒแƒ—:

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฏแƒ”แƒ  แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ•แƒแƒ–แƒœแƒแƒ› แƒฏแƒ”แƒ  แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒ•แƒ˜แƒœ แƒ•แƒ˜แƒกแƒ—แƒแƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒแƒก แƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“ แƒ•แƒ”แƒ  แƒ˜แƒฆแƒ”แƒ‘แƒก, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒ˜แƒ“แƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก: แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ” แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ—. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ”แƒ‘แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜, แƒ›แƒ˜แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ‘แƒ— แƒ›แƒแƒ— แƒ แƒแƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒแƒ› แƒ”แƒขแƒแƒžแƒ–แƒ” แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ˜แƒ—แƒ•แƒแƒšแƒแƒก แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒแƒ“.

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒกแƒฎแƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒญแƒ˜แƒฅแƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒšแƒ˜ แƒกแƒแƒกแƒ›แƒ”แƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒ•แƒ˜แƒกแƒ•แƒ”แƒœแƒแƒ— แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ.

Tarantool Cartridge: Lua backend sharding แƒกแƒแƒ› แƒฎแƒแƒ–แƒจแƒ˜

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒ แƒแƒ’แƒแƒ แƒ˜แƒ แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜? แƒกแƒชแƒแƒ“แƒ”แƒ—, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ˜แƒ’แƒ˜, แƒ“แƒแƒขแƒแƒ•แƒ”แƒ— แƒ’แƒแƒ›แƒแƒฎแƒ›แƒแƒฃแƒ แƒ”แƒ‘แƒ, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ‘แƒ˜แƒšแƒ”แƒ—แƒ”แƒ‘แƒ˜ Github-แƒ–แƒ”.

แƒšแƒ˜แƒขแƒ”แƒ แƒแƒขแƒฃแƒ แƒ

[1] Tarantool ยป 2.2 ยป Reference ยป Rocks reference ยป Module vshard

[2] แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒœแƒ•แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ— Alfa-Bank-แƒ˜แƒก แƒกแƒแƒ˜แƒœแƒ•แƒ”แƒกแƒขแƒ˜แƒชแƒ˜แƒ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜ Tarantool-แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜

[3] แƒแƒฎแƒแƒšแƒ˜ แƒ—แƒแƒแƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒšแƒ˜แƒœแƒ’แƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ: แƒขแƒ แƒแƒœแƒกแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ Tarantool-แƒ–แƒ” แƒ’แƒแƒ“แƒแƒกแƒ•แƒšแƒ˜แƒ—

[4] SWIM - แƒ™แƒแƒกแƒ”แƒขแƒฃแƒ แƒ˜ แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - แƒขแƒแƒ แƒแƒœแƒขแƒฃแƒšแƒ˜/แƒ™แƒแƒ แƒขแƒ แƒ˜แƒฏแƒ˜

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ