Release Notes
- 1、【強(qiáng)化】AI任務(wù)(ollamaJobHandler)優(yōu)化:針對(duì) “model” 模型配置信息,從執(zhí)行器側(cè)文件類配置調(diào)整至調(diào)度中心“任務(wù)參數(shù)”動(dòng)態(tài)配置,支持集成多模型、并結(jié)合任務(wù)動(dòng)態(tài)配置切換。
- 2、【安全】登錄認(rèn)證重構(gòu):密碼加密算法從Md5改為Sha256;登錄態(tài)改為登錄后動(dòng)態(tài)隨機(jī)生成;提升系統(tǒng)安全性;(需要針對(duì)用戶表進(jìn)行字段調(diào)整,同時(shí)需要重新初始化密碼信息;相關(guān)SQL腳本如下)
// 1、用戶表password字段需要調(diào)整長(zhǎng)度,執(zhí)行如下命令
ALTER TABLE xxl_job_user
MODIFY COLUMN `password` varchar(100) NOT NULL COMMENT '密碼加密信息';
ALTER TABLE xxl_job_user
ADD COLUMN `token` varchar(100) DEFAULT NULL COMMENT '登錄token';
// 2、存量用戶密碼需要修改,可執(zhí)行如下命令將密碼初始化 “123456”;也可以自行通過(guò) “SHA256Tool.sha256” 工具生成其他初始化密碼;
UPDATE xxl_job_user t SET t.password = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92' WHERE t.username = {用戶名};
- 3、【強(qiáng)化】GLUE模式(Python) 擴(kuò)展,支持 "GLUE(Python3)" 與 "GLUE(Python2)" 兩種模式,分別支持 python3/2 多版本;
- 4、【強(qiáng)化】調(diào)度中心系統(tǒng)日志調(diào)整,支持啟動(dòng)時(shí)指定 -DLOG_HOME 參數(shù)自定義日志位置;同時(shí)優(yōu)化日志格式提升易讀性;
- 5、【優(yōu)化】任務(wù)Bean掃描規(guī)則調(diào)整,過(guò)濾冗余不必要掃描,避免系統(tǒng)組件提前初始化;
- 6、【優(yōu)化】登錄信息頁(yè)面空值處理優(yōu)化,避免空值影響ftl渲染;
- 7、【優(yōu)化】異常頁(yè)面處理邏輯優(yōu)化,新增兜底落地頁(yè)配置;
- 8、【重構(gòu)】ReturnT 重構(gòu),簡(jiǎn)化代碼結(jié)構(gòu),提升API易用性以及可維護(hù)性;
- 9、【重構(gòu)】項(xiàng)目結(jié)構(gòu)重構(gòu),提升可維護(hù)性與易讀性;
- 10、【修復(fù)】漏洞修復(fù)(CVE-2025-7787),針對(duì) httpJobHandler 支持配置URL白名單限制,防止服務(wù)器端請(qǐng)求偽造(SSRF)攻擊。
- 11、【修復(fù)】合并PR-3738,修復(fù)拼寫(xiě)問(wèn)題;
- 12、【修復(fù)】合并PR-3506,修復(fù)小概率情況下任務(wù)重復(fù)調(diào)度問(wèn)題;
- 13、【修復(fù)】合并PR-3747,修復(fù)異常情況下資源泄漏風(fēng)險(xiǎn);
- 14、【修復(fù)】IDOR越權(quán)問(wèn)題修復(fù),提升任務(wù)操作及日志管理安全性;
- 15、【升級(jí)】升級(jí)多項(xiàng)maven依賴至較新版本,如 netty、groovy、mybatis、spring、spring-ai、dify 等;
“AI任務(wù)”接入示例
此處以 difyWorkflowJobHandler 為例,注意需要前置部署AI執(zhí)行器(xxl-job-executor-sample-ai),可參考官方文檔說(shuō)明。
步驟一:調(diào)度中心,新建 difyWorkflowJobHandler 任務(wù)
[圖片上傳失敗...(image-444529-1756026118410)]
步驟二:任務(wù)執(zhí)行,查看任務(wù)進(jìn)度及日志
[圖片上傳失敗...(image-c5123d-1756026118410)]
“常規(guī)任務(wù)”接入示例
XXL-JOB支持多模式任務(wù),下文以簡(jiǎn)單的“Bean模式任務(wù)”為例介紹,三步快速開(kāi)發(fā)接入。
步驟一:執(zhí)行器,開(kāi)發(fā)Job方法
@XxlJob("demoJobHandler")
public void demoJobHandler() throws Exception {
XxlJobHelper.log("XXL-JOB, Hello World.");
}
步驟二:調(diào)度中心,新建調(diào)度任務(wù)
[圖片上傳失敗...(image-efd3f-1756026118410)]
步驟三:任務(wù)執(zhí)行,查看任務(wù)進(jìn)度及日志
[圖片上傳失敗...(image-f12aa2-1756026118410)]
簡(jiǎn)介
XXL-JOB是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。
[圖片上傳失敗...(image-58ca37-1756026118410)]
特性
- 1、簡(jiǎn)單:支持通過(guò)Web頁(yè)面對(duì)任務(wù)進(jìn)行CRUD操作,操作簡(jiǎn)單,一分鐘上手;
- 2、動(dòng)態(tài):支持動(dòng)態(tài)修改任務(wù)狀態(tài)、啟動(dòng)/停止任務(wù),以及終止運(yùn)行中任務(wù),即時(shí)生效;
- 3、調(diào)度中心HA(中心式):調(diào)度采用中心式設(shè)計(jì),“調(diào)度中心”自研調(diào)度組件并支持集群部署,可保證調(diào)度中心HA;
- 4、執(zhí)行器HA(分布式):任務(wù)分布式執(zhí)行,任務(wù)"執(zhí)行器"支持集群部署,可保證任務(wù)執(zhí)行HA;
- 5、注冊(cè)中心: 執(zhí)行器會(huì)周期性自動(dòng)注冊(cè)任務(wù), 調(diào)度中心將會(huì)自動(dòng)發(fā)現(xiàn)注冊(cè)的任務(wù)并觸發(fā)執(zhí)行。同時(shí),也支持手動(dòng)錄入執(zhí)行器地址;
- 6、彈性擴(kuò)容縮容:一旦有新執(zhí)行器機(jī)器上線或者下線,下次調(diào)度時(shí)將會(huì)重新分配任務(wù);
- 7、觸發(fā)策略:提供豐富的任務(wù)觸發(fā)策略,包括:Cron觸發(fā)、固定間隔觸發(fā)、固定延時(shí)觸發(fā)、API(事件)觸發(fā)、人工觸發(fā)、父子任務(wù)觸發(fā);
- 8、調(diào)度過(guò)期策略:調(diào)度中心錯(cuò)過(guò)調(diào)度時(shí)間的補(bǔ)償處理策略,包括:忽略、立即補(bǔ)償觸發(fā)一次等;
- 9、阻塞處理策略:調(diào)度過(guò)于密集執(zhí)行器來(lái)不及處理時(shí)的處理策略,策略包括:?jiǎn)螜C(jī)串行(默認(rèn))、丟棄后續(xù)調(diào)度、覆蓋之前調(diào)度;
- 10、任務(wù)超時(shí)控制:支持自定義任務(wù)超時(shí)時(shí)間,任務(wù)運(yùn)行超時(shí)將會(huì)主動(dòng)中斷任務(wù);
- 11、任務(wù)失敗重試:支持自定義任務(wù)失敗重試次數(shù),當(dāng)任務(wù)失敗時(shí)將會(huì)按照預(yù)設(shè)的失敗重試次數(shù)主動(dòng)進(jìn)行重試;其中分片任務(wù)支持分片粒度的失敗重試;
- 12、任務(wù)失敗告警;默認(rèn)提供郵件方式失敗告警,同時(shí)預(yù)留擴(kuò)展接口,可方便的擴(kuò)展短信、釘釘?shù)雀婢绞剑?/li>
- 13、路由策略:執(zhí)行器集群部署時(shí)提供豐富的路由策略,包括:第一個(gè)、最后一個(gè)、輪詢、隨機(jī)、一致性HASH、最不經(jīng)常使用、最近最久未使用、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等;
- 14、分片廣播任務(wù):執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"分片廣播"情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)集群中所有執(zhí)行器執(zhí)行一次任務(wù),可根據(jù)分片參數(shù)開(kāi)發(fā)分片任務(wù);
- 15、動(dòng)態(tài)分片:分片廣播任務(wù)以執(zhí)行器為維度進(jìn)行分片,支持動(dòng)態(tài)擴(kuò)容執(zhí)行器集群從而動(dòng)態(tài)增加分片數(shù)量,協(xié)同進(jìn)行業(yè)務(wù)處理;在進(jìn)行大數(shù)據(jù)量業(yè)務(wù)操作時(shí)可顯著提升任務(wù)處理能力和速度。
- 16、故障轉(zhuǎn)移:任務(wù)路由策略選擇"故障轉(zhuǎn)移"情況下,如果執(zhí)行器集群中某一臺(tái)機(jī)器故障,將會(huì)自動(dòng)Failover切換到一臺(tái)正常的執(zhí)行器發(fā)送調(diào)度請(qǐng)求。
- 17、任務(wù)進(jìn)度監(jiān)控:支持實(shí)時(shí)監(jiān)控任務(wù)進(jìn)度;
- 18、Rolling實(shí)時(shí)日志:支持在線查看調(diào)度結(jié)果,并且支持以Rolling方式實(shí)時(shí)查看執(zhí)行器輸出的完整的執(zhí)行日志;
- 19、GLUE:提供Web IDE,支持在線開(kāi)發(fā)任務(wù)邏輯代碼,動(dòng)態(tài)發(fā)布,實(shí)時(shí)編譯生效,省略部署上線的過(guò)程。支持30個(gè)版本的歷史版本回溯。
- 20、腳本任務(wù):支持以GLUE模式開(kāi)發(fā)和運(yùn)行腳本任務(wù),包括Shell、Python、NodeJS、PHP、PowerShell等類型腳本;
- 21、命令行任務(wù):原生提供通用命令行任務(wù)Handler(Bean任務(wù),"CommandJobHandler");業(yè)務(wù)方只需要提供命令行即可;
- 22、任務(wù)依賴:支持配置子任務(wù)依賴,當(dāng)父任務(wù)執(zhí)行結(jié)束且執(zhí)行成功后將會(huì)主動(dòng)觸發(fā)一次子任務(wù)的執(zhí)行, 多個(gè)子任務(wù)用逗號(hào)分隔;
- 23、一致性:“調(diào)度中心”通過(guò)DB鎖保證集群分布式調(diào)度的一致性, 一次任務(wù)調(diào)度只會(huì)觸發(fā)一次執(zhí)行;
- 24、自定義任務(wù)參數(shù):支持在線配置調(diào)度任務(wù)入?yún)?,即時(shí)生效;
- 25、調(diào)度線程池:調(diào)度系統(tǒng)多線程觸發(fā)調(diào)度運(yùn)行,確保調(diào)度精確執(zhí)行,不被堵塞;
- 26、數(shù)據(jù)加密:調(diào)度中心和執(zhí)行器之間的通訊進(jìn)行數(shù)據(jù)加密,提升調(diào)度信息安全性;
- 27、郵件報(bào)警:任務(wù)失敗時(shí)支持郵件報(bào)警,支持配置多郵件地址群發(fā)報(bào)警郵件;
- 28、推送maven中央倉(cāng)庫(kù): 將會(huì)把最新穩(wěn)定版推送到maven中央倉(cāng)庫(kù), 方便用戶接入和使用;
- 29、運(yùn)行報(bào)表:支持實(shí)時(shí)查看運(yùn)行數(shù)據(jù),如任務(wù)數(shù)量、調(diào)度次數(shù)、執(zhí)行器數(shù)量等;以及調(diào)度報(bào)表,如調(diào)度日期分布圖,調(diào)度成功分布圖等;
- 30、全異步:任務(wù)調(diào)度流程全異步化設(shè)計(jì)實(shí)現(xiàn),如異步調(diào)度、異步運(yùn)行、異步回調(diào)等,有效對(duì)密集調(diào)度進(jìn)行流量削峰,理論上支持任意時(shí)長(zhǎng)任務(wù)的運(yùn)行;
- 31、跨語(yǔ)言/OpenAPI:調(diào)度中心與執(zhí)行器提供語(yǔ)言無(wú)關(guān)的 OpenApi(RESTful 格式),第三方任意語(yǔ)言可據(jù)此對(duì)接調(diào)度中心或者實(shí)現(xiàn)執(zhí)行器,實(shí)現(xiàn)多語(yǔ)言支持。除此之外,還提供了 “多任務(wù)模式”和“httpJobHandler”等其他跨語(yǔ)言方案;
- 32、國(guó)際化:調(diào)度中心支持國(guó)際化設(shè)置,提供中文、英文兩種可選語(yǔ)言,默認(rèn)為中文;
- 33、容器化:提供官方docker鏡像,并實(shí)時(shí)更新推送dockerhub,進(jìn)一步實(shí)現(xiàn)產(chǎn)品開(kāi)箱即用;
- 34、線程池隔離:調(diào)度線程池進(jìn)行隔離拆分,慢任務(wù)自動(dòng)降級(jí)進(jìn)入"Slow"線程池,避免耗盡調(diào)度線程,提高系統(tǒng)穩(wěn)定性;
- 35、用戶管理:支持在線管理系統(tǒng)用戶,存在管理員、普通用戶兩種角色;
- 36、權(quán)限控制:執(zhí)行器維度進(jìn)行權(quán)限控制,管理員擁有全量權(quán)限,普通用戶需要分配執(zhí)行器權(quán)限后才允許相關(guān)操作;
- 37、AI任務(wù):原生提供AI執(zhí)行器,并內(nèi)置多個(gè)AI任務(wù)Handler,與spring-ai、ollama、dify等集成打通,支持快速開(kāi)發(fā)AI類任務(wù)。