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

一、框架对比

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.xdnf.cn/news/143311.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

计算机人工智能前沿进展-大语言模型方向-2024-09-19

计算机人工智能前沿进展-大语言模型方向-2024-09-19 1. SAM4MLLM: Enhance Multi-Modal Large Language Model for Referring Expression Segmentation Authors: Yi-Chia Chen, Wei-Hua Li, Cheng Sun, Yu-Chiang Frank Wang, Chu-Song Chen SAM4MLLM: 增强多模态大型语言模型…

kubernetes持久化存储

一 、Volumes 容器的弊端: 1. Container (容器) 中的磁盘文件是短暂的,当容器崩 溃时,kubelet 会重新启动容器,但最初的文件将丢 失,Container 会以最干净的状态启动。 2. 当一个 Pod 运行多个 Container 时&#x…

网络安全:建筑公司会计软件遭受暴力攻击

黑客正在暴力破解基金会会计服务器上高权限账户的密码,这些账户广泛用于建筑行业,从而侵入企业网络。 这一恶意活动最先被 Huntress 发现,其研究人员于 2024 年 9 月 14 日检测到了此次攻击。 Huntress 已经发现这些攻击对管道、暖通空调、…

解决mac下 Android Studio gradle 下载很慢,如何手动配置

抓住人生中的一分一秒,胜过虚度中的一月一年! 小做个动图开篇引题 前言 平时我们clone git 上项目,项目对应gradle版本本地没有,ide编译会自动下载,但是超级慢可能还下载失败,下面讲解下此问题如 如下图所示&#xff…

TCP: Textual-based Class-aware Prompt tuning for Visual-Language Model

文章汇总 存在的问题 原文:具有图像特定知识的图像条件提示符号在提升类嵌入分布方面的能力较差。 个人理解:单纯把"a photo of {class}"这种提示模版作为输入是不利于text encoder学习的 动机 在可学习的提示和每一类的文本知识之间建立…

软考高级:嵌入式系统调度算法 AI 解读

嵌入式系统中的调度算法用于管理任务的执行顺序,确保系统资源能够有效分配。以下是几种常见的调度算法的通俗讲解。 生活化例子 想象你是一位超市收银员,有很多顾客排队,每位顾客都可以看作一个任务,收银台就是你的处理器。你需…

【Web】从网安的角度浅聊Groovy命令执行

什么是 Groovy? Groovy 是一种基于 Java 平台的动态语言,旨在提高开发效率。它与 Java 语言高度兼容,允许开发者以更简洁的方式编写代码。Groovy 支持面向对象编程、闭包、DSL(领域特定语言)等特性,使得它…

四、Cookie 和 Session

文章目录 1. Cookie 饼干1.1 什么是 Cookie?1.2 如何创建 Cookie1.3 服务器如何获取 Cookie1.4 Cookie 值的修改1.5 浏览器查看 Cookie1.6 Cookie 生命控制(指浏览器中Cookie的存在时间)1.7 Cookie 有效路径 Path 的设置 2. Session 会话2.1 什么是 Ses…

实例讲解电动汽车钥匙ON挡上下电控制策略及Simulink建模方法

在电动汽车VCU开发中,上下电控制是其中一个核心控制内容,也是其他控制功能的基础,而钥匙ON挡上下电又是整车上下电的基础。本文介绍电动汽车钥匙ON挡上下电的控制策略及Simulink建模方法。 目录 一、整车高压原理 二、钥匙ON挡上下电控制策…

养殖场中的分布式光伏发电

海南农垦集团其前身是与海南省农垦总局实行政企合一的海南省农垦总公司,属直属三大垦区之一。该集团在海南有多个养殖场,本次工程涉及到红华养猪场、红华肉牛繁育场、白沙县邦溪镇和牛产业扶贫养殖场等多个项目,通过在厂房屋顶铺设分布式光伏…

干货-并发编程提高——重谈 RUNNABLE-上篇(十四)

具体来看下 State.RUNNABLE 状态,即所谓的可运行状态。(以下简称 runnable) 再次强调,这里谈论的是 Java 虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。 具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中…

kafka消息发送几种方式

同步发送 or 异步发送 消息发送根据是否需要处理发送的结果分为同步发送、异步发送。 同步发送:等待发送结果返回,这种方式是可靠的,因为异常能及时处理,但同步发送需要阻塞等待一条消息发送完才处理下一条,吞吐量差。…

计算机网络基础 - 应用层(3)

计算机网络基础 应用层P2P 应用P2P 体系结构的扩展性BitTorrent 协议torrenl 洪流BitTorrent 运行的过程 P2P文件共享应用非结构化 P2PDHT 结构化 P2P(了解) 视频流和内容分发网视频流化服务HTTP 流和 DASH内容分发网 CDN面临挑战CDN 概述CDN 操作过程集…

nonlocal本质讲解(前篇)——从滤波到Nonlocal均值滤波

线性滤波 → \rightarrow →高斯滤波 → \rightarrow →高斯滤波 → \rightarrow →双边滤波 → \rightarrow →Nonlocal均值滤波 平均 高斯 双边 Nonlocal 目录 线性滤波高斯滤波双边滤波Nonlocal均值滤波 滤波最初是频域的概念,由于频域乘积对应空域卷积&am…

Maven和Springboot初识

(一)Maven Maven是一个项目管理工具,通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具 (可以通过pom.xml文件的配置来获取jar包,而不用手动添加) Maven可以提高我们的开发效率减少…

深度学习自编码器 - 使用自编码器学习流形篇

序言 在数据科学的浩瀚宇宙中,深度学习如同一颗璀璨的星辰,引领着我们对复杂数据内在规律的探索。其中,自编码器作为深度学习家族中的一位独特成员,以其非凡的能力——通过无监督学习捕捉数据的有效表示,而备受瞩目。…

从数据仓库到数据飞轮:数据技术演进的探索与思考

引言 在当今的数字化浪潮中,数据被视为一种极具价值的资源,类似于传统工业时代的石油,它为企业挖掘出深邃的洞察力,并成为决策过程中不可或缺的基石。随着技术的不断演进,数据管理的策略与架构也经历了显著的变革&…

Linux C高级 day1

1、 2、ubuntu中桥网络桥接模式配置流程: 首相需保证虚拟机提供了《桥接模式》 从菜单栏打开“虚拟机”选项卡下的“设置” ,如图设置虚拟机网络连接模式 此处无需勾选“复制物理网络连接状态” 而后 从菜单栏选择“编辑”下的“虚拟网络编辑器” &a…

leetcode75-9 压缩字符串 双指针原地算

题目太复杂了 没做出来 计算过程大概是双指针处理数组, 其中两个知识点一个是length 字符数组直接加 不用加括号 还有就是数字转字符需要转换 数字转换成字符 不能直接转换! 需借助数字转字符串, 首先将数字转为字符串,…

徒增成本,还是有备无患?说说4G模组SIM双卡切换

初学开发的小伙伴提出疑问: 手机双卡可以理解,人情世故各种缘由…… 物联网设备有必要双卡吗,会不会太浪费? 实际应用中,双卡可不是徒增成本的摆设,而是有备无患的必需。 在使用4G模组双卡功能的场景下&a…