推荐一款好用的Java分布式任务调度框架!

XXL-Job 是一个分布式任务调度框架,由大众点评内部员工xxl使用Java语言开发,以轻量、易扩展、高性能、高可靠为设计目标。

该框架与 Quartz、Elastic-Job 等调度框架相比有着更加便捷易用和高效的特点。

项目地址:github.com/xuxueli/xxl...

什么是任务调度?

任务调度 是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。

以下业务场景的解决方案就是任务调度。

  • • 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。

  • • 某银行系统需要在信用卡到期还款日的前三天进行短信提醒。

  • • 某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。

  • • 12306会根据车次的不同,设置某几个时间点进行分批放票。

实现任务调度的方案有哪些?

  • 多线程方式

  • 各语言提供的任务调度API,比如:ScheduledExecutor

  • 任务调度框架,例如Quartz、elastic-job、Cron等 ,都是功能强大的任务调度框架,可以满足更多更复杂的调度需求

XXL-Job介绍

xxl-job 中的任务分为两种,一种是定时任务,另一种是任务执行器。

定时任务的执行方式可以是corn表达式、固定频率或者固定延迟 ,而任务执行器是用来处理实际业务逻辑的

XXL-Job架构:任务调度中心、执行器和客户端。任务调度中心是用来管理任务的,执行器是用来执行任务的,而客户端则是连接任务执行中心和执行器的桥梁。其中,任务调度中心和执行器都可以进行集群部署。

XXL-Job框架的特点包括:

  • 核心组件:XXL-Job的核心组件包括任务调度中心、调度执行器和客户端,这些组件实现了多任务调度、分布式任务处理、任务路、故障恢复、任务状态监控和报警等功能。

  • 容错性与高可靠性:XXL-Job框架实现了任务调度在调度心和执行器之间的分布式控制,确保了任务调度在异常情况下的性能与稳定性。

  • 灵活性和扩展性:XXL-Job框架允许用户定制任务调度策略、任务执行器、任务日志处理等方,支持通过SPI机制扩展自定义的任务。此外,框架在设计上充分考虑了可扩展和适配性,可以满足各种复杂业务场景的需求。

主要特性详情

简单灵活

  • 提供 Web 页面对任务进行管理,管理系统支持用户管理、权限控制;

  • 支持容器部署;

  • 支持通过通用HTTP提供跨平台任务调度;

丰富的任务管理功能

  • 支持页面对任务CRUD操作;

  • 支持在页面编写脚本任务、命令行任务、Java代码任务并执行;

  • 支持任务级联编排,父任务执行结束后触发子任务执行;

  • 支持设置指定任务执行节点路由策略,包括轮询、随机、广播、故障转移、忙碌转移等;

  • 支持Cron方式、任务依赖、调度中心API接口方式触发任务执行

高性能

  • • 任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰;

高可用

  • 任务调度中心、任务执行节点均 集群部署,支持动态扩展、故障转移

  • 支持任务配置路由故障转移策略,执行器节点不可用是自动转移到其他节点执行

  • 支持任务超时控制、失败重试配置

  • 支持任务处理阻塞策略:调度当任务执行节点忙碌时来不及执行任务的处理策略,包括:串行、抛弃、覆盖策略

易于监控运维

  • 支持设置任务失败邮件告警,预留接口支持短信、钉钉告警;

  • 支持实时查看任务执行运行数据统计图表、任务进度监控数据、任务完整执行日志;

在应用XXL-Job框架时,需要配置调度中心和执行器的信息。下是配置示例:

调度中心配置文件:

ini 复制代码
### xxl-job, access token
xxl.job.accessToken=

### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
xxl.job.i18n=zh_CN

## xxl-job, triggerpool max size
xxl.job.triggerpool.fast.max=200
xxl.job.triggerpool.slow.max=100

### xxl-job, log retention days
xxl.job.logretentiondays=30

执行maven打包命令:package ,打完包以后,从项目的target目录中找到jar包拷贝到不带空格和中文的目录下

执行以下命令,启动项目

java -jar xxl-job-admin-2.2.0-SNAPSHOT.jar

调度中心访问地址:http://localhost:8888/xxl-job-admin (该地址执行器将会使用到,作为回调地址)

总结

总的来说,XXL-Job是一个优秀的分布式任务调度框架,具有轻量易用、高性能、高可靠和扩展性等点。在实际应用中,可以通过XXL-Job实现对复杂业务逻辑的可靠调度和处理。

相关推荐
风_流沙几秒前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
颜淡慕潇23 分钟前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
ProtonBase30 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
乐之者v36 分钟前
leetCode43.字符串相乘
java·数据结构·算法
suweijie7684 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
公贵买其鹿5 小时前
List深拷贝后,数据还是被串改
java
向前看-8 小时前
验证码机制
前端·后端
xlsw_8 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
神仙别闹9 小时前
基于java的改良版超级玛丽小游戏
java
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭9 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员