Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ื‘-Mail.ru Group ื™ืฉ ืœื ื• ืืช Tarantool - ื–ื”ื• ืฉืจืช ื™ื™ืฉื•ืžื™ื ื‘-Lua, ืฉืžืฉืžืฉ ื’ื ื›ื‘ืกื™ืก ื ืชื•ื ื™ื (ืื• ืœื”ื™ืคืš?). ื–ื” ืžื”ื™ืจ ื•ืžื’ื ื™ื‘, ืื‘ืœ ื”ื™ื›ื•ืœื•ืช ืฉืœ ืฉืจืช ืื—ื“ ืขื“ื™ื™ืŸ ืœื ื‘ืœืชื™ ืžื•ื’ื‘ืœื•ืช. ืงื ื” ืžื™ื“ื” ืื ื›ื™ ื”ื•ื ื’ื ืœื ืชืจื•ืคืช ืคืœื, ืื– ืœ-Tarantool ื™ืฉ ื›ืœื™ื ืœืงื ื” ืžื™ื“ื” ืื•ืคืงื™ - ืžื•ื“ื•ืœ vshard [1]. ื–ื” ืžืืคืฉืจ ืœืš ืœืคื–ืจ ื ืชื•ื ื™ื ืขืœ ืคื ื™ ืžืกืคืจ ืฉืจืชื™ื, ืื‘ืœ ืืชื” ืฆืจื™ืš ืœื”ืชืขืกืง ืขื ื–ื” ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืื•ืชื ื•ืœืฆืจืฃ ืืช ื”ื”ื™ื’ื™ื•ืŸ ื”ืขืกืงื™.

ื—ื“ืฉื•ืช ื˜ื•ื‘ื•ืช: ืืกืคื ื• ื›ืžื” ืชืžื•ื ื•ืช ื’ื“ื•ืœื•ืช (ืœืžืฉืœ [2], [3]) ื•ื™ืฆืจื” ืžืกื’ืจืช ื ื•ืกืคืช ืฉืชืคืฉื˜ ืžืฉืžืขื•ืชื™ืช ืืช ื”ืคืชืจื•ืŸ ืœื‘ืขื™ื” ื–ื•.

ืžื—ืกื ื™ืช ื˜ืจื ื˜ื•ืœ ื”ื™ื ืžืกื’ืจืช ื—ื“ืฉื” ืœืคื™ืชื•ื— ืžืขืจื›ื•ืช ืžื‘ื•ื–ืจื•ืช ืžื•ืจื›ื‘ื•ืช. ื–ื” ืžืืคืฉืจ ืœืš ืœื”ืชืžืงื“ ื‘ื›ืชื™ื‘ืช ื”ื™ื’ื™ื•ืŸ ืขืกืงื™ ื‘ืžืงื•ื ืœืคืชื•ืจ ื‘ืขื™ื•ืช ืชืฉืชื™ืช. ืžืชื—ืช ืœื’ื–ืจื” ืืกืคืจ ืœื›ื ืื™ืš ื”ืžืกื’ืจืช ื”ื–ื• ืขื•ื‘ื“ืช ื•ืื™ืš ื›ื•ืชื‘ื™ื ืฉื™ืจื•ืชื™ื ืžื‘ื•ื–ืจื™ื ื‘ืืžืฆืขื•ืชื”.

ื•ืžื” ื‘ื“ื™ื•ืง ื”ื‘ืขื™ื”?

ื™ืฉ ืœื ื• ื˜ืจื ื˜ื•ืœื”, ื™ืฉ ืœื ื• ื•ืฉืจื“ - ืžื” ืขื•ื“ ืืคืฉืจ ืœืจืฆื•ืช?

ืจืืฉื™ืช, ื–ื” ืขื ื™ื™ืŸ ืฉืœ ื ื•ื—ื•ืช. ืชืฆื•ืจืช vshard ืžื•ื’ื“ืจืช ื“ืจืš ื˜ื‘ืœืื•ืช Lua. ื›ื“ื™ ืฉืžืขืจื›ืช ืžื‘ื•ื–ืจืช ืฉืœ ืžืกืคืจ ืชื”ืœื™ื›ื™ Tarantool ืชืคืขืœ ื›ื”ืœื›ื”, ื”ืชืฆื•ืจื” ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื–ื”ื” ื‘ื›ืœ ืžืงื•ื. ืืฃ ืื—ื“ ืœื ืจื•ืฆื” ืœืขืฉื•ืช ืืช ื–ื” ื™ื“ื ื™ืช. ืœื›ืŸ, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื›ืœ ืžื™ื ื™ ืกืงืจื™ืคื˜ื™ื, Ansible ื•ืžืขืจื›ื•ืช ืคืจื™ืกื”.

ืžื—ืกื ื™ืช ืขืฆืžื” ืžื ื”ืœืช ืืช ืชืฆื•ืจืช vshard, ื”ื™ื ืขื•ืฉื” ื–ืืช ืขืœ ืกืžืš ืฉืœื” ืชืฆื•ืจื” ืžื‘ื•ื–ืจืช ืžืฉืœื•. ื–ื”ื• ื‘ืขืฆื ืงื•ื‘ืฅ YAML ืคืฉื•ื˜, ืฉืขืชืง ืฉืœื• ืžืื•ื—ืกืŸ ื‘ื›ืœ ืžื•ืคืข ืฉืœ Tarantool. ื”ืคืฉื˜ ื”ื•ื ืฉื”ืžืกื’ืจืช ืขืฆืžื” ืžื ื˜ืจืช ืืช ื”ืชืฆื•ืจื” ืฉืœื” ื•ืžื‘ื˜ื™ื—ื” ืฉื”ื™ื ื–ื”ื” ื‘ื›ืœ ืžืงื•ื.

ืฉื ื™ืช, ื–ื” ืฉื•ื‘ ืขื ื™ื™ืŸ ืฉืœ ื ื•ื—ื•ืช. ืœืชืฆื•ืจืช vshard ืื™ืŸ ืฉื•ื ืงืฉืจ ืœืคื™ืชื•ื— ื”ื”ื™ื’ื™ื•ืŸ ื”ืขืกืงื™ ื•ืจืง ืžืกื™ื— ืืช ื“ืขืชื• ืฉืœ ื”ืžืชื›ื ืช ืžืขื‘ื•ื“ืชื•. ื›ืืฉืจ ืื ื• ื“ื ื™ื ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืคืจื•ื™ืงื˜, ืื ื• ืžื“ื‘ืจื™ื ืœืจื•ื‘ ืขืœ ืจื›ื™ื‘ื™ื ื‘ื•ื“ื“ื™ื ื•ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ื ื™ื”ื. ืžื•ืงื“ื ืžื“ื™ ืœื—ืฉื•ื‘ ืขืœ ื”ืคืขืœืช ืืฉื›ื•ืœ ืœ-3 ืžืจื›ื–ื™ ื ืชื•ื ื™ื.

ืคืชืจื ื• ืืช ื”ื‘ืขื™ื•ืช ื”ืœืœื• ืฉื•ื‘ ื•ืฉื•ื‘, ื•ื‘ืฉืœื‘ ืžืกื•ื™ื ื”ืฆืœื—ื ื• ืœืคืชื— ื’ื™ืฉื” ืฉืคืฉื˜ื” ืืช ื”ืขื‘ื•ื“ื” ืขื ื”ืืคืœื™ืงืฆื™ื” ืœืื•ืจืš ื›ืœ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœื”: ื™ืฆื™ืจื”, ืคื™ืชื•ื—, ื‘ื“ื™ืงื•ืช, CI/CD, ืชื—ื–ื•ืงื”.

Cartridge ืžืฆื™ื’ ืืช ื”ืจืขื™ื•ืŸ ืฉืœ ืชืคืงื™ื“ ืขื‘ื•ืจ ื›ืœ ืชื”ืœื™ืš 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

ืื– ื™ืฉ ืœื ื• ืฆื•ืžืช ืื—ื“ ืฉืคื•ืขืœ ืขื‘ื•ืจ ื™ื™ืฉื•ื ื”-Sharded ื”ืขืชื™ื“ื™. ื“ื™ื•ื˜ ืกืงืจืŸ ื™ื›ื•ืœ ืœืคืชื•ื— ืžื™ื“ ืืช ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜, ืœื”ื’ื“ื™ืจ ืืฉื›ื•ืœ ืฉืœ ืฆื•ืžืช ืื—ื“ ืขื ื”ืขื›ื‘ืจ ื•ืœื™ื”ื ื•ืช ืžื”ืชื•ืฆืื”, ืื‘ืœ ื–ื” ืžื•ืงื“ื ืžื“ื™ ืœืฉืžื•ื—. ืขื“ ื›ื”, ื”ืืคืœื™ืงืฆื™ื” ืœื ื™ื›ื•ืœื” ืœืขืฉื•ืช ืฉื•ื ื“ื‘ืจ ืžื•ืขื™ืœ, ืื– ืื ื™ ืืกืคืจ ืœื›ื ืขืœ ื”ืคืจื™ืกื” ืžืื•ื—ืจ ื™ื•ืชืจ, ืื‘ืœ ืขื›ืฉื™ื• ื”ื’ื™ืข ื”ื–ืžืŸ ืœื›ืชื•ื‘ ืงื•ื“.

ืคื™ืชื•ื— ืืคืœื™ืงืฆื™ื•ืช

ืจืง ืชืืจื• ืœืขืฆืžื›ื, ืื ื—ื ื• ืžืชื›ื ื ื™ื ืคืจื•ื™ืงื˜ ืฉื—ื™ื™ื‘ ืœืงื‘ืœ ื ืชื•ื ื™ื, ืœืฉืžื•ืจ ืื•ืชื ื•ืœื‘ื ื•ืช ื“ื•"ื— ืคืขื ื‘ื™ื•ื.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ืื ื• ืžืชื—ื™ืœื™ื ืœืฆื™ื™ืจ ื“ื™ืื’ืจืžื” ื•ืžื ื™ื—ื™ื ืขืœื™ื” ืฉืœื•ืฉื” ืžืจื›ื™ื‘ื™ื: ืฉืขืจ, ืื—ืกื•ืŸ ื•ืžืชื–ืžืŸ. ืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืขื•ื“ ื™ื•ืชืจ. ืžื›ื™ื•ื•ืŸ ืฉืื ื• ืžืฉืชืžืฉื™ื ื‘-vshard ื›ืื—ืกื•ืŸ, ืื ื• ืžื•ืกื™ืคื™ื ืืช vshard-ื ืชื‘ ื•-vshard-storage ืœืชื›ื ื™ืช. ืœื ื”ืฉืขืจ ื•ืœื ื”ืžืชื–ืžืŸ ื™ื’ืฉื• ื™ืฉื™ืจื•ืช ืœืื—ืกื•ืŸ; ื‘ืฉื‘ื™ืœ ื–ื” ื ื•ืขื“ ื”ื ืชื‘, ื‘ืฉื‘ื™ืœ ื–ื” ื”ื•ื ื ื•ืฆืจ.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ื”ืชืจืฉื™ื ื”ื–ื” ืขื“ื™ื™ืŸ ืœื ืžื™ื™ืฆื’ ื‘ื“ื™ื•ืง ืืช ืžื” ืฉืื ื—ื ื• ื ื‘ื ื” ื‘ืคืจื•ื™ืงื˜ ืžื›ื™ื•ื•ืŸ ืฉื”ืจื›ื™ื‘ื™ื ื ืจืื™ื ืžื•ืคืฉื˜ื™ื. ืื ื—ื ื• ืขื“ื™ื™ืŸ ืฆืจื™ื›ื™ื ืœืจืื•ืช ืื™ืš ื–ื” ื™ื•ืงืจืŸ ืขืœ ื”-Tarantool ื”ืืžื™ืชื™ - ื‘ื•ืื• ื ืงื‘ืฅ ืืช ื”ืจื›ื™ื‘ื™ื ืฉืœื ื• ืœืคื™ ืชื”ืœื™ืš.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ืื™ืŸ ื˜ืขื ืœืฉืžื•ืจ ืขืœ vshard-router ื•-gateway ื‘ืžื•ืคืขื™ื ื ืคืจื“ื™ื. ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื’ืœื•ืฉ ืฉื•ื‘ ื‘ืจืฉืช ืื ื–ื” ื›ื‘ืจ ื‘ืื—ืจื™ื•ืช ื”ื ืชื‘? ื”ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืžื•ืคืขืœื™ื ื‘ืื•ืชื• ืชื”ืœื™ืš. ื›ืœื•ืžืจ, ื’ื gateway ื•ื’ื vshard.router.cfg ืžืืชื—ืœื™ื ื‘ืชื”ืœื™ืš ืื—ื“, ื•ืžืืคืฉืจื™ื ืœื”ื ืœืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืžืงื•ืžื™ืช.

ื‘ืฉืœื‘ ื”ืชื›ื ื•ืŸ ื”ื™ื” ื ื•ื— ืœืขื‘ื•ื“ ืขื ืฉืœื•ืฉื” ืจื›ื™ื‘ื™ื, ืื‘ืœ ืื ื™, ื›ืžืคืชื—, ื‘ื–ืžืŸ ื›ืชื™ื‘ืช ื”ืงื•ื“, ืœื ืจื•ืฆื” ืœื—ืฉื•ื‘ ืขืœ ื”ืฉืงืช ืฉืœื•ืฉื” ืžื•ืคืขื™ื ืฉืœ Tarnatool. ืื ื™ ืฆืจื™ืš ืœื”ืจื™ืฅ ื‘ื“ื™ืงื•ืช ื•ืœื‘ื“ื•ืง ืฉื›ืชื‘ืชื™ ืฉืขืจ ื ื›ื•ืŸ. ืื• ืื•ืœื™ ืื ื™ ืจื•ืฆื” ืœื”ื“ื’ื™ื ืชื›ื•ื ื” ืœืขืžื™ืชื™ื™. ืžื“ื•ืข ืขืœื™ ืœืขื‘ื•ืจ ืืช ื”ื˜ืจื—ื” ืฉืœ ืคืจื™ืกืช ืฉืœื•ืฉื” ืขื•ืชืงื™ื? ื›ืš ื ื•ืœื“ ืžื•ืฉื’ ื”ืชืคืงื™ื“ื™ื. ืชืคืงื™ื“ ื”ื•ื ืžื•ื“ื•ืœ luash ืจื’ื™ืœ ืฉืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœื• ืžื ื•ื”ืœ ืขืœ ื™ื“ื™ Cartridge. ื‘ื“ื•ื’ืžื” ื–ื• ื™ืฉ ืืจื‘ืขื” ืžื”ื - ืฉืขืจ, ื ืชื‘, ืื—ืกื•ืŸ, ืžืชื–ืžืŸ. ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื™ืฉ ืขื•ื“ ื‘ืคืจื•ื™ืงื˜ ืื—ืจ. ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืืช ื›ืœ ื”ืชืคืงื™ื“ื™ื ื‘ืชื”ืœื™ืš ืื—ื“, ื•ื–ื” ื™ืกืคื™ืง.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ื•ื›ืืฉืจ ืžื“ื•ื‘ืจ ื‘ืคืจื™ืกื” ืœื‘ื™ืžื•ื™ ืื• ืœื™ื™ืฆื•ืจ, ืื ื• ื ืงืฆื” ืœื›ืœ ืชื”ืœื™ืš ืฉืœ Tarantool ืกื˜ ืชืคืงื™ื“ื™ื ืžืฉืœื• ื‘ื”ืชืื ืœื™ื›ื•ืœื•ืช ื”ื—ื•ืžืจื”:

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ื ื™ื”ื•ืœ ื˜ื•ืคื•ืœื•ื’ื™ื”

ืžื™ื“ืข ืขืœ ื”ื™ื›ืŸ ืคื•ืขืœื™ื ืชืคืงื™ื“ื™ื ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืžืื•ื—ืกืŸ ืื™ืคืฉื”ื•. ื•ื”"ืื™ืคืฉื”ื•" ื”ื–ื” ื”ื•ื ื”ืชืฆื•ืจื” ื”ืžื‘ื•ื–ืจืช, ืฉื›ื‘ืจ ื”ื–ื›ืจืชื™ ืœืžืขืœื”. ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ื‘ื• ื”ื•ื ื˜ื•ืคื•ืœื•ื’ื™ื™ืช ื”ืืฉื›ื•ืœื•ืช. ืœื”ืœืŸ 3 ืงื‘ื•ืฆื•ืช ืฉื›ืคื•ืœ ืฉืœ 5 ืชื”ืœื™ื›ื™ Tarantool:

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœืื‘ื“ ื ืชื•ื ื™ื, ืื– ืื ื—ื ื• ืžืชื™ื™ื—ืกื™ื ื‘ื–ื”ื™ืจื•ืช ืœืžื™ื“ืข ืขืœ ื”ืคืขืœืช ืชื”ืœื™ื›ื™ื. ืžื—ืกื ื™ืช ืขื•ืงื‘ืช ืื—ืจ ื”ืชืฆื•ืจื” ื‘ืืžืฆืขื•ืช commit ื“ื•-ืคืื–ื™. ื‘ืจื’ืข ืฉื ืจืฆื” ืœืขื“ื›ืŸ ืืช ื”ืชืฆื•ืจื”, ื”ื•ื ื‘ื•ื“ืง ืชื—ื™ืœื” ืฉื›ืœ ื”ืžื•ืคืขื™ื ื–ืžื™ื ื™ื ื•ืžื•ื›ื ื™ื ืœืงื‘ืœ ืืช ื”ืชืฆื•ืจื” ื”ื—ื“ืฉื”. ืœืื—ืจ ืžื›ืŸ, ื”ืฉืœื‘ ื”ืฉื ื™ ืžื—ื™ืœ ืืช ื”ืชืฆื•ืจื”. ืœืคื™ื›ืš, ื’ื ืื ืขื•ืชืง ืื—ื“ ื™ืชื‘ืจืจ ื›ื‘ืœืชื™ ื–ืžื™ืŸ ื‘ืื•ืคืŸ ื–ืžื ื™, ืฉื•ื ื“ื‘ืจ ืจืข ืœื ื™ืงืจื”. ื”ืชืฆื•ืจื” ืคืฉื•ื˜ ืœื ืชื™ื•ืฉื ื•ืชืจืื” ืฉื’ื™ืื” ืžืจืืฉ.

ื’ื ื‘ืกืขื™ืฃ ื”ื˜ื•ืคื•ืœื•ื’ื™ื”, ืžืฆื•ื™ืŸ ืคืจืžื˜ืจ ื—ืฉื•ื‘ ื›ืžื• ื”ืžื ื”ื™ื’ ืฉืœ ื›ืœ ืงื‘ื•ืฆืช ืฉื›ืคื•ืœ. ื‘ื“ืจืš ื›ืœืœ ื–ื”ื• ื”ืขื•ืชืง ืฉืžื•ืงืœื˜. ื”ืฉืืจ ื”ื ืœืจื•ื‘ ืœืงืจื™ืื” ื‘ืœื‘ื“, ืื ื›ื™ ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ื—ืจื™ื’ื™ื. ืœืคืขืžื™ื ืžืคืชื—ื™ื ืืžื™ืฆื™ื ืœื ื—ื•ืฉืฉื™ื ืžืงื•ื ืคืœื™ืงื˜ื™ื ื•ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ื ืชื•ื ื™ื ืœืžืกืคืจ ื”ืขืชืงื™ื ื‘ืžืงื‘ื™ืœ, ืื‘ืœ ื™ืฉ ื›ืžื” ืคืขื•ืœื•ืช ืฉืœื ืžืฉื ื” ืžื”, ืืกื•ืจ ืœื‘ืฆืข ืคืขืžื™ื™ื. ื‘ืฉื‘ื™ืœ ื–ื” ื™ืฉ ืกื™ืžืŸ ืฉืœ ืžื ื”ื™ื’.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ื—ื™ื™ื ืฉืœ ืชืคืงื™ื“ื™ื

ื›ื“ื™ ืฉืชืคืงื™ื“ ืžื•ืคืฉื˜ ื™ืชืงื™ื™ื ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื” ื›ื–ื•, ื”ืžืกื’ืจืช ื—ื™ื™ื‘ืช ืœื ื”ืœ ืื•ืชื ืื™ื›ืฉื”ื•. ื‘ืื•ืคืŸ ื˜ื‘ืขื™, ื”ืฉืœื™ื˜ื” ืžืชืจื—ืฉืช ืžื‘ืœื™ ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืืช ืชื”ืœื™ืš Tarantool. ื™ืฉ 4 ื”ืชืงืฉืจื•ื™ื•ืช ืœื ื™ื”ื•ืœ ืชืคืงื™ื“ื™ื. Cartridge ืขืฆืžื” ืชืงืจื ืœื”ื ื‘ื”ืชืื ืœืžื” ืฉื›ืชื•ื‘ ื‘ืชืฆื•ืจื” ื”ืžื‘ื•ื–ืจืช ืฉืœื”, ื•ื‘ื›ืš ืชื—ื™ืœ ืืช ื”ืชืฆื•ืจื” ืขืœ ืชืคืงื™ื“ื™ื ืกืคืฆื™ืคื™ื™ื.

function init()
function validate_config()
function apply_config()
function stop()

ืœื›ืœ ืชืคืงื™ื“ ื™ืฉ ืชืคืงื™ื“ init. ื–ื” ื ืงืจื ืคืขื ืื—ืช ืื• ื›ืืฉืจ ื”ืชืคืงื™ื“ ืžื•ืคืขืœ ืื• ื›ืืฉืจ Tarantool ืžื•ืคืขืœ ืžื—ื“ืฉ. ื ื•ื— ืฉื, ืœืžืฉืœ, ืœืืชื—ืœ ืืช box.space.create, ืื• ืฉื”ืžืชื–ืžืŸ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืกื™ื‘ ืจืงืข ื›ืœืฉื”ื• ืฉื™ื‘ืฆืข ืขื‘ื•ื“ื” ื‘ืžืจื•ื•ื—ื™ ื–ืžืŸ ืžืกื•ื™ืžื™ื.

ืคื•ื ืงืฆื™ื” ืื—ืช init ืื•ืœื™ ืœื ืžืกืคื™ืง. ืžื—ืกื ื™ืช ืžืืคืฉืจืช ืœืชืคืงื™ื“ื™ื ืœื ืฆืœ ืืช ื”ืชืฆื•ืจื” ื”ืžื‘ื•ื–ืจืช ืฉื‘ื” ื”ื™ื ืžืฉืชืžืฉืช ืœืื—ืกื•ืŸ ื”ื˜ื•ืคื•ืœื•ื’ื™ื”. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื›ืจื™ื– ืขืœ ืžื“ื•ืจ ื—ื“ืฉ ื‘ืื•ืชื” ืชืฆื•ืจื” ื•ืœืื—ืกืŸ ื‘ื• ืงื˜ืข ืžื”ืชืฆื•ืจื” ื”ืขืกืงื™ืช. ื‘ื“ื•ื’ืžื” ืฉืœื™, ื–ื• ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืกื›ื™ืžืช ื ืชื•ื ื™ื ืื• ื”ื’ื“ืจื•ืช ืœื•ื— ื–ืžื ื™ื ืขื‘ื•ืจ ืชืคืงื™ื“ ื”ืžืชื–ืžืŸ.

ืฉื™ื—ื•ืช ืžืงื‘ืฅ validate_config ะธ apply_config ื‘ื›ืœ ืคืขื ืฉื”ืชืฆื•ืจื” ื”ืžื‘ื•ื–ืจืช ืžืฉืชื ื”. ื›ืืฉืจ ืชืฆื•ืจื” ืžื•ื—ืœืช ืขืœ ื™ื“ื™ commit ื“ื•-ืฉืœื‘ื™, ื”ืืฉื›ื•ืœ ื‘ื•ื“ืง ืฉื›ืœ ืชืคืงื™ื“ ืžื•ื›ืŸ ืœืงื‘ืœ ืืช ื”ืชืฆื•ืจื” ื”ื—ื“ืฉื” ื”ื–ื•, ื•ื‘ืžื™ื“ืช ื”ืฆื•ืจืš ืžื“ื•ื•ื— ืขืœ ืฉื’ื™ืื” ืœืžืฉืชืžืฉ. ื›ืืฉืจ ื›ื•ืœื ืžืกื›ื™ืžื™ื ืฉื”ืชืฆื•ืจื” ืชืงื™ื ื”, ืื– ื” apply_config.

ื’ื ืœืชืคืงื™ื“ื™ื ื™ืฉ ืฉื™ื˜ื” stop, ื”ื“ืจื•ืฉ ื›ื“ื™ ืœื ืงื•ืช ืืช ื”ืคืœื˜ ืฉืœ ื”ืชืคืงื™ื“. ืื ื ื’ื™ื“ ืฉื›ื‘ืจ ืื™ืŸ ืฆื•ืจืš ื‘ืœื•ื— ื”ื–ืžื ื™ื ื‘ืฉืจืช ื”ื–ื”, ื”ื•ื ื™ื›ื•ืœ ืœืขืฆื•ืจ ืืช ื”ืกื™ื‘ื™ื ืฉื‘ื”ื ื”ื•ื ื”ืชื—ื™ืœ init.

ืชืคืงื™ื“ื™ื ื™ื›ื•ืœื™ื ืœืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื–ื” ืขื ื–ื”. ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื›ืชื•ื‘ ืงืจื™ืื•ืช ืœืคื•ื ืงืฆื™ื•ืช ื‘-Lua, ืื‘ืœ ื™ื›ื•ืœ ืœืงืจื•ืช ืฉืœืชื”ืœื™ืš ื ืชื•ืŸ ืื™ืŸ ืืช ื”ืชืคืงื™ื“ ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื. ื›ื“ื™ ืœื”ืงืœ ืขืœ ืฉื™ื—ื•ืช ื“ืจืš ื”ืจืฉืช, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžื•ื“ื•ืœ ื”ืขื–ืจ rpc (remote procedure call), ืืฉืจ ื‘ื ื•ื™ ืขืœ ื‘ืกื™ืก ื”-netbox ื”ืกื˜ื ื“ืจื˜ื™ ื”ืžื•ื‘ื ื” ื‘-Tarantool. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ ืื, ืœืžืฉืœ, ื”ืฉืขืจ ืฉืœืš ืจื•ืฆื” ืœื‘ืงืฉ ื™ืฉื™ืจื•ืช ืžื”ืžืชื–ืžืŸ ืœืขืฉื•ืช ืืช ื”ืขื‘ื•ื“ื” ื›ื‘ืจ ืขื›ืฉื™ื•, ื‘ืžืงื•ื ืœื—ื›ื•ืช ื™ื•ื.

ื ืงื•ื“ื” ื—ืฉื•ื‘ื” ื ื•ืกืคืช ื”ื™ื ื”ื‘ื˜ื—ืช ืกื•ื‘ืœื ื•ืช ืœืชืงืœื•ืช. ืžื—ืกื ื™ืช ืžืฉืชืžืฉืช ื‘ืคืจื•ื˜ื•ืงื•ืœ SWIM ืœื ื™ื˜ื•ืจ ืชืงื™ื ื•ืช [4]. ื‘ืงื™ืฆื•ืจ, ืชื”ืœื™ื›ื™ื ืžื—ืœื™ืคื™ื ื‘ื™ื ื™ื”ื "ืฉืžื•ืขื•ืช" ืขืœ UDP - ื›ืœ ืชื”ืœื™ืš ืžืกืคืจ ืœืฉื›ื ื™ื• ืืช ื”ื—ื“ืฉื•ืช ื”ืื—ืจื•ื ื•ืช, ื•ื”ื ืžื’ื™ื‘ื™ื. ืื ืคืชืื•ื ื”ืชืฉื•ื‘ื” ืœื ืžื’ื™ืขื”, ื˜ืจื ื˜ื•ืœ ืžืชื—ื™ืœ ืœื—ืฉื•ื“ ืฉืžืฉื”ื• ืœื ื‘ืกื“ืจ, ื•ืื—ืจื™ ื–ืžืŸ ืžื” ื”ื•ื ืžื“ืงืœื ืžื•ื•ืช ื•ืžืชื—ื™ืœ ืœืกืคืจ ืœื›ื•ืœื ืกื‘ื™ื‘ ื”ื—ื“ืฉื•ืช ื”ืืœื”.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ื‘ื”ืชื‘ืกืก ืขืœ ืคืจื•ื˜ื•ืงื•ืœ ื–ื”, Cartridge ืžืืจื’ื ืช ืขื™ื‘ื•ื“ ื›ืฉืœ ืื•ื˜ื•ืžื˜ื™. ื›ืœ ืชื”ืœื™ืš ืขื•ืงื‘ ืื—ืจ ื”ืกื‘ื™ื‘ื” ืฉืœื•, ื•ืื ื”ืžื ื”ื™ื’ ืžืคืกื™ืง ืคืชืื•ื ืœื”ื’ื™ื‘, ื”ืขืชืง ื™ื›ื•ืœ ืœื”ืฉืชืœื˜ ืขืœ ืชืคืงื™ื“ื•, ื•-Cartridge ืžื’ื“ื™ืจ ืืช ื”ืชืคืงื™ื“ื™ื ื”ืคื•ืขืœื™ื ื‘ื”ืชืื.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ืืชื” ืฆืจื™ืš ืœื”ื™ื•ืช ื–ื”ื™ืจ ื›ืืŸ, ื›ื™ ืžืขื‘ืจ ืชื›ื•ืฃ ื”ืœื•ืš ื•ืฉื•ื‘ ื™ื›ื•ืœ ืœื”ื•ื‘ื™ืœ ืœื”ืชื ื’ืฉื•ื™ื•ืช ื ืชื•ื ื™ื ื‘ืžื”ืœืš ืฉื›ืคื•ืœ. ื›ืžื•ื‘ืŸ, ืืชื” ืœื ืฆืจื™ืš ืœื”ืคืขื™ืœ ื›ืฉืœ ืื•ื˜ื•ืžื˜ื™ ื‘ืืงืจืื™. ืขืœื™ื ื• ืœื”ื‘ื™ืŸ ื‘ื‘ื™ืจื•ืจ ืžื” ืงื•ืจื” ื•ืœื”ื™ื•ืช ื‘ื˜ื•ื—ื™ื ืฉื”ืฉื›ืคื•ืœ ืœื ื™ื™ืฉื‘ืจ ืœืื—ืจ ืฉื™ืงื•ื ื”ืžื ื”ื™ื’ ื•ื”ื—ื–ืจืช ืขื˜ืจื” ืœื™ื•ืฉื ื”.

ืžื›ืœ ื–ื”, ืืชื” ืขืฉื•ื™ ืœืงื‘ืœ ืืช ื”ืชื—ื•ืฉื” ืฉืชืคืงื™ื“ื™ื ื“ื•ืžื™ื ืœืฉื™ืจื•ืชื™ ืžื™ืงืจื•. ื‘ืžื•ื‘ืŸ ืžืกื•ื™ื, ื”ื ื‘ื“ื™ื•ืง ื–ื”, ืจืง ื›ืžื•ื“ื•ืœื™ื ื‘ืชื•ืš ืชื”ืœื™ื›ื™ Tarantool. ืื‘ืœ ื™ืฉ ื’ื ืžืกืคืจ ื”ื‘ื“ืœื™ื ืžื”ื•ืชื™ื™ื. ืจืืฉื™ืช, ื›ืœ ืชืคืงื™ื“ื™ ื”ืคืจื•ื™ืงื˜ ื—ื™ื™ื‘ื™ื ืœื—ื™ื•ืช ื‘ืื•ืชื• ื‘ืกื™ืก ืงื•ื“. ื•ื›ืœ ื”ืชื”ืœื™ื›ื™ื ืฉืœ Tarantool ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžื•ืคืขืœื™ื ืžืื•ืชื• ื‘ืกื™ืก ืงื•ื“, ื›ื“ื™ ืฉืœื ื™ื”ื™ื• ื”ืคืชืขื•ืช ื›ืžื• ืืœื” ื›ืฉืื ื—ื ื• ืžื ืกื™ื ืœืืชื—ืœ ืืช ื”ืžืชื–ืžืŸ, ืื‘ืœ ื”ื•ื ืคืฉื•ื˜ ืœื ืงื™ื™ื. ื›ืžื• ื›ืŸ, ืืกื•ืจ ืœืืคืฉืจ ื”ื‘ื“ืœื™ื ื‘ื’ืจืกืื•ืช ืงื•ื“, ืžื›ื™ื•ื•ืŸ ืฉื”ืชื ื”ื’ื•ืช ื”ืžืขืจื›ืช ื‘ืžืฆื‘ ื›ื–ื” ืงืฉื” ืžืื•ื“ ืœื ื™ื‘ื•ื™ ื•ื ื™ืคื•ื™ ื‘ืื’ื™ื.

ืฉืœื ื›ืžื• Docker, ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ืคืฉื•ื˜ ืœืงื—ืช ืชืคืงื™ื“ "ืชืžื•ื ื”", ืœืงื—ืช ืื•ืชื• ืœืžื›ื•ื ื” ืื—ืจืช ื•ืœื”ืคืขื™ืœ ืื•ืชื• ืฉื. ื”ืชืคืงื™ื“ื™ื ืฉืœื ื• ืื™ื ื ืžื‘ื•ื“ื“ื™ื ื›ืžื• ืžื›ื•ืœื•ืช 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 ื—ื™ืฆื•ื ื™ืช, ืœื ื—ื™ื‘ื•ืจ socket. ื‘ืœื™ ื–ื” ืฉื•ื ื“ื‘ืจ ืœื ื™ืขื‘ื•ื“, ืื– Cartridge ืคืฉื•ื˜ ืœื ื™ืืคืฉืจ ืœืš ืœื”ืคืขื™ืœ ืฆื•ืžืช ืขื advert_uri ื”ืœื ื ื›ื•ืŸ.

ื›ืขืช, ื›ืฉื”ืชืฆื•ืจื” ืžื•ื›ื ื”, ืืชื” ื™ื›ื•ืœ ืœื”ืชื—ื™ืœ ื‘ืชื”ืœื™ื›ื™ื. ืžื›ื™ื•ื•ืŸ ืฉื™ื—ื™ื“ืช systemd ืจื’ื™ืœื” ืื™ื ื” ืžืืคืฉืจืช ืœื”ืชื—ื™ืœ ื™ื•ืชืจ ืžืชื”ืœื™ืš ืื—ื“, ื™ื™ืฉื•ืžื™ื ืขืœ ื”ืžื—ืกื ื™ืช ืžื•ืชืงื ื™ื ืขืœ ื™ื“ื™ ืžื” ืฉื ืงืจื. ื™ื—ื™ื“ื•ืช ืžื•ืคืขื™ื•ืช ืฉืขื•ื‘ื“ื•ืช ื›ืš:

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

ื‘ืชืฆื•ืจื”, ืฆื™ื™ื ื• ืืช ื™ืฆื™ืืช ื”-HTTP ื‘ื” Cartridge ืžืฉืจืชืช ืืช ืžืžืฉืง ื”ืื™ื ื˜ืจื ื˜ - 8080. ื‘ื•ืื• ื ืœืš ืืœื™ื• ื•ื ืกืชื›ืœ:

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ืื ื• ืจื•ืื™ื ืฉืœืžืจื•ืช ืฉื”ืชื”ืœื™ื›ื™ื ืคื•ืขืœื™ื, ื”ื ืขื“ื™ื™ืŸ ืœื ืžื•ื’ื“ืจื™ื. ื”ืžื—ืกื ื™ืช ืขื“ื™ื™ืŸ ืœื ื™ื•ื“ืขืช ืžื™ ืฆืจื™ืš ืœืฉื›ืคืœ ืขื ืžื™ ื•ืœื ื™ื›ื•ืœื” ืœืงื‘ืœ ื”ื—ืœื˜ื” ื‘ืขืฆืžื”, ื•ืœื›ืŸ ื”ื™ื ืžื—ื›ื” ืœืžืขืฉื™ื ื•. ืื‘ืœ ืื™ืŸ ืœื ื• ื”ืจื‘ื” ื‘ืจื™ืจื”: ื”ื—ื™ื™ื ืฉืœ ืืฉื›ื•ืœ ื—ื“ืฉ ืžืชื—ื™ืœื™ื ื‘ืชืฆื•ืจื” ืฉืœ ื”ืฆื•ืžืช ื”ืจืืฉื•ืŸ. ืœืื—ืจ ืžื›ืŸ ื ื•ืกื™ืฃ ืืช ื”ืื—ืจื™ื ืœืืฉื›ื•ืœ, ื ืงืฆื” ืœื”ื ืชืคืงื™ื“ื™ื, ื•ื‘ืฉืœื‘ ื–ื” ื ื™ืชืŸ ืœืจืื•ืช ืฉื”ืคืจื™ืกื” ื”ื•ืฉืœืžื” ื‘ื”ืฆืœื—ื”.

ื‘ื•ืื• ืœืžื–ื•ื’ ื›ื•ืก ืžื”ืžืฉืงื” ื”ืื”ื•ื‘ ืขืœื™ื›ื ื•ืœื”ื™ืจื’ืข ืื—ืจื™ ืฉื‘ื•ืข ืขื‘ื•ื“ื” ืืจื•ืš. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืืคืœื™ืงืฆื™ื”.

Tarantool Cartridge: Lua backend sharding ื‘ืฉืœื•ืฉ ืฉื•ืจื•ืช

ืชื•ืฆืื•ืช ืฉืœ

ืžื” ื”ืชื•ืฆืื•ืช? ื ืกื” ืืช ื–ื”, ื”ืฉืชืžืฉ ื‘ื•, ื”ืฉืืจ ืžืฉื•ื‘, ืฆื•ืจ ื›ืจื˜ื™ืกื™ื ื‘-Github.

ืชื–ื›ื•ืจ

[1] Tarantool ยป 2.2 ยป ื”ืคื ื™ื” ยป ื”ืคื ื™ื” ืœืกืœืขื™ื ยป ืžื•ื“ื•ืœ vshard

[2] ื›ื™ืฆื“ ื™ื™ืฉืžื ื• ืืช ืœื™ื‘ืช ืขืกืงื™ ื”ื”ืฉืงืขื•ืช ืฉืœ ืืœืคื-ื‘ื ืง ื”ืžื‘ื•ืกืกืช ืขืœ Tarantool

[3] ืืจื›ื™ื˜ืงื˜ื•ืจืช ื—ื™ื•ื‘ ืžื”ื“ื•ืจ ื”ื—ื“ืฉ: ื˜ืจื ืกืคื•ืจืžืฆื™ื” ืขื ื”ืžืขื‘ืจ ืœ-Tarantool

[4] SWIM - ืคืจื•ื˜ื•ืงื•ืœ ื‘ื ื™ื™ืช ืืฉื›ื•ืœื•ืช

[5] GitHub - tarantool/cartridge-cli

[6] GitHub - ื˜ืจื ื˜ื•ืœ/ืžื—ืกื ื™ืช

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”