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.rhkb.cn/news/427326.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用NotificationChannel实现后台视频上传

1、添加依赖 implementation net.gotev:uploadservice:4.8.0 implementation net.gotev:uploadservice-okhttp:4.8.02、在application中初始化服务: //初始化上传服务private fun initUploadService() {// 文件上传createNotificationChannel()//notificationChan…

算法里面的离散化

一、离散化(discretization)在算法和数据结构中指的是将连续的输入数据映射到离散的值或者范围,从而使得处理和计算变得更高效。通常用于处理大范围或者无限可能的输入,以便将其转化为有限的、可以有效处理的范围。 离散化的定义…

【深度学习】(3)--损失函数

文章目录 损失函数一、L1Loss损失函数1. 定义2. 优缺点3. 应用 二、NLLLoss损失函数1. 定义与原理2. 优点与注意3. 应用 三、MSELoss损失函数1. 定义与原理2. 优点与注意3. 应用 四、BCELoss损失函数1. 定义与原理2. 优点与注意3. 应用 五、CrossEntropyLoss损失函数1. 定义与原…

9.19总结

这几天学习了网络流 1,EK ek的主要思路是不断通过bfs找到增广路,找到增广路再建立反向边,直到不能再bfs到汇点,为什么可以通过建反向边呢?以上图举例,上图走完第一条增广路建立了一条反向边,当…

Maya动画基础

Maya动画基础教程(完整)_哔哩哔哩_bilibili 第一集 动画基础设置 altv播放动画 选择撕下副本 右键---播放预览 第二集 k帧记录物体的空间信息 初始位置清零 删除历史记录 s键key帧 自动记录位置信息 删除帧,按住右键选择delete 按shif…

Python if 语句优化技巧

大家好!今天我们来聊聊Python中的if语句优化技巧。if语句是Python中最基本的控制结构之一,它用于根据条件执行不同的代码块。虽然if语句本身非常简单,但通过一些小技巧,可以让我们的代码更加高效、简洁。接下来,我们将…

LeetCode 算法笔记-第 04 章 基础算法篇

1.枚举 采用枚举算法解题的一般思路如下: 确定枚举对象、枚举范围和判断条件,并判断条件设立的正确性。一一枚举可能的情况,并验证是否是问题的解。考虑提高枚举算法的效率。 我们可以从下面几个方面考虑提高算法的效率: 抓住…

js中两种异步方式:async+await以及then

第一种方式 第二种方式 完整代码 前端代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>pywebv…

重学SpringBoot3-SpringApplicationRunListener

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-SpringApplicationRunListener 1. 基本作用2. 如何实现2.1. 创建SpringApplicationRunListener2.2. 注册SpringApplicationRunListener2.3. 完整示例 3.…

【机器学习】经典数据集鸢尾花的分类识别

【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取…

【海贼王航海日志:前端技术探索】一篇文章带你走进JavaScript(一)

目录 1 -> 初识JavaScript 1.1 -> JavaScript是什么 1.2 -> 发展历史 1.3 -> JavaScript和HTML和CSS之间的关系 1.4 -> JavaScript运行过程 1.5 -> JavaScript的组成 2 -> 前置知识 2.1 -> JavaScript的书写形式 2.2 -> 注释 2.3 -> 输…

使用OpenCV进行模糊检测(拉普拉斯算子)

参考&#xff1a; 使用OpenCV进行模糊检测&#xff08;拉普拉斯算子&#xff09; 代码&#xff1a; # import the necessary packages from imutils import paths import argparse import cv2 import osdef variance_of_laplacian(image):# compute the Laplacian of the ima…

ISSTA 2024盛大开幕:中国学者的录取数和投稿量均位列第一

随着夏日的尾声&#xff0c;全球软件测试领域的专家和学者齐聚在奥地利维也纳。共同参与这场科技盛宴——ISSTA 2024。这场国际会议正如火如荼地进行中&#xff0c;吸引了来自世界各地的专业人士参与。 会议实况&#xff1a; 9月16日与17日&#xff0c;大会安排了丰富的社交活…

把设计模式用起来!(3)用不好模式?之时机不对

上一篇&#xff1a;《把设计模式用起来&#xff08;2&#xff09;——用不好&#xff1f;之实践不足》 本篇继续讲设计模式用不好的常见原因&#xff0c;这是第二个&#xff1a;使用设计模式的时机不对。 二、时机不对 这里说的时机并不是单纯指软件研发周期中的时间阶段&…

使用rust自制操作系统内核

一、系统简介 本操作系统是一个使用rust语言实现&#xff0c;基于32位的x86CPU的分时操作系统。 项目地址&#xff08;求star&#xff09;&#xff1a;GitHub - CaoGaorong/os-in-rust: 使用rust实现一个操作系统内核 详细文档&#xff1a;自制操作系统 语雀 1. 项目特性 …

数据库加密算法

功能简介 对数据库字段进行加密,如下图: 一、yml配置 注意: MD5_32 MD5_16 BASE64 AES SM2 SM3 SM4 需要 password(14位 ,26位, 32 位) 就行 非对称算法如:SM2,RSA, 需要配置 密码:password 公钥:publicKey 私钥:privateKey yml: # 数据加密 mybatis-encry…

【新手/小白教程】打开一个vue项目的前置准备,nvm安装指定版本node

目录 一、前言二、nvmnvm介绍nvm下载与安装1. 官网下载 nvm 包2. 安装 nvm-setup.exe3. 配置路径和下载镜像4. 检查nvm是否安装完成5. 错误情况 三、nodenode版本查看node命令 一、前言 在换新电脑的时候总是需要把所有东西重新安装配置&#xff0c;这篇用来记录一下打开一个v…

vmware中的ubuntu系统扩容分区

1.虚拟机关机 右击虚拟机/设置&#xff0c;进入虚拟机设置 3.启动虚拟机&#xff0c;进入命令行 4.fdisk -l查看要扩展的分区名 5.resize要扩容的分区 su root parted /dev/sda resizepart 3 100% fdisk -l resize2fs /dev/sda3 df -T完成 6.其他 进入磁盘管理 fdisk /d…

【深度智能】:迈向高级时代的人工智能全景指南

​ ​ 前几天偶然发现了一个超棒的人工智能学习网站&#xff0c;内容通俗易懂&#xff0c;讲解风趣幽默&#xff0c;简直让人欲罢不能。忍不住分享给大家&#xff0c;人工智能立刻跳转&#xff0c;开启你的AI学习之旅吧&#xff01; 第一阶段&#xff1a;基础知识 1. 计算机科…

Kotlin 中的 `flatMap` 方法详解

在 Kotlin 中&#xff0c;flatMap 是一个非常强大的集合操作函数&#xff0c;它结合了 map 和 flatten 的功能。flatMap 能够将一个集合中的每个元素映射为另一个集合&#xff0c;然后将这些集合连接成一个单一的集合。在很多场景下&#xff0c;它比单独使用 map 和 flatten 更…