Я пишу структуру mesos и хочу выполнять свои задачи с помощью своего собственного исполнителя. Я просмотрел пару других кодовых баз фреймворка mesos (chronos и marathon) и написал планировщик, который выполняет команды оболочки, используя исполняющую команду по умолчанию. Теперь я хочу заменить исполнителя по умолчанию чем-то нестандартным. Проблема в том, что я не могу понять, как зарегистрировать экзекьютор с слейвом. В документации по созданию фреймворка указано, что это должен быть исполняемый файл, и вы можете указать путь, используя executorInfo, но я не понимаю, как именно это сделать. Кроме того, какой смысл иметь интерфейс Executor, который должен реализовать каждый исполнитель, и в то же время требовать исполняемый файл поверх всего этого? Каковы аргументы исполняемого файла?
Как запустить задачу мезоса на конкретном исполнителе?
Ответы (1)
Исполняемые ссылки исполняемого файла на библиотеку mesos и интерфейсы / обратные вызовы исполнителя — это единственный способ получать уведомления о таких событиях, как регистрация, перерегистрация и отключение, происходящих в ведомом устройстве, или когда ваш фреймворк выдает запросы launchTask или killTask.
Он состоит из двух частей (точно так же, как и фреймворки), состоящих из ExecutorDriver и вашей реализации исполнителя.
Если вы посмотрите на mesos/executor.hpp, вы заметите, что конструктору требуется указатель на исполнителя. Например
class MyExecutor : public Executor {
/* Implement registered, reregistered, ... */
}
MesosExecutorDriver* driver = new MesosExecutorDriver(new MyExecutor());
driver->run();
// As long as the executor is running, the callbacks in MyExecutor will
// be invoked by the mesos slave when events and requests are received.
Различные обратные вызовы предоставят вам необходимые буферы протокола (определенные в mesos.proto), например. TaskInfo в launchTask, TaskID в killTask и так далее.
Когда дело доходит до фреймворка и вы хотите зарегистрировать свой собственный исполнитель, попробуйте взглянуть на https://github.com/mesosphere/mesos-go/blob/master/src/mesos.apache..org/example_framework/main.go .
Надеюсь, это поможет, и дайте мне знать, если мне нужно расширить что-либо из вышеперечисленного.