分布式任务调度器介绍

1. Azkaban

网址:https://azkaban.github.io

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

2. quartz

网址:http://www.quartz-scheduler.org

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

3. Elastic-job

网址:http://elasticjob.io

elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。

elastic-job主要的设计理念是无中心化的分布式定时调度框架,思路来源于Quartz的基于数据库的高可用方案。但数据库没有分布式协调功能,所以在高可用方案的基础上增加了弹性扩容和数据分片的思路,以便于更大限度的利用分布式服务器的资源。

4. XXL-JOB

网址:https://github.com/xuxueli/xxl-job

XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

5. saturn

网址:https://github.com/vipshop/Saturn

Saturn (任务调度系统)是唯品会Venus体系的一个组成部分,负责分布式的定时任务的调度,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置,统一监控,任务高可用以及分片并发处理。Saturn基于当当Elastic Job代码基础上自主研发的任务调度系统。

名称 框架实现方式 可能的问题 优点
quartz 依赖数据库,无中心 线上问题,因配置问题引起JOB延时
xxl-job 需要部署调度中心和数据库 若任务数量超过调度中心处理能力,会造成延时 文档完善,学习成本低,管理界面完善
elasticjob 依赖zk 若主节点下载,在主节点选出前会暂停调度能力 文档完善,依赖zk无中心
Saturn 依赖zk 同elasticjob 文档完善,管理界面完善
azkaban