Brokers - tsafin/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, через который брокер по стандартным каким-то командам будет выполнять какие-то стандартные действия.