ืืื Mail.ru ืืจืืคืข ืืืจ ืืึธืื Tarantool - ืืึธืก ืืื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืกืขืจืืืขืจ ืืื Lua, ืืืึธืก ืืืื ืืึทืืึทืื ืืื ืึท ืืึทืืึทืืืืก (ืึธืืขืจ ืืืืฆืข ืืืขืจืกืึท?). ืขืก ืืื ืฉื ืขื ืืื ืงืื, ืึธืืขืจ ืื ืงืืืคึผืึทืืืืึทืืื ืคืื ืืืื ืกืขืจืืืขืจ ืืขื ืขื ื ืึธื ื ืืฉื ืึทื ืืืืึทืืึทื. ืืืขืจืืืงืึทื ืกืงืืืืื ื ืืื ืืืื ื ืืฉื ืึท ืคึผืึทื ืึทืกืืึท, ืึทืืื Tarantool ืืื ืืืฉืืจืื ืคึฟืึทืจ ืืึธืจืืืึธื ืืึทื ืกืงืืืืื ื - ืื vshard ืืึธืืืืข
ืืื ื ืืึทืขืก: ืืืจ ืืึธืื ืืขืืืืื ืขืืืขืืข ืืจืืืก ืฉืึทืฅ (ืืืฉื
ืืืึธืก ืคึผืื ืงื ืืื ืื ืคึผืจืึธืืืขื?
ืืืจ ืืึธืื ืึท ืืึทืจืึทื ืืืืึท, ืืืจ ืืึธืื ืืืกืึทืจื - ืืืึธืก ืืขืจ ืงืขื ืืืจ ืืืืื?
ืขืจืฉืืขืจ, ืขืก ืืื ืึท ืขื ืื ืคืื ืงืึทื ืืืื ืืึทื ืก. ืื ืืืกืึทืจื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืงืึทื ืคืืืืขืจื ืืืจื Lua ืืืฉื. ืคึฟืึทืจ ืึท ืคืื ืื ืืขืจืืขืืืืื ืกืืกืืขื ืคืื ืงืืืคื ืืึทืจืึทื ืืึธืึธื ืคึผืจืึทืกืขืกืึทื ืฆื ืึทืจืืขืื ืจืืืืืง, ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืื ืืืื ืื ืืขืืืข ืืืืขืืื. ืงืืื ืขืจ ืืืื ืฆื ืืึธื ืืึธืก ืืึทื ืืืึทืื. ืืขืจืืืขืจ, ืึทืืข ืกืึธืจืฅ ืคืื ืกืงืจืืคึผืก, Ansible ืืื ืืืคึผืืืืืึทื ื ืกืืกืืขืืขื ืืขื ืขื ืืขื ืืฆื.
ืคึผืึทืืจืึธื ืืื ืืึทื ืืืืฉืื ืื ืืืกืึทืจื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืขืก ืืื ืืึธืก ืืืืืจื ืืืืฃ ืืืึทื ืืืืื ืคืื ืื ืืขืจืืขืืืืื ืงืึทื ืคืืืืขืจืืืฉืึทื. ืขืก ืืื ืืืืกืืงืื ืึท ืคึผืฉืื YAML ืืขืงืข, ืึท ืงืึธืคึผืืข ืคืื โโืืืึธืก ืืื ืกืืึธืจื ืืื ืืขืืขืจ ืืึทืจืึทื ืืึธืึธื ืืืึทืฉืคึผืื. ืื ืกืืืคึผืืึทืคืืงืืืฉืึทื ืืื ืึทื ืื ืคืจืืืืืืขืจืง ืืื ืืึธื ืืืึธืจืก ืืืึทื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืื ืฉืืจื ืึทื ืขืก ืืื ืื ืืขืืืข ืืืืขืืื.
ืฆืืืืืื ืก, ืขืก ืืื ืืืืืขืจ ืึท ืขื ืื ืคืื ืงืึทื ืืืื ืืึทื ืก. ืื ืืืกืึทืจื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืืึธืจื ืืฉื ืฆื ืืึธื ืืื ืืขืจ ืึทื ืืืืืงืืื ื ืคืื ืืขืฉืขืคื ืืึธืืืง ืืื ืืืืื ืืืกืืจืึทืงื ืื ืคึผืจืึธืืจืึทืืืกื ืคืื ืืืื ืึทืจืืขื. ืืืขื ืืืจ ืืืกืงืืืืจื ืื ืึทืจืงืึทืืขืงืืฉืขืจ ืคืื ืึท ืคึผืจืืืขืงื, ืืืจ ืึธืคื ืจืขืื ืืืขืื ืืืื ืงืึทืืคึผืึธืื ืึทื ืฅ ืืื ืืืืขืจ ืื ืืขืจืึทืงืฉืึทื. ืขืก ืืื ืฆื ืคืจื ืฆื ืืจืึทืืื ืืืขืื ืจืึธืืืื ื ืึท ืงื ืืื ืฆื 3 ืืึทืื ืกืขื ืืขืจืก.
ืืืจ ืกืึทืืืื ืื ืคืจืืืืขืืขื ืืืืขืจ ืืื ืืืืขืจ ืืืืืขืจ, ืืื ืืื ืขืืืขืืข ืคืื ื ืืืจ ืืขืจืืื ืฆื ืึทื ืืืืืงืืขื ืึท ืฆืืืึทื ื ืืืึธืก ืกืืืคึผืืึทืคืืื ืืจืืขืื ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืืขืจ ืืืื ืืึทื ืฅ ืืขืื ืฆืืงื: ืฉืึทืคืื ื, ืึทื ืืืืืงืืื ื, ืืขืกืืื ื, ืกื / ืกื, ืืืฉืึทืื.
ืคึผืึทืืจืึธื ืื ืืจืึทืืืกืื ืืขืจ ืืึทืืจืืฃ ืคืื ืึท ืจืึธืืข ืคึฟืึทืจ ืืขืืขืจ ืืึทืจืึทื ืืึธืึธื ืคึผืจืึธืฆืขืก. ืจืึธืืขืก ืืขื ืขื ืึท ืืึทืืจืืฃ ืืืึธืก ืึทืืึทืื ืึท ืืขืืืขืืึธืคึผืขืจ ืฆื ืคืึธืงืืก ืืืืฃ ืฉืจืืืื ืงืึธื. ืึทืืข ืจืึธืืขืก ืื ืืืฆื ืืื ืื ืคึผืจืืืขืงื ืงืขื ืขื ืืืื ืืืืคื ืืืืฃ ืืืื ืืึทืจืึทื ืืึธืึธื ืืืึทืฉืคึผืื, ืืื ืืึธืก ืืืขื ืืืื ืืขื ืื ืคึฟืึทืจ ืืขืกืฅ.
ืฉืืืกื ืคึฟืขืึดืงืืืื ืคืื Tarantool Cartridge:
- ืึธืืึทืืืืืื ืงื ืืื ืึธืจืงืขืกืืจืึทืืืึธื;
- ืืงืกืคึผืึทื ืืื ื ืื ืคืึทื ืืงืฉืึทื ืึทืืืื ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ื ืืฆื ื ืืึทืข ืจืึธืืขืก;
- ืึทืคึผืืึทืงืืืฉืึทื ืืืกืืขืจ ืคึฟืึทืจ ืึทื ืืืืืงืืื ื ืืื ืืืคึผืืืืืึทื ื;
- ืืขืืืื-ืืื ืึธืืึทืืึทืืืง ืฉืึทืจืืื ื;
- ืื ืึทืืจืืืฉืึทื ืืื ืื ืืืึทืืขืกื ืืขืกืืื ื ืคืจืืืืืืขืจืง;
- ืงื ืืื ืคืึทืจืืืึทืืืื ื ื ืืฆื 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/
ืืึธืก ืืื ืึท ืืื ืจืืคึผืึทืืึทืืึธืจื ืืื ืึท ืคืึทืจืืืง "ืืขืื, ืืืขืื!" ืึทืคึผืืึทืงืืืฉืึทื. ืืึธืืืจ ืคึผืจืืืืจื ืฆื ืืืืคื ืขืก ืืืืื, ื ืึธื ืืื ืกืืึทืืืจื ืื ืืืคึผืขื ืืึทื ืกืื (ืึทืจืืึทื ืืขืจืขืื ื ืื ืคืจืืืืืืขืจืง ืืื):
$ tarantoolctl rocks make
$ ./init.lua --http-port 8080
ืึทืืื, ืืืจ ืืึธืื ืืืื ื ืึธืืข ืคืืืกื ืืืง ืคึฟืึทืจ ืื ืฆืืงืื ืคึฟื ืฉืขืจื ืึทืคึผืืึทืงืืืฉืึทื. ืึท ื ืืึทืืขืจืืง ืืืืืึทื ืงืขื ืขื ืืืืื ืขืคืขื ืขื ืื ืืืขื ืฆืืืื ื, ืงืึทื ืคืืืืขืจ ืึท ืงื ืืื ืคืื ืืืื ื ืึธืืข ืืื ืื ืืืื ืืื ืืขื ืืกื ืื ืจืขืืืืืึทื, ืึธืืขืจ ืขืก ืืื ืฆื ืคืจื ืฆื ืคืจืืืขื. ืืื ืืืฆื ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืขื ื ืืฉื ืืึธื ืขืคึผืขืก ื ืืฆืืง, ืึทืืื ืืื ืืืขื ืืึธืื ืืืจ ืืืขืื ืืืคึผืืืืืึทื ื ืฉืคึผืขืืขืจ, ืึธืืขืจ ืืืฆื ืขืก ืืื ืฆืืื ืฆื ืฉืจืืึทืื ืงืึธื.
ืึทืคึผืคึผืืืงืึทืืืึธื ืึทื ืืืืืงืืื ื
ื ืึธืจ ืืืึทืืืฉืึทื, ืืืจ ืคึผืืึทื ืึท ืคึผืจืืืขืงื ืืืึธืก ืืืื ืืึทืงืืืขื ืืึทืื, ืจืึทืืขืืืขื ืขืก ืืื ืืืืขื ืึท ืืึทืจืืื ืึทืืึธื ืึท ืืึธื.
ืืืจ ืึธื ืืืืื ืฆืืืืขื ืื ื ืึท ืืืึทืืจืึทืืข ืืื ืฉืืขืื ืืจืืึท ืงืึทืืคึผืึธืื ืึทื ืฅ ืืืืฃ ืขืก: ืืืืืืืื, ืกืืึธืจืืืืฉ ืืื ืกืงืขืืืฉืืืขืจ. ืืืจ ืืขื ืขื ืืจืืขืื ืืืืฃ ืื ืึทืจืงืึทืืขืงืืฉืขืจ ืืืืึทืืขืจ. ืืื ื ืืืจ ื ืืฆื vshard ืืื ืกืืึธืจืืืืฉ, ืืืจ ืืืืื vshard-router ืืื vshard-storage ืฆื ืื ืกืืขืืข. ื ืื ืื ืืืืืืืื ืืืขืจ ืื ืกืงืขืืืฉืืืขืจ ืืืขื ืืืืึทื ืึทืงืกืขืก ืื ืกืืึธืจืืืืฉ; ืืึธืก ืืื ืืืึธืก ืืขืจ ืจืึทืืืขืจ ืืื ืคึฟืึทืจ, ืืึธืก ืืื ืืืึธืก ืขืก ืืื ืืืฉืืคื ืคึฟืึทืจ.
ืืขืจ ืืืึทืืจืึทืืข ื ืึธื ืจืขืคึผืจืึทืืขื ืฅ ื ืืฉื ืคึผืื ืงื ืืืึธืก ืืืจ ืืืขืื ืืืืขื ืืื ืื ืคึผืจืืืขืงื ืืืืึทื ืื ืงืึทืืคึผืึธืื ืึทื ืฅ ืงืืงื ืึทืืกืืจืึทืงื. ืืืจ ื ืึธื ืืึทืจืคึฟื ืฆื ืืขื ืืื ืืึธืก ืืืขื ืืืื ืคึผืจืึทืืืฉืขืงืืึทื ืืืืฃ ืื ืคืึทืงืืืฉ ืืึทืจืึทื ืืึธืึธื - ืืึธืื ืืื ืื ืืจืืคึผืข ืืื ืืืขืจ ืงืึทืืคึผืึธืื ืึทื ืฅ ืืืจื ืคึผืจืึธืฆืขืก.
ืขืก ืืื ืงืืืื ืคืื ื ืืื ืืขืืขืกืงืขื ืืืกืึทืจื-ืจืึธืืืขืจ ืืื ืืืืืืืื ืืื ืืึทืืื ืืขืจ ืื ืกืืึทื ืกืื. ืคืืจืืืืก ืืึธื ืืืจ ืืึทืจืคึฟื ืฆื ืื ืื ืืจืขื ืื ื ืขืฅ ืึทืืึธื ืืืืืขืจ ืืืื ืืึธืก ืืื ืฉืืื ืื ืคึฟืึทืจืึทื ืืืืึธืจืืืขืืงืืื ืคืื ืื ืจืึทืืืขืจ? ืืื ืืืื ืืืื ืืืืคื ืืื ืืขืจ ืืขืืืืงืขืจ ืคึผืจืึธืฆืขืก. ืืึธืก ืืื, ืืืืืข ืืืืืืืื ืืื vshard.router.cfg ืืขื ืขื ืื ืืืืึทืืืืื ืืื ืืืื ืคึผืจืึธืฆืขืก, ืืื ืืึธืื ืืื ืื ืืขืจืึทืงื ืืึธืืงืึทืื.
ืืื ืืขืจ ืคึผืืึทื ืืื ืข, ืขืก ืืื ืืึทืงืืืขื ืฆื ืึทืจืืขืื ืืื ืืจืื ืงืึทืืคึผืึธืื ืึทื ืฅ, ืึธืืขืจ ืืื, ืืื ืึท ืืขืืืขืืึธืคึผืขืจ, ืืฉืขืช ืฉืจืืืื ืืขื ืงืึธื, ืืื ืืึธื ื ืืฉื ืืืขืื ืฆื ืืจืึทืืื ืืืขืื ืงืึทืืขืจ ืืจืื ืื ืกืืึทื ืกืื ืคืื Tarnatool. ืืื ืืึทืจืคึฟื ืฆื ืืืืคื ืืขืกืฅ ืืื ืงืึธื ืืจืึธืืืจื ืึทื ืืื ืืขืฉืจืืื ืืืืืืืื ืจืืืืืง. ืึธืืขืจ ืืคึฟืฉืจ ืืื ืืืืื ืฆื ืืึทืืืืึทืื ืึท ืฉืืจืื ืฆื ืืืื ืืืจืื. ืคืืจืืืืก ืืึธื ืืื ืืืื ืืืจื ืื ืืึทืกืึทื ืคืื ืืืคึผืืืืื ื ืืจืื ืงืืคืืขืก? ืึทืืื ืืื ืืขืืืืจื ืืขืืืึธืจื ืืขืจ ืืึทืืจืืฃ ืคึฟืื ืจืึธืืขืก. ื ืจืึธืืข ืืื ืึท ืจืขืืืืขืจ ืืืึทืฉ ืืึธืืืืข ืืืขืืขื ืก ืืขืื ืฆืืงื ืืื ืืขืจืืื ืืืจื ืงืึทืจืืจืึทืืืฉืึทื. ืืื ืืขื ืืืึทืฉืคึผืื ืขืก ืืขื ืขื ืคืืจ ืคืื ืืื - ืืืืืืืื, ืจืึทืืืขืจ, ืกืืึธืจืืืืฉ, ืกืงืขืืืฉืืืขืจ. ืขืก ืงืขื ืืืื ืืขืจ ืืื ืื ืื ืืขืจ ืคึผืจืืืขืงื. ืึทืืข ืจืึธืืขืก ืงืขื ืขื ืืืื ืืืืคื ืืื ืืืื ืคึผืจืึธืฆืขืก, ืืื ืืึธืก ืืืขื ืืืื ืืขื ืื.
ืืื ืืืขื ืขืก ืงืืื ืฆื ืืืคึผืืืืืึทื ื ืฆื ืกืืึทืืื ื ืึธืืขืจ ืคึผืจืึธืืืงืฆืืข, ืืืจ ืืืขืื ืืึทืฉืืืืขื ืืขืืขืจ Tarantool ืคึผืจืึธืฆืขืก ืืืื ืืืืืขื ืข ืืึทื ื ืคืื ืจืึธืืขืก ืืืคึผืขื ืืื ื ืืืืฃ ืื ืืึทืื ืืืึทืจื ืงืืืคึผืึทืืืืึทืืื:
ืืึธืคึผืึธืืึธืื ืคืึทืจืืืึทืืืื ื
ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืื ืืืึธืก ืจืึธืืขืก ืืขื ืขื ืคืืืกื ืืืง ืืืื ืืืื ืกืืึธืจื ืขืจืืขืฅ. ืืื ืืขื "ืขืจืืขืฅ" ืืื ืื ืคืื ืื ืืขืจืืขืืืืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืืืึธืก ืืื ืฉืืื ืืขืจืืื ื ืืืืื. ืื ืืขืจืกื ืืืืืืืง ืืึทื ืืืขืื ืขืก ืืื ืื ืงื ืืื ืืึธืคึผืึธืืึธืื. ืืึธ ืืขื ืขื 3 ืจืขืคึผืืึทืงืืืฉืึทื ืืจืืคึผืขืก ืคืื 5 Tarantool ืคึผืจืึทืกืขืกืึทื:
ืืืจ ืืึธื ื ืืฉื ืืืขืื ืฆื ืคืึทืจืืืจื ืืึทืื, ืึทืืื ืืืจ ืืืึทืื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืคืืืกื ืืืง ืคึผืจืึทืกืขืกืึทื ืืื ืืึธืจื. ืคึผืึทืืจืึธื ืืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืึท ืฆืืืื-ืคืึทืกืข ืืืขืจืืขืื. ืึทืืึธื ืืืจ ืืืืื ืฆื ืืขืจืืืึทื ืืืงื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืขืก ืขืจืฉืืขืจ ืืฉืขืงืก ืึทื ืึทืืข ืื ืกืืึทื ืกืื ืืขื ืขื ืืืจืขืืืืื ืืื ืืจืืื ืฆื ืึธื ื ืขืืขื ืื ื ืืึทืข ืงืึทื ืคืืืืขืจืืืฉืึทื. ื ืึธื ืืขื, ืื ืจืืข ืคืึทืกืข ืึทืคึผืืืื ืื ืงืึธื ืคืื. ืืืื, ืืคืืื ืืืื ืืืื ืงืึธืคึผืืข ืืื ืืขืืคึผืขืจืขืจืึทืื ืึทื ืึทืืืืืืึทืืึทื, ืืึธืจื ืืฉื ืฉืืขืื ืืืขื ืคึผืึทืกืืจื. ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืืขื ืคืฉืื ื ืืฉื ืืืื ืืขืืืขื ืื ืืื ืืืจ ืืืขื ืืขื ืึท ืืขืืช ืืื ืฉืืืึทืื.
ืืืื ืืื ืื ืืึธืคึผืึธืืึธืื ืึธืคึผืืืืืื ื, ืึทืืึท ืึท ืืืืืืืง ืคึผืึทืจืึทืืขืืขืจ ืืื ืืขืจ ืคืืจืขืจ ืคืื ืืขืืขืจ ืจืขืคึผืืึทืงืืืฉืึทื ืืจืืคึผืข ืืื ืื ืืขืืืืื. ืืืืฉืึทืืืึทืื ืืึธืก ืืื ืืขืจ ืงืึธืคึผืืข ืืืึธืก ืืื ืจืขืงืึธืจืืขื. ืื ืจืขืฉื ืืขื ืขื ืจืืึฟ ืึธืคื ืืืืขื ืขื-ืืืืื, ืืึธืืฉ ืขืก ืงืขื ืืืื ืืืืกื ืขืืขื. ืืื ืืขืืืืฉ ืืขืืืขืืึธืคึผืขืจืก ืืขื ืขื ื ืืฉื ืืขืจืฉืจืึธืงื ืคืื ืงืึธื ืคืืืงื ืืื ืงืขื ืขื ืฉืจืืึทืื ืืึทืื ืฆื ืขืืืขืืข ืจืขืคึผืืึทืงืึทื ืืื ืคึผืึทืจืึทืืขื, ืึธืืขืจ ืขืก ืืขื ืขื ืขืืืขืืข ืึทืคึผืขืจืืืฉืึทื ื ืืืึธืก, ืงืืื ืขื ืื ืืืึธืก, ืืึธื ื ืื ืืืื ืืขืืื ืฆืืืื ืืึธื. ืคึฟืึทืจ ืืขื ืขืก ืืื ืึท ืฆืืืื ืคืื ืึท ืคืืจืขืจ.
ืืขืื ืคืื ืจืึธืืขืก
ืคึฟืึทืจ ืึทื ืึทืืกืืจืึทืงื ืจืึธืืข ืฆื ืขืงืกืืกืืืจื ืืื ืึทืืึท ืึท ืึทืจืงืึทืืขืงืืฉืขืจ, ืื ืคืจืืืืืืขืจืง ืืืื ืคืืจื ืืื ืขืคืขืก. ืืขืืืืื ืืืขื, ืงืึธื ืืจืึธื ืึทืงืขืจื ืึธื ืจืืกืืึทืจืืื ื ืื Tarantool ืคึผืจืึธืฆืขืก. ืขืก ืืขื ืขื 4 ืงืึทืืืืึทืงืงืก ืฆื ืคืืจื ืจืึธืืขืก. ืคึผืึทืืจืึธื ืืื ืืืขื ืจืืคื ืืื ืืืคึผืขื ืืื ื ืืืืฃ ืืืึธืก ืืื ืืขืฉืจืืื ืืื ืืืึทื ืคืื ืื ืืขืจืืขืืืืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืืขืจืืื ืึทืคึผืืืืื ื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืฆื ืกืคึผืขืฆืืคืืฉ ืจืึธืืขืก.
function init()
function validate_config()
function apply_config()
function stop()
ืืขืืขืจ ืจืึธืืข ืืื ืึท ืคึฟืื ืงืฆืืข init
. ืขืก ืืื ืืขืจืืคื ืึทืืึธื ืึธืืขืจ ืืืขื ืื ืจืึธืืข ืืื ืขื ืืืืึทืื ืึธืืขืจ ืืืขื Tarantool ืืื ืจืืกืืึทืจืืื. ืขืก ืืื ืืึทืงืืืขื ืืึธืจื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆื ืื ืืฉืึทืืืื ืืึธืงืก.ืกืคึผืึทืกืข.ืงืจืขืึทืืข, ืึธืืขืจ ืื ืกืงืขืืืฉืืืขืจ ืงืขื ืขื ืงืึทืืขืจ ืขืืืขืืข ืืื ืืขืจืืจืื ื ืคืืืจืข ืืืึธืก ืืืขื ืืืจืืคืืจื ืึทืจืืขื ืืื ืืืืขืจ ืฆืืื ืื ืืขืจืืืึทืื.
ืืืื ืคึฟืื ืงืฆืืข init
ืงืขื ื ืืฉื ืืืื ืืขื ืื. ืคึผืึทืืจืึธื ืึทืืึทืื ืจืึธืืขืก ืฆื ื ืืฆื ืื ืคืื ืื ืืขืจืืขืืืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืขืก ื ืืฆื ืฆื ืงืจืึธื ืื ืืึธืคึผืึธืืึธืื. ืืืจ ืงืขื ืขื ืืขืจืงืืขืจื ืึท ื ืืึทืข ืึธืคึผืืืืืื ื ืืื ืืขืจ ืืขืืืืงืขืจ ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืงืจืึธื ืึท ืคืจืึทืืืขื ื ืคืื ืื ืืขืฉืขืคื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืขืก. ืืื ืืืื ืืืึทืฉืคึผืื, ืืึธืก ืงืขื ืืืื ืึท ืืึทืื ืกืืฉืขืืึท ืึธืืขืจ ืคึผืืึทื ืกืขืืืื ืืก ืคึฟืึทืจ ืื ืกืงืขืืืฉืืืขืจ ืจืึธืืข.
ืงื ืืื ืจืืคื validate_config
ะธ apply_config
ืืขืืขืจ ืืึธื ืื ืคืื ืื ืืขืจืืขืืืืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืขื ืืขืจืื ืืขื. ืืืขื ืึท ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืืขืืืขื ืื ืืืจื ืึท ืฆืืืื-ืคืึทืกืข ืืืขืจืืขืื, ืืขืจ ืงื ืืื ืืฉืขืงืก ืึทื ืืขืืขืจ ืจืึธืืข ืืื ืืจืืื ืฆื ืึธื ื ืขืืขื ืื ื ืืึทืข ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื, ืืืื ื ืืืืืง, ืจืืคึผืึธืจืฅ ืึท ืืขืืช ืฆื ืืขืจ ืืึทื ืืฆืขืจ. ืืืขื ืึทืืขืืขื ืฉืืืืขื ืึทื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ื ืึธืจืืึทื, ืื apply_config
.
ืืืื ืจืึธืืขืก ืืึธืื ืึท ืืืคึฟื stop
, ืืืึธืก ืืื ืืืจืฃ ืฆื ืจืืื ืืงื ืื ืจืขืืืืืึทื ืคืื ืื ืจืึธืืข. ืืืื ืืืจ ืืึธืื ืึทื ืกืงืขืืืฉืืืขืจ ืืื ื ืื ืืขืจ ืืืจืฃ ืืืืฃ ืืขื ืกืขืจืืืขืจ, ืขืก ืงืขื ืขื ืืึทืืื ืื ืคืืืืขืจื ืืื ืืืึธืก ืขืก ืกืืึทืจืืขื init
.
ืจืึธืืขืก ืงืขื ืขื ืื ืืขืจืึทืงื ืืื ืืขืืขืจ ืื ืืขืจืข. ืืืจ ืืขื ืขื ืืขืืืืื ื ืฆื ืฉืจืืืื ืคืื ืงืฆืืข ืจืืคื ืืื ืืืึท, ืึธืืขืจ ืขืก ืงืขื ืคึผืึทืกืืจื ืึทื ืึท ืืขืืขืื ืคึผืจืึธืฆืขืก ืืื ื ืืฉื ืืึธืื ืื ืจืึธืืข ืืืึธืก ืืืจ ืืึทืจืคึฟื. ืฆื ืคืึทืกืืืึทืืืื ืงืึทืืืก ืืืืขืจ ืื ื ืขืฅ, ืืืจ ื ืืฆื ืื rpc (ืืืืึทื ืคึผืจืึธืฆืขืืืจ ืจืืคื) ืึทืืืืืืขืจื ืืึธืืืืข, ืืืึธืก ืืื ืืขืืืื ืืืืฃ ืื ืืงืขืจ ืคืื ืื ื ืึธืจืืึทื ื ืขืืืึธืงืก ืืขืืืื ืืื Tarantool. ืืึธืก ืงืขื ืืืื ื ืืฆืืง ืืืื, ืืืฉื, ืืืื ืืืืืืืื ืืืื ืฆื ืืืืื ืคืจืขืื ืื ืกืงืขืืืฉืืืขืจ ืฆื ืืึธื ืื ืึทืจืืขื ืจืขืื ืืืฆื, ืืื ืืื ืืืึทืจืื ืึท ืืึธื.
ืื ืื ืืขืจ ืืืืืืืง ืคืื ื ืืื ืื ืฉืืจืื ื ืฉืืื ืืึธืืขืจืึทื ืฅ. ืคึผืึทืืจืึธื ื ืืฆื ืื SWIM ืคึผืจืึธืืึธืงืึธื ืฆื ืืึธื ืืืึธืจ ืืขืืื ื
ืืึทืืืจื ืืืืฃ ืืขื ืคึผืจืึธืืึธืงืึธื, ืงืึทืจืืจืึทืืืฉืึทื ืึธืจืืึทื ืืืืจื ืึธืืึทืืึทืืืง ืืืจืืคืึทื ืคึผืจืึทืกืขืกืื ื. ืืขืืขืจ ืคึผืจืึธืฆืขืก ืืึธื ืืืึธืจืก ืืืื ืกืืืืืืข, ืืื ืืืื ืืขืจ ืคืืจืขืจ ืคึผืืืฆืืื ื ืกืืึทืคึผืก ืจืืกืคึผืึทื ืืื ื, ืื ืจืขืคึผืืืงืข ืงืขื ืขื ื ืขืืขื ืืืืขืจ ืืืื ืจืึธืืข, ืืื ืงืึทืจืืจืึทืืืฉืึทื ืงืึทื ืคืืืืขืจ ืื ืคืืืกื ืืืง ืจืึธืืขืก ืึทืงืึธืจืืื ืืื.
ืืืจ ืืึทืจืคึฟื ืฆื ืืืื ืึธืคึผืืขืืื ืืึธ, ืืืืึทื ืึธืคื ืกืืืืืฉืื ื ืฆืืจืืง ืืื ืฆืืจืืง ืงืขื ืขื ืคืืจื ืฆื ืืึทืื ืงืึธื ืคืืืงื ืืขืฉืึทืก ืจืขืคึผืืึทืงืืืฉืึทื. ืคืื ืงืืจืก, ืืืจ ืืึธื ื ืืฉื ืืขืื ืึธืืึทืืึทืืืง ืคืืืืึธืืืขืจ ืจืึทื ืืึธื. ืืืจ ืืืื ืงืืืจ ืคึฟืึทืจืฉืืืื ืืืึธืก ืืื ืืขืฉืขืขื ืืฉ ืืื ืืืื ืืืืขืจ ืึทื ืื ืจืขืคึผืืึทืงืืืฉืึทื ืืืขื ื ืืฉื ืืจืขืื ื ืึธื ืืขืจ ืคืืจืขืจ ืืื ืืขืืื ื ืืื ืื ืงืจืืื ืืื ืืืืืขืงืขืจื ืฆื ืืื.
ืคืื ืึทืืข ืืขื, ืืืจ ืงืขื ืืึทืงืืืขื ืื ืืขืคืื ืึทื ืื ืจืึธืืขืก ืืขื ืขื ืขื ืืขื ืฆื ืืืงืจืึธ ืืึทืืื ืื ืืก. ืืื ืึท ืืื ืขื, ืืื ืืขื ืขื ืคึผืื ืงื ืึทื, ืืืืื ืืื ืืึทืืืฉืืื ืืื ืืึทืจืึทื ืืึธืึธื ืคึผืจืึทืกืขืกืึทื. ืืืขืจ ืขืก ืืขื ืขื ืืืื ืึท ื ืืืขืจ ืคืื ืคืื ืืึทืืขื ืืึทื ืืืคืขืจืึทื ืกืื. ืขืจืฉืืขืจ, ืึทืืข ืคึผืจืืืขืงื ืจืึธืืขืก ืืืื ืืขืื ืืื ืืขืจ ืืขืืืืงืขืจ ืงืึธื ืืึทืืข. ืืื ืึทืืข ืืึทืจืึทื ืืึธืึธื ืคึผืจืึทืกืขืกืึทื ืืึธื ืืืื ืืึธื ืืฉื ืคึฟืื ืืขืจ ืืขืืืืงืขืจ ืงืึธื ืืึทืืข, ืึทืืื ืึทื ืขืก ืืขื ืขื ืงืืื ืกืึทืคึผืจืืืืื ืืื ืื ืืืขื ืืืจ ืคึผืจืืืืจื ืฆื ืื ืืฉืึทืืืื ืื ืกืงืขืืืฉืืืขืจ, ืึธืืขืจ ืขืก ืคืฉืื ืืื ื ืืฉื ืขืงืกืืกืืืจื. ืืืื, ืืืจ ืืึธื ื ืืฉื ืืึธืื ืืืคืขืจืึทื ืกืื ืืื ืงืึธื ืืืขืจืกืืขืก, ืืืืึทื ืื ื ืึทืืืจ ืคืื ืื ืกืืกืืขื ืืื ืึทืืึท ืึท ืกืืืืึทืฆืืข ืืื ืืืืขืจ ืฉืืืขืจ ืฆื ืคืึธืจืืืกืืึธืื ืืื ืืืืึทื.
ื ืื ืขื ืืขื ืืึธืงืงืขืจ, ืืืจ ืงืขื ืขื ื ืืฉื ื ืึธืจ ื ืขืืขื ืึท ืจืึธืืข "ืืืื", ื ืขืืขื ืขืก ืฆื ืื ืื ืืขืจ ืืึทืฉืื ืืื ืืืืคื ืขืก ืืึธืจื. ืืื ืืืขืจ ืจืึธืืขืก ืืขื ืขื ื ืืฉื ืืื ืืคืืขืืื ืืขืจื ืืื ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื. ืืืื, ืืืจ ืงืขื ืขื ื ืืฉื ืืืืคื ืฆืืืื ืืืืขื ืืงืึทื ืจืึธืืขืก ืืื ืืืื ืืืึทืฉืคึผืื. ื ืจืึธืืข ืึธืืขืจ ืืืืืกืฅ ืึธืืขืจ ืขืก ืืื ื ืืฉื; ืืื ืึท ืืื ืขื, ืขืก ืืื ืึท ืกืื ืืืขืืึธื. ืืื ืืจืืื ืก, ืื ืจืึธืืขืก ืืืื ืืืื ืื ืืขืืืข ืืื ืื ืืื ืฆืข ืจืขืคึผืืึทืงืืืฉืึทื ืืจืืคึผืข, ืืืืึทื ืึทื ืืขืจืฉ ืขืก ืืืึธืื ืืืื ืืืืื - ืื ืืึทืื ืืขื ืขื ืื ืืขืืืข, ืึธืืขืจ ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืึทื ืืขืจืฉ.
ืืืคึผืืืืืึทื ื ืืืฉืืจืื
ืืื ืฆืืืขืืืื ืฆื ืืืืึทืื ืืื ืงืึทืจืืจืึทืืืฉืึทื ืืขืืคึผืก ืฆืขืืืืงืืขื ืึทืคึผืืึทืงืืืฉืึทื ื. ืฆื ืืึทืื ืืขืื ืืจืื ืืขืจ ืคึฟืึทืจ ืื ืืขืจืข, ืื ืคืจืืืืืืขืจืง ืคึผืึทืงืืืืฉืื RPM ืคึผืึทืงืึทืืืฉืึทื:
$ cartridge pack rpm myapp -- ัะฟะฐะบัะตั ะดะปั ะฝะฐั ./myapp-0.1.0-1.rpm
$ sudo yum install ./myapp-0.1.0-1.rpm
ืื ืืื ืกืืึทืืืจื ืคึผืขืงื ืึผืืื ืึผืืขื ืึทืืฅ ืืืจ ืืึทืจืคึฟื: ืืืืืข ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืื ืืื ืกืืึทืืืจื ืืืคึผืขื ืืึทื ืกืื. Tarantool ืืืขื ืืืื ืึธื ืงืืืขื ืืืืฃ ืื ืกืขืจืืืขืจ ืืื ืึท ืึธืคืขื ืืืงืืึทื ืคืื ืื RPM ืคึผืขืงื, ืืื ืืื ืืืขืจ ืืื ืกื ืืื ืืจืืื ืฆื ืงืึทืืขืจ. ืืึธืก ืืื ืืขืืื ืืืจื ืกืืกืืขื, ืึธืืขืจ ืขืจืฉืืขืจ ืืืจ ืืึทืจืคึฟื ืฆื ืฉืจืืึทืื ืึท ืืืกื ืงืึทื ืคืืืืขืจืืืฉืึทื. ืืื ืึท ืืื ืืืื, ืกืคึผืขืฆืืคืืฆืืจื ืื 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 ืืื ืื ืึทืืืืขืจืืืื_ืืจื ืึทืืจืขืก; ืขืก ืืึธื ืืืื ืึท ืคืื ืืจืืืกื ืืืง IP ืึทืืจืขืก, ื ืืฉื ืึท ืืึธืืขื ืืื ืื. ืึธื ืขืก, ืืึธืจื ืืฉื ืืืขื ืึทืจืืขืื, ืึทืืื ืงืึทืจืืจืึทืืืฉืึทื ืคืฉืื ืืืขื ื ืืฉื ืืึธืื ืืืจ ืงืึทืืขืจ ืึท ื ืึธืืข ืืื ืืขื ืืืืจืขืื ืึทืืืืขืจืืืื_ืืจื.
ืืืฆื ืึทื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืืจืืื, ืืืจ ืงืขื ืขื ืึธื ืืืืื ืื ืคึผืจืึทืกืขืกืึทื. ืืื ื ืึท ืจืขืืืืขืจ ืกืืกืืขื ืึทืคึผืึทืจืึทื ืืื ื ืืฉื ืืึธืื ืืขืจ ืืื ืืืื ืคึผืจืึธืฆืขืก ืฆื ืึธื ืืืืื, ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืฃ ืื ืงืึทืจืืจืึทืืืฉืึทื ืืขื ืขื ืืื ืกืืึทืืืจื ืืืจื ืื ืึทืืื ืืขืจืืคืขื ืข. ืื ืกืืึทื ืืืึทืืขื ืื ืืฅ ืืืึธืก ืึทืจืืขื ืืื ืืึธืก:
$ sudo systemctl start myapp@router
$ sudo systemctl start myapp@storage_A
$ sudo systemctl start myapp@storage_B
ืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืืืจ ืกืคึผืขืกืืคืืขื ืื ืืืืคึผ ืคึผืึธืจื ืืืืฃ ืืืึธืก ืงืึทืจืืจืึทืืืฉืึทื ืกืขืจืืืขืก ืื ืืืขื ืฆืืืื ื - 8080. ืืึธืืืจ ืืืื ืฆื ืขืก ืืื ื ืขืืขื ืึท ืงืืง:
ืืืจ ืืขื ืึทื ืืึธืืฉ ืื ืคึผืจืึทืกืขืกืึทื ืืขื ืขื ืคืืืกื ืืืง, ืืื ืืขื ืขื ื ืืฉื ื ืึธื ืงืึทื ืคืืืืขืจื. ืื ืคึผืึทืืจืึธื ืงืขื ื ืึธื ื ืืฉื ืืืืกื ืืืขืจ ืืึธื ืจืขืคึผืืึทืงืืื ืืื ืืืขืืขื ืืื ืงืขื ืขื ื ืืฉื ืืึทืื ืึท ืืึทืฉืืืก ืืืืฃ ืืื, ืึทืืื ืขืก ืืื ืืืืจืื ืคึฟืึทืจ ืืื ืืืขืจ ืึทืงืฉืึทื ื. ืึธืืขืจ ืืืจ ืืึธื ื ืื ืืึธืื ืคืื ืืจืืจื: ืื ืืขืื ืคืื ืึท ื ืืึท ืงื ืืื ืืืืื ืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ืืขืจ ืขืจืฉืืขืจ ื ืึธืืข. ืืขืจื ืึธื ืืืจ ืืืืื ืื ืื ืืขืจืข ืฆื ืืขื ืงื ืืื, ืืึทืฉืืืืขื ืืื ืจืึธืืขืก, ืืื ืืื ืืขื ืคืื ื ืื ืืืคึผืืืืืึทื ื ืงืขื ืขื ืืืื ืืขืจืขืื ื ืืื ืืฆืืื ืืขืขื ืืืงื.
ืืึธืืืจ ืืืกื ืึท ืืืื ืคืื ืืืื ืืึทืืืืกืืข ืืจืื ืงืขื ืืื ืึธืคึผืจืืขื ื ืึธื ืึท ืืึทื ื ืึทืจืืขื ืืืึธื. ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืขื ืขื ืืืื ืืขืืืืื ื.
ืจืขืืืืืึทืื ืคืื
ืืืึธืก ืืขื ืขื ืื ืจืขืืืืืึทืื? ืคึผืจืึผืืื ืขืก, ื ืืฆื ืขืก, ืืึธืื ืืึทืืขืจืงืื ืืขื, ืฉืึทืคึฟื ืืืงืืฅ ืืืืฃ Github.
ืจืขืคึฟืขืจืขื ืฆื
[ืงืกื ืืืงืก]
ืืงืืจ: www.habr.com