为什么是分布式和容错调度克罗诺斯叫? 按我的理解,只有一个管理作业调度调度实例中运行。
按照Chronos的文档,在内部,Chronos的调度主循环非常简单。
所述图案如下:
Chronos的从状态存储读取所有的工作状态(动物园管理员)
乔布斯在调度中注册,并加载到作业图用于跟踪依赖关系。
- 职位分为两类,应该在当前时间运行的列表(基于主机的时钟),以及那些不应该。
- 在作业运行列表作业进行排队,并会尽快足够的报价可用启动。
- 克罗诺斯将休眠,直到下一个作业计划运行,并从第1步重新开始。
专家请发表意见?
您可以运行的Chronos作为单个节点(这是你在说什么),但Chronos的设计与每个不同主机上(通过动物园管理员法定人数实现HA)多个节点上运行。 在此之前,标准的领导者/跟随方法,其中只有领导者是主动和从动件(S)将流量重定向到的领导者。 这被认为是HA在许多开源框架,包括Mesos 这里看到。
负责人辞职或失败,可能会发生,这是在动物园管理员进来 - Chronos的领导人选举与领导者失败后会发生,假设法定人数已经成立,并在此事件之前维持。
见多节点的参考这里和这里 。
如何领导人选举中规定: JobSchedulerElectionSpec.scala
领导者重定向: RedirectFilter.scala