日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

XXL-Job分布式任务调度

發(fā)布時(shí)間:2025/7/25 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XXL-Job分布式任务调度 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分布式情況下定時(shí)任務(wù)會(huì)出現(xiàn)哪些問題?

分布式集群的情況下,怎么保證定時(shí)任務(wù)不被重復(fù)執(zhí)行

分布式定時(shí)任務(wù)解決方案

①使用zookeeper實(shí)現(xiàn)分布式鎖 缺點(diǎn)(需要?jiǎng)?chuàng)建臨時(shí)節(jié)點(diǎn)、和事件通知不易于擴(kuò)展)

②使用配置文件做一個(gè)開關(guān)? 缺點(diǎn)發(fā)布后,需要重啟

③數(shù)據(jù)庫(kù)唯一約束,缺點(diǎn)效率低

④使用分布式任務(wù)調(diào)度平臺(tái)XXLJOB、Elastric-Job、TBSchedule

XXLJOB介紹

1、簡(jiǎn)單:支持通過Web頁(yè)面對(duì)任務(wù)進(jìn)行CRUD操作,操作簡(jiǎn)單,一分鐘上手;

2、動(dòng)態(tài):支持動(dòng)態(tài)修改任務(wù)狀態(tài)、暫停/恢復(fù)任務(wù),以及終止運(yùn)行中任務(wù),即時(shí)生效;

3、調(diào)度中心HA(中心式):調(diào)度采用中心式設(shè)計(jì),“調(diào)度中心”基于集群Quartz實(shí)現(xiàn),可保證調(diào)度中心HA;

4、執(zhí)行器HA(分布式):任務(wù)分布式執(zhí)行,任務(wù)"執(zhí)行器"支持集群部署,可保證任務(wù)執(zhí)行HA;

5、任務(wù)Failover:執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"故障轉(zhuǎn)移"情況下調(diào)度失敗時(shí)將會(huì)平滑切換執(zhí)行器進(jìn)行Failover;

6、一致性:“調(diào)度中心”通過DB鎖保證集群分布式調(diào)度的一致性, 一次任務(wù)調(diào)度只會(huì)觸發(fā)一次執(zhí)行;

7、自定義任務(wù)參數(shù):支持在線配置調(diào)度任務(wù)入?yún)?#xff0c;即時(shí)生效;

8、調(diào)度線程池:調(diào)度系統(tǒng)多線程觸發(fā)調(diào)度運(yùn)行,確保調(diào)度精確執(zhí)行,不被堵塞;

9、彈性擴(kuò)容縮容:一旦有新執(zhí)行器機(jī)器上線或者下線,下次調(diào)度時(shí)將會(huì)重新分配任務(wù);

10、郵件報(bào)警:任務(wù)失敗時(shí)支持郵件報(bào)警,支持配置多郵件地址群發(fā)報(bào)警郵件;

11、狀態(tài)監(jiān)控:支持實(shí)時(shí)監(jiān)控任務(wù)進(jìn)度;

12、Rolling執(zhí)行日志:支持在線查看調(diào)度結(jié)果,并且支持以Rolling方式實(shí)時(shí)查看執(zhí)行器輸出的完整的執(zhí)行日志;

13、GLUE:提供Web IDE,支持在線開發(fā)任務(wù)邏輯代碼,動(dòng)態(tài)發(fā)布,實(shí)時(shí)編譯生效,省略部署上線的過程。支持30個(gè)版本的歷史版本回溯。

14、數(shù)據(jù)加密:調(diào)度中心和執(zhí)行器之間的通訊進(jìn)行數(shù)據(jù)加密,提升調(diào)度信息安全性;

15、任務(wù)依賴:支持配置子任務(wù)依賴,當(dāng)父任務(wù)執(zhí)行結(jié)束且執(zhí)行成功后將會(huì)主動(dòng)觸發(fā)一次子任務(wù)的執(zhí)行, 多個(gè)子任務(wù)用逗號(hào)分隔;

16、推送maven中央倉(cāng)庫(kù): 將會(huì)把最新穩(wěn)定版推送到maven中央倉(cāng)庫(kù), 方便用戶接入和使用;

17、任務(wù)注冊(cè): 執(zhí)行器會(huì)周期性自動(dòng)注冊(cè)任務(wù), 調(diào)度中心將會(huì)自動(dòng)發(fā)現(xiàn)注冊(cè)的任務(wù)并觸發(fā)執(zhí)行。同時(shí),也支持手動(dòng)錄入執(zhí)行器地址;

18、路由策略:執(zhí)行器集群部署時(shí)提供豐富的路由策略,包括:第一個(gè)、最后一個(gè)、輪詢、隨機(jī)、一致性HASH、最不經(jīng)常使用、最近最久未使用、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等;

19、運(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)度成功分布圖等;

20、腳本任務(wù):支持以GLUE模式開發(fā)和運(yùn)行腳本任務(wù),包括Shell、Python等類型腳本;

21、阻塞處理策略:調(diào)度過于密集執(zhí)行器來不及處理時(shí)的處理策略,策略包括:單機(jī)串行(默認(rèn))、丟棄后續(xù)調(diào)度、覆蓋之前調(diào)度;

22、失敗處理策略;調(diào)度失敗時(shí)的處理策略,策略包括:失敗告警(默認(rèn))、失敗重試;

23、分片廣播任務(wù):執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"分片廣播"情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)對(duì)應(yīng)集群中所有執(zhí)行器執(zhí)行一次任務(wù),同時(shí)傳遞分片參數(shù);可根據(jù)分片參數(shù)開發(fā)分片任務(wù);

24、動(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ù)處理能力和速度。

25、事件觸發(fā):除了"Cron方式"和"任務(wù)依賴方式"觸發(fā)任務(wù)執(zhí)行之外,支持基于事件的觸發(fā)任務(wù)方式。調(diào)度中心提供觸發(fā)任務(wù)單次執(zhí)行的API服務(wù),可根據(jù)業(yè)務(wù)事件靈活觸發(fā)。

?

XXLJOBGitHub地址

https://github.com/xuxueli/xxl-job

?

文檔

http://www.xuxueli.com/xxl-job/#/?id=_21-%e5%88%9d%e5%a7%8b%e5%8c%96%e8%b0%83%e5%ba%a6%e6%95%b0%e6%8d%ae%e5%ba%93

傳統(tǒng)定時(shí)任務(wù)特征: 單點(diǎn)系統(tǒng)(Job不需集群)?

如果定時(shí)Job在高并發(fā)情況下宕機(jī)怎么辦?

定時(shí)任務(wù)代碼 和 業(yè)務(wù)執(zhí)行的 服務(wù)器獨(dú)立的? 獨(dú)立的Jvm

? ? ?如果同一時(shí)間點(diǎn)執(zhí)行多個(gè)任務(wù),考慮高并發(fā)。同時(shí)執(zhí)行的情況

解決方案: 心跳檢測(cè)自動(dòng)重啟,補(bǔ)償機(jī)制(每個(gè)任務(wù)打一個(gè)小標(biāo)記) 定時(shí)任務(wù)在執(zhí)行時(shí)候突然報(bào)錯(cuò),日志紀(jì)律,跳過繼續(xù)執(zhí)行。

再使用定時(shí)Jbo掃描日志記錄,進(jìn)程補(bǔ)償信息。

?

?

定時(shí)任務(wù) 三個(gè)war包 分別放在三臺(tái)服務(wù)器上。定時(shí)Job可能會(huì)重復(fù)執(zhí)行三次。分布式Job冪等性。

? ? ?1、使用zk實(shí)現(xiàn)分布式鎖

? ? ? ? 只有獲取到鎖的 才可以執(zhí)行Job (效率低)

? ? ?2、配置文件中加啟動(dòng)定時(shí)Job的開關(guān)

? ? ? 三個(gè)war包代碼相同。 war1 加開關(guān)flag=true? ??war2 加開關(guān)flag=fasle??war3 加開關(guān)flag=true? ?為true的才可以執(zhí)行

? ? 3、啟動(dòng)時(shí)候使用數(shù)據(jù)庫(kù)唯一標(biāo)識(shí)

? ? ? ? ?啟動(dòng)時(shí)候 表里插入數(shù)據(jù) 成功的才可以執(zhí)行?

?

分布式任務(wù)調(diào)度平臺(tái)推薦使用

?XXL_Job? 和 ELastric-Job(依賴zk)

?

?

保證冪等性

1、支持Job集群(前提保證冪等性) Jbo負(fù)載均衡輪詢機(jī)制

比如:

第一次 8080

第二次 8081

第三次 8082

2、支持Job補(bǔ)償 Job失敗,重試,多次失敗發(fā)郵件。

3、支持Job日志記錄

4、動(dòng)態(tài)配置定時(shí)規(guī)則,傳統(tǒng)定時(shí)Jbo觸發(fā)規(guī)則寫死,采用動(dòng)態(tài)方式。

?

XXL-Job原理:

? ?執(zhí)行器:定時(shí)Job實(shí)際執(zhí)行的服務(wù)器地址

? ?任務(wù)管理:定時(shí)任務(wù)規(guī)則,路由策略,允許模式等

?

步驟:

①? 部署: xxl-job-admin? 作為注冊(cè)中心

②? 創(chuàng)建執(zhí)行器(具體調(diào)度地址) 可以支持集群

③? 配置文件需要填寫xxl-job注冊(cè)中心地址

④? 每個(gè)具體執(zhí)行job服務(wù)器需要?jiǎng)?chuàng)建一個(gè)netty連接端口號(hào)

⑤? 需要執(zhí)行job的任務(wù)類,集成IJobHandler抽象類注冊(cè)到j(luò)ob容器中

⑥? Execute方法中編寫具體job任務(wù)

? ?

搭建XXL-Job Admin平臺(tái):

?job服務(wù)器 通過這個(gè)框架創(chuàng)建的

平臺(tái)里面通過一系列步驟:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

步驟:

1、XXL-Job admin 平臺(tái)創(chuàng)建執(zhí)行器(Job實(shí)際執(zhí)行地址)

2、XXL-Job admin 平臺(tái)創(chuàng)建任務(wù),填寫對(duì)應(yīng)的執(zhí)行器

3、Jbo服務(wù)器代碼中,使用JobHandler標(biāo)識(shí)該類為Job執(zhí)行方法

?

Job服務(wù)器啟動(dòng)時(shí)候, 把信息注冊(cè)到 XXL-Job admin平臺(tái)

如果任何一個(gè)任務(wù)執(zhí)行時(shí)候,現(xiàn)在xxl-job admin平臺(tái)觸發(fā)一次,獲取到任務(wù)的執(zhí)行器(地址),直接調(diào)用job服務(wù)器地址。實(shí)現(xiàn)job管理。

?

?

如果有任務(wù)需要執(zhí)行的時(shí)候,先再XXL-Job admin執(zhí)行一次,獲取任務(wù)中執(zhí)行器

?

轉(zhuǎn)載于:https://www.cnblogs.com/toov5/p/9975833.html

總結(jié)

以上是生活随笔為你收集整理的XXL-Job分布式任务调度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。