推荐一款好用的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实现对复杂业务逻辑的可靠调度和处理。

相关推荐
葫芦和十三18 小时前
图解 MongoDB 21|选举与 failover:Primary 是怎么选出来的
后端·mongodb·agent
GetcharZp19 小时前
26k Star 开源内网穿透神器 NetBird,一分钟实现全球设备互联!
后端
考虑考虑19 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯20 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
lizhongxuan1 天前
多Agent之间的区别
后端
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java
杨充1 天前
1.面向对象设计思想
后端
IT_陈寒1 天前
Java的Date类又坑了我一次,改用时间戳真香
前端·人工智能·后端
systemPro1 天前
2.6亿条设备数据,历史查询从超时到50ms,我做了什么
后端
要阿尔卑斯吗1 天前
提示词优化启示:为什么“按顺序输出“比“关键度评分“更有效
后端