Разве хронос не является централизованным планировщиком?
Почему хронос называется распределенным и отказоустойчивым планировщиком? Насколько я понимаю, работает только один экземпляр планировщика, который управляет расписаниями заданий.
Согласно документу Chronos, внутренний цикл главного планировщика Chronos довольно прост.
Шаблон выглядит следующим образом:
Chronos считывает все состояние работы из государственного хранилища (ZooKeeper)
Задания регистрируются в планировщике и загружаются в график заданий для отслеживания зависимостей.
- Задания разделены на список тех, которые должны быть запущены в текущее время (на основе часов хост-машины), и тех, которые не должны.
- Задания в списке выполняемых заданий ставятся в очередь и будут запущены, как только появится достаточное предложение.
- Chronos будет спать до тех пор, пока не будет запущено следующее задание, и начнется снова с шага 1.
Эксперты, пожалуйста, с мнением?
1 ответ
Вы можете запускать Chronos как один узел (о чем вы говорите), но Chronos предназначен для работы с несколькими узлами на разных хостах (достижение HA через кворум Zookeeper). Это соответствует стандартной методологии лидера / последователя, когда активен только лидер, а последователи перенаправляют трафик на лидера. Это считается HA во многих средах с открытым исходным кодом, в том числе Mesos, как показано здесь.
Может произойти отречение или отказ лидера, в который входит Zookeeper - выборы лидера Chronos произойдут после сбоя с лидером, при условии, что кворум был установлен и поддерживается до этого события.
Смотрите ссылку на несколько узлов здесь и здесь.
Как указываются выборы лидера: JobSchedulerElectionSpec.scala
Перенаправление лидера: RedirectFilter.scala