定时任务调度技术选型(quartz、xxl-job、elastic-job)

目录

一、背景

二、技术选型

三、结论


一、背景

       目前在开发应用平台中的平台消息发送需要根据消息配置动态生成定时任务,并支持定时任务实时调整。考虑后期进行外部数据源数据同步也需要定时任务,因而有必要增加一个统一的定时任务调度管理界面,方便管理和监控定时任务的运行状态。

二、技术选型

        目前市场上主流的任务调度框架主要有quartzxxl-jobelastic-job

        Quartz是Java的一个开源的作业调度框架,它可以集成到各种各样的应用服务中,提供了强大的任务调度功能。

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

       ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。 它的各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署。

下面对这几个任务框架进行对比分析:

特性

quartz

xxl-job

elastic-job

依赖

Jdbc支持的关系型数据库(mysql、oracle)

yMsql

zookeeper

高可用

多节点部署,通过竞争数据库锁来保证只有一个节点执行任务,分布式支持不友好

基于竞争数据库锁保证只有一个节点执行任务,支持水平扩容。可以手动增加定时任务,启动和暂停任务,有监控

通过zookeeper的注册与发现,可以动态的添加服务器

监控告警

发送报警邮件

通过事件订阅方式可自行实现

管理界面

任务分片

不支持

支持

支持

1、quartz

       优点:可以与spring 集成,支持动态添加任务和集群

       缺点:分布式支持不友好、没有自带的管理界面;调度逻辑和执行任务耦合在一起;维护需要重启服务;基于数据库锁调度任务,存在性能瓶颈

       总结:针对目前项目情况,利弊相同

2、xxl-job

      优点:支持集群部署;提供运维界面、维护成本小、自带错误预警;相对elastic-job来说不需要额外的组件(zookeeper);

      缺点:相对quartz来说需要多部署调度中心,目前只适用mysql数据库;基于数据库锁调度任务,存在性能瓶颈

      总结:针对目前项目情况,利大于弊

3、elastic-job

     优点:与spring集成,支持分布式,集群,性能不错

     缺点:依赖zookeeper,复杂度增加,可靠性降低,维护成本高

     总结:针对目前项目情况,弊大于利

三、结论

        结合当前应用平台项目,不考虑数据库的限制选用xxl-job比较合适,如果考虑数据库问题可以使用quartz,自行开发任务管理监控页面即可。

最近注册了一个公众号,分享一些技术经验等,欢迎有兴趣的朋友关注支持,在此非常感谢!

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棉花糖老丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值