1

为什么 chronos 被称为分布式和容错调度器?据我了解,只有一个调度程序实例正在运行来管理作业计划。

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

模式如下:

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

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

  3. 作业被分成一个列表,这些列表应该在当前时间运行(基于主机的时钟),以及那些不应该运行的。
  4. 要运行的作业列表中的作业已排队,一旦有足够的报价可用,就会启动。
  5. Chronos 将休眠直到下一个作业计划运行,并从第 1 步重新开始。

请高手给点意见?

4

1 回答 1

2

您可以将 Chronos 作为单个节点运行(这就是您所说的),但 Chronos 设计为在不同主机上运行多个节点(通过 Zookeeper quorum 实现 HA)。这遵循标准的领导者/追随者方法,其中只有领导者处于活动状态,追随者将流量重定向到领导者。这在许多开源框架中被认为是 HA,包括这里看到的 Mesos。

可能会发生领导者退位或失败,这就是 Zookeeper 出现的地方 - Chronos 领导者选举将在领导者失败后发生,假设在此事件之前已经建立并维持了法定人数。

请参阅此处此处的多节点参考。

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

领导者重定向: RedirectFilter.scala

于 2018-07-27T22:15:50.153 回答