Apache Chronos 架构说明

Apache Chronos Architecture Explaination

我想看看是什么让 Chronos 比 Crons 更好?我无法完全理解它的作业调度和执行架构。

具体来说,这些是我不清楚的关于 chronos 架构的问题。

  1. 我在一份 Chronos 文档中读到,由于 crons 具有 SPoF,因此 crons 不好,而 cronos 更好。 chronos 如何避免 SPoF?
  2. Chronos 中的工作计划保存在哪里?它是否为此维护某种数据库?
  3. 如何触发预定作业,谁向 Chronos 发送事件来触发作业?
  4. 依赖作业是否由 chronos 触发,如果是,chronos 如何知道父作业何时完成?它能区分失败的作业和完成的作业吗?
  5. 我看到 chronos 中的作业是使用 Json 格式定义的,使用 JSON 的任何原因,而不是任何其他格式,如 YAML、Apache Config 等。
  6. chronos 中的一个作业可以有多个命令吗?如果是,所有这些不同的命令是否会在集群中的同一台机器上执行,或者 Chronos 甚至可以在集群中的不同机器上的作业中启动不同的命令?作业中的这些多个命令可以并行启动吗?
  7. 如果 mesos 已经具有调度功能,那么为什么还需要 Chronos? Chronos 运行 可以没有 Mesos 吗?
  8. Chronos 是否支持基于事件的调度?例如 运行 创建文件 'x' 时我的工作等
  9. 作业的异步 运行 在 Chronos 中意味着什么?

有没有人对理解 Chronos 的架构有很好的参考?

你的一些问题在我的回复中得到了回答所以我将重点关注其他未解决的问题。

  1. Chronos 将状态存储在内存中,除非您使用 Zookeeper,在这种情况下,它默认存储在 /chronos/state 的 Zookeeper 中 reference here.

  2. 参见:Chronos: How does it work?

  3. 基于lastsuccesslastfailureseen here

  4. 因为作者决定使用JSON和一个RESTful API

  5. 是的。使用 && 或 bash 脚本...它们都将在作业 运行ning 所在的同一台机器上执行。不,单个作业不能 运行 并行执行命令,但可以同时安排多个作业。

  6. 因为 Chronos 适用于可以定期安排的短期 cron 作业,而 Marathon 适用于长期任务。 Chronos 是 cron 的良好替代品的原因是它 完全 依赖于 Mesos - 这意味着您还可以使用 Mesos 属性来适当地围绕 Mesos 集群安排作业。参见 here and here

  7. 没有。

  8. 异步作业的状态值得怀疑,看起来像 was removed,但遗憾的是在文档中仍然有一些参考。