人生苦短,不如养狗
一、背景
在日常业务中或多或少都会碰到这样的需求,需要在指定时间执行某个任务,或者周期性的执行某个任务。类似这种任务,一般可以归结为定时任务。正所谓:哪里有需求,哪里就有创造。为了满足定时任务这样的需求,各种任务调度框架应运而生。Timer、ScheduledThreadPoolExecutor(什么?你没看错,这个也可以做定时任务)、Quartz等等。但随着分布式、微服务的发展,以上的作业调度框架就有点不够看了。主要有以下几个问题:
- 无法获知任务运行数据:比如任务列表、任务执行状态等;
- 在不重启应用的情况下,无法动态的对任务参数进行修改(不使用配置中心的情况下);
- 在不重启应用的情况下,无法操作任务的生命周期:比如启动、终止、重启、删除等操作;
- 缺少任务失败报警机制
- 不适用于分布式场景
下面,闲鱼就根据自己了解到的市面上比较常用的三款分布式任务调度工具进行简单的对比分析。
二、常见分布式调度工具对比
从几个较大的博客平台以及GitHub上的调研结果来看,比较常用的开源分布式任务调度框架有如下三个:Elastic-Job(当当网)、Saturn(唯品会)、xxl-job(大众点评-个人)。
简单介绍
Elastic-Job
:Elastic-Job是当当网开源的一个分布式调度解决方案,主要是有两个相互独立的子项目El