-
Notifications
You must be signed in to change notification settings - Fork 0
Brokers
Брокеры могут использоваться как инструмент, который работает совместно с тарантулом и выполняет какую-то работу все время пока тарантул запущен.
каждый брокер представляет собой следующую структуру в конфиг-файле
{
cmd = "/path/to/broker argument1 argument2 ...",
restart_timeout = 10,
important = 0,
admin_socket = 10,
primary_socket = 20
}
Где:
-
cmd
- путь и аргументы для запуска брокера; -
restart_timeout
- таймаут на рестарт брокера (если он вдруг прекратил работу). 0 - брокер не рестартится. в секундах; -
important
- брокер жизненно важен. При его завершении тарантул тоже должен завершить работу; -
admin_socket
- номер сокета который будет заранее открыт для брокера и присоединен к админскому порту (0 - не используется); -
primary_socket
- номер сокета который будет заранее открыт для брокера и присоединен к клиентскому порту (0 - не используется);
Тарантул на старте обходит весь массив брокеров, для тех кто указал что им нужен сокет, создает указанные сокеты, устанавливает им указанные номера, помечает их как переживающие exec, перенаправляет stdin/stdout брокера в свой лог и делает fork-exec на брокера. Далее в файбере ждет завершения брокера. Если завершился брокер помеченный как important
, то завершает работу всего тарантула. иначе если указан таймаут на рестарт - делает паузу и рестарт брокера.
- Сокет на стороне брокера - блокирующий режим;
- Сокетам нельзя установить номера 0, 1, 2;
- Всем брокерам посылается сигнал TERM по завершении работы тарантула;
- опции
*_socket
могут быть флагами. В этом случае сокеты открываются на фиксированных номерах начиная с номера 3 (первый номер послеstdout
).
В перспективе можно будет приделать какой-то стандартный механизм управления брокерами, например control_socket
, через который брокер по стандартным каким-то командам будет выполнять какие-то стандартные действия.
Architecture Specifications
- Server architecture
- Feature specifications
- What's in a good specification
- Functional indexes
- Space _index structure
- R tree index quick start and usage
- LuaJIT
- Vinyl
- SQL
- Testing
- Performance
How To ...?
- ... add new fuzzers
- ... build RPM or Deb package using packpack
- ... calculate memory size
- ... debug core dump of stripped tarantool
- ... debug core from different OS
- ... debug Lua state with GDB
- ... generate new bootstrap snapshot
- ... use Address Sanitizer
- ... collect a coredump
Lua modules
Useful links