接上大数据系统之任务调度[1], 记录一下我写的一个最简单的调度系统.
系统结构
Trigger 依靠 Server 上的 crontab. 自带 cron 表达式解析
-
Job Shell 模块负责跟 Job Server 交互, 本身仅仅是套在任务外面的一个脚本:
- 任务启动前请求 Job Server 模块, 询问本任务的所有前置任务是否都已经成功完成.
- 一旦前置任务都已经成功, 正常启动本任务
- 如果前置任务还在执行, 进入 for 循环等待
- 如果有前置任务失败, 直接告知 Job Server 任务由于前置任务失败而退出
- 任务启动前请求 Job Server 模块, 询问本任务的所有前置任务是否都已经成功完成.
-
Job Server 模块
- 维护任务的依赖关系数据
- 负责接受 Job Shell 脚本请求, 决定任务是否应该执行
- 负责记录所有任务的状态
- 负责根据规则告警
- 提供简单 UI, 供 Admin 调试
-
代码部署流程
- 每个开发负责自己任务的代码部署
- 设置 Server 上的 crontab.
- 在 Job Server 上配置任务的依赖.
整个项目只有几百行代码.
本系列完.
-- EOF --