批处理服务/调度中心
- 现在多数是通过消息队列和workflow engnie来调度。但是,部分C#和Java代码是通过单线程来运行的。
- 需要管理跑批的依赖关系
- 看看是否可以使用Spring Batch、Dangdang也有一个框架ElasticJob
- 多个任务的组合、调度与监控
解决方案
重点解决各项目组的跑批任务调度问题,使用azkaban做分布式任务调度系统。azkaban的连接:https://azkaban.github.io/
任务调度系统基本功能
- 支持多个任务的并发与顺序依赖调度,并有对应的DAG图展示;
- 支持任务的编写类型,如unix shell等;
- 节点任务控制,如支持某些任务跳过、失败重试、立即执行、指定时间周期性执行;
- 监控任务执行状态,并支持报警通知;
- metrics,支持一段时间内任务的运行时间查看;
- 通过ui查看与编辑。
补充需求:
- 支持相互依赖的任务之间的时间停顿,举例,b依赖于a成功执行后二十分钟之后再触发;
- 支持多种任务依赖回调方式,http请求回调依赖?queue?
- 支持任务执行失败后的回调操作。
- 可以暂停、启动定时任务
- 支持queue、topic
- 任务的分布式(多个节点并发执行同一个任务)调度执行
为什么选azkaban
- 任务调度系统的基本功能都支持;
- 监控报警支持成功、失败、结束、一段时间内部不成功/结束发送报警邮件。
- 支持command和java编写job
- 使用java语言,二次开发方便;
- 支持unix cron trigger的语法配置job的执行计划,学习成本低;