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

Isn't chronos a centralized scheduler?

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

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

规律如下:

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

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

  3. 作业被分成一个列表,其中包含当前时间应该 运行 的作业(基于主机的时钟)和不应该的作业。
  4. 运行 的工作列表中的工作正在排队,一旦有足够的报价可用,就会启动。
  5. Chronos 将休眠直到下一个作业被安排到 运行,然后从第 1 步重新开始。

请专家给点意见?

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

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

参见多节点参考here and here

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

领导重定向: RedirectFilter.scala