Разве хронос не является централизованным планировщиком?

Почему хронос называется распределенным и отказоустойчивым планировщиком? Насколько я понимаю, работает только один экземпляр планировщика, который управляет расписаниями заданий.

Согласно документу Chronos, внутренний цикл главного планировщика Chronos довольно прост.

Шаблон выглядит следующим образом:

  1. Chronos считывает все состояние работы из государственного хранилища (ZooKeeper)

  2. Задания регистрируются в планировщике и загружаются в график заданий для отслеживания зависимостей.

  3. Задания разделены на список тех, которые должны быть запущены в текущее время (на основе часов хост-машины), и тех, которые не должны.
  4. Задания в списке выполняемых заданий ставятся в очередь и будут запущены, как только появится достаточное предложение.
  5. Chronos будет спать до тех пор, пока не будет запущено следующее задание, и начнется снова с шага 1.

Эксперты, пожалуйста, с мнением?

1 ответ

Решение

Вы можете запускать Chronos как один узел (о чем вы говорите), но Chronos предназначен для работы с несколькими узлами на разных хостах (достижение HA через кворум Zookeeper). Это соответствует стандартной методологии лидера / последователя, когда активен только лидер, а последователи перенаправляют трафик на лидера. Это считается HA во многих средах с открытым исходным кодом, в том числе Mesos, как показано здесь.

Может произойти отречение или отказ лидера, в который входит Zookeeper - выборы лидера Chronos произойдут после сбоя с лидером, при условии, что кворум был установлен и поддерживается до этого события.

Смотрите ссылку на несколько узлов здесь и здесь.

Как указываются выборы лидера: JobSchedulerElectionSpec.scala

Перенаправление лидера: RedirectFilter.scala

Другие вопросы по тегам