XXL-JOB v3.3.0 | 分布式任务调度平台 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX    程序员

XXL-JOB v3.3.0 | 分布式任务调度平台

  •  
  •   xuxueli 16 小时 29 分钟前 624 次点击

    XXL-JOB 正在角逐 “2025 年度 Gitee 最受欢迎的开源软件”,期待您投出宝贵一票,你的认可对我们很重要

    Release Notes

    • 1 、 [新增] 执行器新增“任务扫描排除路径”配置项(xxl.job.executor.excludedpackage),任务扫描时忽略指定包路径下的任务;
    • 2 、 [优化] 执行器任务 Bean 扫描逻辑调整,优化懒加载 Bean 检测及过滤机制,避免提前初始化类问题;
    • 3 、 [新增] 合并 PR-3840 ,执行器支持通过 XxlJobHelper 获取任务触发时间戳; XxlJobHelper 组件完善,支持通过“XxlJobHelper.getLogId/getLogDateTime/getLogFileName”方法获取执行日志相关信息;
    • 4 、 [升级] 调度中心 UI 框架升级,统一交互组件,支持多主题、多标签与局部渲染等,升级 UI 组件及性能;
    • 5 、 [优化] 调度时间轮组件强化,保障不重不漏:调度时间轮单刻度数据去重,避免极端情况下任务重复执行;时间轮转动时校验临近刻度,避免极端情况下遗漏刻度;
    • 6 、 [优化] 调度任务锁逻辑优化,事务 SQL 下沉至 Mapper 层统一管理,并增加测试用例,提升代码可读性以及可维护性;
    • 7 、 [优化] 调度快慢线程池默认配置上调,提升默认配置单机负载;调度预读任务数计算系数下调,降低事务颗粒度,提升性能及稳定性;
    • 8 、 [性能] 调度中心调整资源加载逻辑,移除不必要的拦截器,提升页面加载性能;
    • 9 、 [优化] 优化日志列表页面展示逻辑,新增展示“日志 ID”与“任务名称”信息;
    • 10 、 [优化] 报表统计 SQL 优化,修复小概率情况下查询 null 值问题;报表初始化 SQL 优化,修复小概率情况增改竞争问题;
    • 11 、 [优化] 优日志报告与清理逻辑,增加清理过期日志的异常捕获,避免线程异常退出;
    • 12 、 [优化] 任务回调失败日志读写磁盘逻辑优化,解决极端情况下大文件读写内存问题;
    • 13 、 [升级] Http 通讯组件升级,基于接口代理方式重构通讯组件,提升组件性能及扩展性;
    • 14 、 [重构] 规范 API 交互协议,通用响应结构体调整为 Response ,调度中心 API 统一为 Response 封装数据; (注意:响应结构体从 ReturnT 升级为 Response ,其中属性值“content”会调整为“data”,通过 openapi 交互场景需要关注)
    • 15 、 [重构] 调度过期策略、调度类型策略逻辑重构,代码组件化拆分并完善日志,提升健壮性及可维护性;
    • 16 、 [重构] 调度中心底层组件重构,组件初始化以及销毁逻辑统一处理,任务触发及和回调逻辑优化,避免资源泄漏风险;
    • 17 、 [重构] 调度中心底层组件模块化拆分,移除组件单例以及静态代码逻辑,提升组件可维护性;
    • 18 、 [重构] 重构 Rolling 日志读写逻辑,解决边界条件下异常情况,优化读写性能;
    • 19 、 [修复] 脚本任务 process 销毁逻辑优化,解决风险情况下脚本进程无法终止问题;
    • 20 、 [修复] 合并 PR-2369 ,修复脚本任务参数取值问题;
    • 21 、 [新增] 任务审计日志,记录任务操作敏感日志信息,如任务新建/更新/删除/启停/触发以及 GLUE 代码更新等,用于系统监控、审计和安全分析,可快速追溯异常行为以及定位排查问题等。 (当前任务审计日志以 Info 级别输出在系统日志中,可通过关键词 "xxl-job operation log:" 检索过滤)
    • 22 、 [强化] 通用 HTTP 任务( httpJobHandler )强化,支持更丰富请求参数设置,完整参数示例参考文档;
    • 23 、 [优化] 调度组件日志完善,提升边界情况下问题定位效率;
    • 24 、 [升级] 升级多项 maven 依赖至较新版本,如 netty 、groovy 、springboot 、spring-ai 、dify 、mybatis 、xxl-sso 等;

    备注:

    • a 、本次升级数据模型向前兼容,v3.2.*版本可直接升级不需要进行数据库表调整;
    • b 、本次升级针对客户端 rollinglog 依赖字段做规范约束,如不关注该功能 v2.4.* 及后续版本客户端不需要升级/可兼容,否则需要升级客户端版本;

    “AI 任务”接入示例

    此处以 difyWorkflowJobHandler 为例,注意需要前置部署 AI 执行器( xxl-job-executor-sample-ai ),可参考官方文档说明。

    步骤一:调度中心,新建 difyWorkflowJobHandler 任务

    在这里插入图片描述

    步骤二:任务执行,查看任务进度及日志

    在这里插入图片描述

    “常规任务”接入示例

    XXL-JOB 支持多模式任务,下文以简单的“Bean 模式任务”为例介绍,三步快速开发接入。

    步骤一:执行器,开发 Job 方法
    @XxlJob("demoJobHandler") public void demoJobHandler() throws Exception { XxlJobHelper.log("XXL-JOB, Hello World."); } 

    步骤二:调度中心,新建调度任务

    img_ZAsz.png

    步骤三:任务执行,查看任务进度及日志

    img_eYrv.png

    简介

    XXL-JOB 是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

    img_Qohm.png

    特性

    • 1 、简单:支持通过 Web 页面对任务进行 CRUD 操作,操作简单,一分钟上手;
    • 2 、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;
    • 3 、调度中心 HA (中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心 HA ;
    • 4 、执行器 HA (分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行 HA ;
    • 5 、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
    • 6 、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
    • 7 、触发策略:提供丰富的任务触发策略,包括:Cron 触发、固定间隔触发、固定延时触发、API (事件)触发、人工触发、父子任务触发;
    • 8 、调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略、立即补偿触发一次等;
    • 9 、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
    • 10 、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
    • 11 、任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;
    • 12 、任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;
    • 13 、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性 HASH 、最不经常使用、最近最久未使用、故障转移、忙碌转移等;
    • 14 、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
    • 15 、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
    • 16 、故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动 Failover 切换到一台正常的执行器发送调度请求。
    • 17 、任务进度监控:支持实时监控任务进度;
    • 18 、Rolling 实时日志:支持在线查看调度结果,并且支持以 Rolling 方式实时查看执行器输出的完整的执行日志;
    • 19 、GLUE:提供 Web IDE ,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持 30 个版本的历史版本回溯。
    • 20 、脚本任务:支持以 GLUE 模式开发和运行脚本任务,包括 Shell 、Python 、NodeJS 、PHP 、PowerShell 等类型脚本;
    • 21 、命令行任务:原生提供通用命令行任务 Handler ( Bean 任务,"CommandJobHandler");业务方只需要提供命令行即可;
    • 22 、任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
    • 23 、一致性:“调度中心”通过 DB 锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
    • 24 、自定义任务参数:支持在线配置调度任务入参,即时生效;
    • 25 、调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
    • 26 、数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
    • 27 、邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
    • 28 、推送 maven 中央仓库: 将会把最新稳定版推送到 maven 中央仓库, 方便用户接入和使用;
    • 29 、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
    • 30 、全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;
    • 31 、跨语言/OpenAPI:调度中心与执行器提供语言无关的 OpenApi ( RESTful 格式),第三方任意语言可据此对接调度中心或者实现执行器,实现多语言支持。除此之外,还提供了 “多任务模式”和“httpJobHandler”等其他跨语言方案;
    • 32 、国际化:调度中心支持国际化设置,提供中文、英文两种可选语言,默认为中文;
    • 33 、容器化:提供官方 docker 镜像,并实时更新推送 dockerhub ,进一步实现产品开箱即用;
    • 34 、线程池隔离:调度线程池进行隔离拆分,慢任务自动降级进入"Slow"线程池,避免耗尽调度线程,提高系统稳定性;
    • 35 、用户管理:支持在线管理系统用户,存在管理员、普通用户两种角色;
    • 36 、权限控制:执行器维度进行权限控制,管理员拥有全量权限,普通用户需要分配执行器权限后才允许相关操作;
    • 37 、AI 任务:原生提供 AI 执行器,并内置多个 AI 任务 Handler ,与 spring-ai 、ollama 、dify 等集成打通,支持快速开发 AI 类任务。
    • 38 、审计日志:记录任务操作敏感信息,用于系统监控、审计和安全分析,可快速追溯异常行为以及定位排查问题。
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2540 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 11:51 PVG 19:51 LAX 03:51 JFK 06:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86