定时任务框架选型

一、背景

近期规划提出要将线上项目部署为多实例,多实例场景下必然要处理定时任务重复执行、负载均衡的问题。

本文档为解决分布式场景下定时任务重复执行的问题提供选型参考。其中大部分描述来自互联网资料整合,相关链接在文档底部。

主要需求如下:

1.避免重复执行

2.动态CRUD,如动态启停、业务中允许更新执行时间。

3.失效转移、负载均衡等分布式作业管理

4.定时任务管理,如查看当前任务列表、手动启停等。

5.日志回溯、异常报警等。

二、概览

经过检索找到如下几种用户群较多的候选框架。

quartz是最经典最著名的任务调度框架,其他候选至少初期都是基于它开发,进而改进了quartz的问题。

候选缺点复杂度背景
quartz1.通过独占锁来保证只有一个节点执行,没有负载均衡。 2.需要持久化任务信息到业务数据表,据说有10张以上,有侵入性。 3.调度和执行并存于同一个项目,相互影响性能。
elastic-job(elasticjob-lite,elasticjob-cloud)最重,依赖zookeeper,mesos(仅elasticjob-cloud)当当网2015开源
XXL-job基于数据库的集群方案,意味着会有性能瓶颈,但是目前的需求还远远达不到需要加机器解决瓶颈的程度。最轻,主打开箱即用大众点评2015开源
Staturn文档少zookeeper唯品会2016开源

三、Elastic-Job VS XXL-Job

由于以上,接下来只需要详细对比一下Elastic-Job和XXL-Job。

维度ElasticJobXXL-Job
依赖ZooKeeper,mesos(仅elasticjob-cloud)
易用性较复杂一般
场景注重数据设计,适合数据量大、服务器多的场景。数据量较小、服务器较少的快速开发场景,主打轻量级。
注册中心Zookeeper
其他当当网2015年开源;于2020年5月28日成为 Apache ShardingSphere 的子项目;github star 6.7k(应该是因为2020年5月才回归所以数据相对较低,在此之前有两年没更新)大众点评2015开源;github star 16.7k;
独有资源分配,应用分发,进程级调度,瞬时任务,进程隔离。(Mesos自研框架实现)
都有1.作业治理(失效转移,错过重新执行,自诊断修复,负载均衡) 2.弹性扩容,数据分片。 3.可视化管理,任务统计,日志,报警。 4.动态CRUD 5.与Spring、Dubbo配合良好。

四、参考资料

Quartz:

Quartz官方文档_w3cschool

ElasticJob官方:

概览 :: ElasticJob

https://github.com/apache/shardingsphere-elasticjob

XXL-Job官方:

分布式任务调度平台XXL-JOB

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

Saturn官方:

https://github.com/vipshop/Saturn

互联网资源(存在时效性,提到elastic-job不再更新的为过期文档):

定时任务框架:quartz、elastic-job和xxl-job的分析对比。_孤芳不自赏-CSDN博客_xxljob和quartz

分布式定时任务调度框架实践-阿里云开发者社区

分布式定时任务调度框架选型 - ssslinppp - 博客园

分布式定时任务原理以及解决方案-指定时间执行定时任务_后端研发工程师Marion的博客-CSDN博客_分布式定时任务解决方案

分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn) - ArlenXu的个人空间 - OSCHINA - 中文开源技术交流社区

干掉xxl-job:elastic-job王者归来 ? - 知乎

笑话:大厂都在用的任务调度框架我能不知道吗??? - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值