chronos不是集中式调度程序吗?

时间:2018-07-24 13:01:12

标签: mesos mesosphere mesos-chronos

为什么将chronos称为分布式且容错的调度程序?据我了解,只有一个正在运行的调度程序实例可以管理作业调度。

根据Chronos文档,在内部,Chronos调度程序主循环非常简单。

模式如下:

  1. Chronos从状态存储(ZooKeeper)中读取所有作业状态

  2. 作业在调度程序中注册,并加载到作业图中以跟踪依赖性。

  3. 作业被分为一个列表,这些列表应在当前时间(基于主机的时钟)运行,而在当前时间不应运行。
  4. 要运行的作业列表中的作业被排队,并且一旦有足够的报价就将启动。
  5. Chronos将休眠,直到计划运行下一个作业,然后从步骤1重新开始。

请专家发表意见?

1 个答案:

答案 0 :(得分:1)

您可以将Chronos作为单个节点运行(这是您在说的),但是Chronos旨在在多个节点上运行,每个节点都在不同的主机上(通过Zookeeper仲裁实现HA)。这遵循标准的领导者/跟随者方法,在该方法中,只有领导者处于活动状态,而关注者会将流量重定向到领导者。在许多开源框架(包括Mesos as seen here.

)中,这被认为是HA。

可能发生领导退位或失败,这就是Zookeeper的作用-如果领导者失败,则将进行Chronos领导者选举,前提是在此事件之前已经建立并维持了法定人数。

请参见多节点herehere的参考。

如何指定领导人选举: JobSchedulerElectionSpec.scala

领导重定向: RedirectFilter.scala