在工作中,我们的任务是实施一个调度系统。我们当前的要求要求我们安排两种类型的任务:
- 将在特定时间执行一次的任务:“在2014-01-28T10:35:08 + 00:00发送批量推送通知给以下设备”
- 重复任务:“每周一上午9点UTC,向以下人员发送摘要电子邮件”
任务本身都是命令行应用程序+需要执行的参数。
到目前为止,我们已经使用cron
实现了重复任务,但从长远来看这还不够,因为我们希望能够强大:
- 我们希望作业是交易性的 - 如果机器在作业运行时出现故障,则不应将作业标记为完成。
- 我们希望能够在一个机群中运行多台机器,但每项任务只能由一台机器运行一次
- 我们希望能够轻松查看作业的时间表和状态(可能是Web界面)。
- 我们想要一个
CRUD
API来管理工作。
- 如果我们遇到机器故障并且机器重新启动,它应该能够找到过期的任务并运行它们。
是否有行业标准工具来实现这一目标?当我们想要存储数据时,我们使用数据库,当我们想要对项目进行排队时,我们使用一个队列 - 什么是调度任务的等价物?