为什么将chronos称为分布式且容错的调度程序?据我了解,只有一个正在运行的调度程序实例可以管理作业调度。
根据Chronos文档,在内部,Chronos调度程序主循环非常简单。
模式如下:
Chronos从状态存储(ZooKeeper)中读取所有作业状态
作业在调度程序中注册,并加载到作业图中以跟踪依赖性。
请专家发表意见?
答案 0 :(得分:1)
您可以将Chronos作为单个节点运行(这是您在说的),但是Chronos旨在在多个节点上运行,每个节点都在不同的主机上(通过Zookeeper仲裁实现HA)。这遵循标准的领导者/跟随者方法,在该方法中,只有领导者处于活动状态,而关注者会将流量重定向到领导者。在许多开源框架(包括Mesos as seen here.
)中,这被认为是HA。可能发生领导退位或失败,这就是Zookeeper的作用-如果领导者失败,则将进行Chronos领导者选举,前提是在此事件之前已经建立并维持了法定人数。
如何指定领导人选举: JobSchedulerElectionSpec.scala
领导重定向: RedirectFilter.scala