Brokers - AnaNek/tarantool GitHub Wiki
Введение
Брокеры могут использоваться как инструмент, который работает совместно с тарантулом и выполняет какую-то работу все время пока тарантул запущен.
каждый брокер представляет собой следующую структуру в конфиг-файле
{
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
, через который брокер по стандартным каким-то командам будет выполнять какие-то стандартные действия.