xxl-job、Quartz、power-job、elastic-job对比选型

ops/2024/9/24 3:07:52/

一、框架对比

1. Quartz

优点:稳定性和可扩展性好,适用于企业级应用;调度功能丰富,满足多种需求。

缺点:本身不提供原生的分布式支持,需要通过扩展或与其他组件结合来实现分布式任务调度;调度逻辑和执行逻辑通常并存于同一个项目中,可能影响系统性能。

Quartz文档

2. XXL-JOB(大众点评)

优点:
  • 简单易用:XXL-Job提供了简洁的API和可视化的管理界面,使得用户可以轻松地创建、管理和监控任务。
  • 功能强大:支持多种任务类型(定时任务、周期性任务、手动触发任务等),能够满足不同场景下的需求。
  • 高可靠:提供了多种容错机制,如任务失败重试、任务超时处理等,确保任务的可靠执行。
  • 分布式架构:支持分布式部署,能够支持大规模的任务调度需求,并且具有良好的扩展性和容错性。
缺点:
  • 中心化设计:虽然便于管理和维护,但可能存在单点故障的风险。
  • 弹性扩容相对较弱:需要手动进行节点的增加和删除,然后通过调度中心进行任务的重新分配,操作相对繁琐。
  • 官方只适配了mysql数据库,使用其他数据库需要修改使其兼容(实现起来不复杂)

xxl-job github源码icon-default.png?t=O83Ahttps://github.com/xuxueli/xxl-job

xxl-job gitee源码icon-default.png?t=O83Ahttps://gitee.com/xuxueli0323/xxl-job

视频教程icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1824y1G7vT/?spm_id_from=333.337.search-card.all.click&vd_source=9a54337f2c285aab0a68f68a2b0dabf8

XXL-JOB-2.4.0适配Oracle数据库icon-default.png?t=O83Ahttp://XXL-JOB-2.4.xn--0oracle-5j1ns36a34e5q6lrid

3. PowerJob

优点:
  • 无锁化设计:摒弃了传统调度框架基于数据库锁的设计,性能大幅度提升。
  • 丰富的任务类型:除了常见的API、CRON、固定频率、固定延迟外,还支持工作流和每日固定间隔等任务类型。
  • 灵活的执行配置:支持单机执行、广播执行、Map执行、MapReduce执行等多种执行方式。
  • 调度端不支持动态扩容
  • 数据库支持得比较多(使用spring jpa,适配mysql oracle mongdb等都支持)
  • 日志上报,整合ELK等
缺点:
  • 相对较新:可能在一些成熟度和社区支持方面不如其他老牌框架。文档少,管理端提示很少,使用感较差
  • 学习成本高:对于不熟悉其设计理念的开发者来说,可能需要一定的时间来适应和学习。
  • 框架非常重:支持很多其他业务功能

power-job 官网icon-default.png?t=O83Ahttp://www.powerjob.tech/

power-job 官方文档icon-default.png?t=O83Ahttps://www.yuque.com/powerjob/guidence/intro

4. Elastic-job(当当)

优点:
  • 无中心化设计:基于Quartz的数据库高可用方案,并增加了弹性扩容和数据分片的思路,使得任务调度更加灵活和可扩展。
  • 强大的弹性扩容能力:引进zookeeper注册中心,对比其他框架内嵌的服务发现,使用分布式思想将服务拆分,对于执行端、调度端压力减少,实现了自动的弹性扩容
  • 丰富的任务配置选项:如作业分片、负载均衡、故障转移等,提供了高度的灵活性和可配置性。实现高可用
缺点:
  • 系统架构复杂:由Elastic-Job-Lite和Elastic-Job-Cloud两个子项目组成,可能增加了部署和维护的复杂度。维护成本高
  • 学习成本高:对于初学者来说,理解和掌握其复杂的系统架构和配置可能需要一定的时间。

elastic-job 官网icon-default.png?t=O83Ahttps://shardingsphere.apache.org/elasticjob/index_zh.html

elastic-job 官方文档icon-default.png?t=O83Ahttps://shardingsphere.apache.org/elasticjob/current/cn/overview/

PowerJob 和Quartz、XXL-JOB对比:

二、技术选型建议

  • 不需要分布式支持的小项目选择Quartz
  • 简单任务调度,业务纯粹选择xxl-job
  • 如果需要额外的业务支持(工作流、每日固定间隔等),选择power-job
  • 如果并发量大,调度任务很多,分布式大集群需要动态扩容的选择elastic-job

        针对以上任务调度框架的优缺点分析,个人觉得中小型项目选择xxl-job已经够用,除了xxl-job本身只适配mysql,但是改造起来比较简单,后续可以根据需求适配Oracle、达梦等数据库。


http://www.ppmy.cn/ops/115085.html

相关文章

演示:基于WPF的DrawingVisual开发的Chart图表和表格绘制

一、目的:基于WPF的DrawingVisual开发的Chart图表和表格绘制 二、预览 钻井井轨迹表格数据演示示例(应用Table布局,模拟井轨迹深度的绘制) 饼图表格数据演示示例(应用Table布局,模拟多个饼状图组合显示&am…

【手机马达共振导致后主摄马达声音异常】

手机马达共振导致后主摄马达声音异常 问题根因解决方案其他易混淆 问题根因 当手机马达的震动频率和摄像头AF马达的一二阶震动频率处于共振频段的时候,手机马达震动时候有很大概率会干扰到后置摄像头的对焦马达正常工作,可能出现的影响有出现滋滋杂音&a…

SpringAI-基于java大模型的胡言乱语

最近看了一点相关的springAI知识,做个小总结 胡言乱语开始 1.不同的ai调用api一般单独汇总成一个依赖,比如说调用openai的api的依赖是spring-ai-openai-spring-boot-starter。 2.最常用的展示方式是流式对话,AI的数据是一个字一个字生成的…

Java 集合(数据结构)面试题总结

一、栈和队列的区别 具体的场景应用 栈(Stack)和队列(Queue)是两种基本的数据结构,它们在数据的存取顺序上有不同的规则。以下是它们的主要区别以及具体的应用场景。 1. 栈(Stack) 特点&…

WGCAT工单系统 v1.2.1 支持导出PDF和分享创建工单功能

官网下载:www.wgstart.com WGCAT-v1.2.1 更新说明,2024-09-15发布 1. 新增,工单数据支持导出为PDF文件 2. 新增,可以分享给其他人创建工单,分享创建工单的链接不需要登录,直接可以提交工单数据,…

【编程基础知识】mysql是怎样执行一条sql语句的,涉及到哪些环节步骤是,mysql的整体体系结构是啥样的,有哪些组件

一、步骤 MySQL执行一条SQL语句的过程涉及多个环节和步骤。以下是这一过程的概述: 客户端连接:客户端通过连接器(Connector)向MySQL服务器发起连接请求。身份验证:连接器对用户身份进行验证,确保用户有权…

TypeError: expected string or buffer - Langchain, OpenAI Embeddings

题意:类型错误:期望字符串或缓冲区 - Langchain,OpenAI Embeddings 问题背景: I am trying to create RAG using the product manuals in pdf which are splitted, indexed and stored in Chroma persisted on a disk. When I tr…

Python编码系列—Python代理模式:为对象赋予超能力的魔法

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…