《分布式任務(wù)調(diào)度平臺(tái)XXL-JOB》
一、簡(jiǎn)介
1.1 概述
XXL-JOB是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度框架,其核心設(shè)計(jì)目標(biāo)是開(kāi)發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展。現(xiàn)已開(kāi)放源代碼并接入多家公司線上產(chǎn)品線,開(kāi)箱即用。
1.2 特性
- 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)、暫停/恢復(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、注冊(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、路由策略:執(zhí)行器集群部署時(shí)提供豐富的路由策略,包括:第一個(gè)、最后一個(gè)、輪詢、隨機(jī)、一致性HASH、最不經(jīng)常使用、最近最久未使用、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等;
- 8、故障轉(zhuǎn)移:任務(wù)路由策略選擇"故障轉(zhuǎn)移"情況下,如果執(zhí)行器集群中某一臺(tái)機(jī)器故障,將會(huì)自動(dòng)Failover切換到一臺(tái)正常的執(zhí)行器發(fā)送調(diào)度請(qǐng)求。
- 9、失敗處理策略;調(diào)度失敗時(shí)的處理策略,策略包括:失敗告警(默認(rèn))、失敗重試;
- 10、失敗重試:調(diào)度中心調(diào)度失敗且啟用"失敗重試"策略時(shí),將會(huì)自動(dòng)重試一次;執(zhí)行器執(zhí)行失敗且回調(diào)失敗重試狀態(tài)時(shí),也將會(huì)自動(dòng)重試一次;
- 11、阻塞處理策略:調(diào)度過(guò)于密集執(zhí)行器來(lái)不及處理時(shí)的處理策略,策略包括:?jiǎn)螜C(jī)串行(默認(rèn))、丟棄后續(xù)調(diào)度、覆蓋之前調(diào)度;
- 12、分片廣播任務(wù):執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"分片廣播"情況下,一次任務(wù)調(diào)度將會(huì)廣播觸發(fā)集群中所有執(zhí)行器執(zhí)行一次任務(wù),可根據(jù)分片參數(shù)開(kāi)發(fā)分片任務(wù);
- 13、動(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ù)處理能力和速度。
- 14、事件觸發(fā):除了"Cron方式"和"任務(wù)依賴方式"觸發(fā)任務(wù)執(zhí)行之外,支持基于事件的觸發(fā)任務(wù)方式。調(diào)度中心提供觸發(fā)任務(wù)單次執(zhí)行的API服務(wù),可根據(jù)業(yè)務(wù)事件靈活觸發(fā)。
- 15、任務(wù)進(jìn)度監(jiān)控:支持實(shí)時(shí)監(jiān)控任務(wù)進(jìn)度;
- 16、Rolling實(shí)時(shí)日志:支持在線查看調(diào)度結(jié)果,并且支持以Rolling方式實(shí)時(shí)查看執(zhí)行器輸出的完整的執(zhí)行日志;
- 17、GLUE:提供Web IDE,支持在線開(kāi)發(fā)任務(wù)邏輯代碼,動(dòng)態(tài)發(fā)布,實(shí)時(shí)編譯生效,省略部署上線的過(guò)程。支持30個(gè)版本的歷史版本回溯。
- 18、腳本任務(wù):支持以GLUE模式開(kāi)發(fā)和運(yùn)行腳本任務(wù),包括Shell、Python、NodeJS等類型腳本;
- 19、任務(wù)依賴:支持配置子任務(wù)依賴,當(dāng)父任務(wù)執(zhí)行結(jié)束且執(zhí)行成功后將會(huì)主動(dòng)觸發(fā)一次子任務(wù)的執(zhí)行, 多個(gè)子任務(wù)用逗號(hào)分隔;
- 20、一致性:“調(diào)度中心”通過(guò)DB鎖保證集群分布式調(diào)度的一致性, 一次任務(wù)調(diào)度只會(huì)觸發(fā)一次執(zhí)行;
- 21、自定義任務(wù)參數(shù):支持在線配置調(diào)度任務(wù)入?yún)?,即時(shí)生效;
- 22、調(diào)度線程池:調(diào)度系統(tǒng)多線程觸發(fā)調(diào)度運(yùn)行,確保調(diào)度精確執(zhí)行,不被堵塞;
- 23、數(shù)據(jù)加密:調(diào)度中心和執(zhí)行器之間的通訊進(jìn)行數(shù)據(jù)加密,提升調(diào)度信息安全性;
- 24、郵件報(bào)警:任務(wù)失敗時(shí)支持郵件報(bào)警,支持配置多郵件地址群發(fā)報(bào)警郵件;
- 25、推送maven中央倉(cāng)庫(kù): 將會(huì)把最新穩(wěn)定版推送到maven中央倉(cāng)庫(kù), 方便用戶接入和使用;
- 26、運(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)度成功分布圖等;
1.3 發(fā)展
于2015年中,我在github上創(chuàng)建XXL-JOB項(xiàng)目倉(cāng)庫(kù)并提交第一個(gè)commit,隨之進(jìn)行系統(tǒng)結(jié)構(gòu)設(shè)計(jì),UI選型,交互設(shè)計(jì)……
于2015-11月,XXL-JOB終于RELEASE了第一個(gè)大版本V1.0, 隨后我將之發(fā)布到OSCHINA,XXL-JOB在OSCHINA上獲得了@紅薯的熱門(mén)推薦,同期分別達(dá)到了OSCHINA的“熱門(mén)動(dòng)彈”排行第一和git.oschina的開(kāi)源軟件月熱度排行第一,在此特別感謝紅薯,感謝大家的關(guān)注和支持。
于2015-12月,我將XXL-JOB發(fā)表到我司內(nèi)部知識(shí)庫(kù),并且得到內(nèi)部同事認(rèn)可。
于2016-01月,我司展開(kāi)XXL-JOB的內(nèi)部接入和定制工作,在此感謝袁某和尹某兩位同事的貢獻(xiàn),同時(shí)也感謝內(nèi)部其他給與關(guān)注與支持的同事。
于2017-05-13,在上海舉辦的 "第62期開(kāi)源中國(guó)源創(chuàng)會(huì)" 的 "放碼過(guò)來(lái)" 環(huán)節(jié),我登臺(tái)對(duì)XXL-JOB做了演講,臺(tái)下五百位在場(chǎng)觀眾反響熱烈(圖文回顧 )。
于2017-12-11,XXL-JOB有幸參會(huì)《InfoQ ArchSummit全球架構(gòu)師峰會(huì)》,并被拍拍貸架構(gòu)總監(jiān)"楊波老師"在專題 "微服務(wù)原理、基礎(chǔ)架構(gòu)和開(kāi)源實(shí)踐" 中現(xiàn)場(chǎng)介紹。
我司大眾點(diǎn)評(píng)目前已接入XXL-JOB,內(nèi)部別名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入應(yīng)用推薦升級(jí)最新版本)。
據(jù)最新統(tǒng)計(jì), 自2016-01-21接入至2017-12-01期間,該系統(tǒng)已調(diào)度約100萬(wàn)次,表現(xiàn)優(yōu)異。新接入應(yīng)用推薦使用最新版本,因?yàn)榻?jīng)過(guò)數(shù)個(gè)大版本的更新,系統(tǒng)的任務(wù)模型、UI交互模型以及底層調(diào)度通訊模型都有了較大的優(yōu)化和提升,核心功能更加穩(wěn)定高效。
至今,XXL-JOB已接入多家公司的線上產(chǎn)品線,接入場(chǎng)景如電商業(yè)務(wù),O2O業(yè)務(wù)和大數(shù)據(jù)作業(yè)等,截止最新統(tǒng)計(jì)時(shí)間為止,XXL-JOB已接入的公司包括不限于:
- 1、大眾點(diǎn)評(píng);
- 2、山東學(xué)而網(wǎng)絡(luò)科技有限公司;
- 3、安徽慧通互聯(lián)科技有限公司;
- 4、人人聚財(cái)金服;
- 5、上海棠棣信息科技股份有限公司
- 6、運(yùn)滿滿
- 7、米其林 (中國(guó)區(qū))
- 8、媽媽聯(lián)盟
- 9、九櫻天下(北京)信息技術(shù)有限公司
- 10、萬(wàn)普拉斯科技有限公司(一加手機(jī))
- 11、上海億保健康管理有限公司
- 12、海爾馨廚 (海爾)
- 13、河南大紅包電子商務(wù)有限公司
- 14、成都順點(diǎn)科技有限公司
- 15、深圳市怡亞通
- 16、深圳麥亞信科技股份有限公司
- 17、上海博瑩科技信息技術(shù)有限公司
- 18、中國(guó)平安科技有限公司
- 19、杭州知時(shí)信息科技有限公司
- 20、博瑩科技(上海)有限公司
- 21、成都依能股份有限責(zé)任公司
- 22、湖南高陽(yáng)通聯(lián)信息技術(shù)有限公司
- 23、深圳市邦德文化發(fā)展有限公司
- 24、福建阿思可網(wǎng)絡(luò)教育有限公司
- 25、優(yōu)信二手車(chē)
- 26、上海悠游堂投資發(fā)展股份有限公司
- 27、北京粉筆藍(lán)天科技有限公司
- 28、中秀科技(無(wú)錫)有限公司
- 29、武漢空心科技有限公司
- 30、北京螞蟻風(fēng)暴科技有限公司
- 31、四川互宜達(dá)科技有限公司
- 32、錢(qián)包行云(北京)科技有限公司
- 33、重慶欣才集團(tuán)
- 34、咪咕互動(dòng)娛樂(lè)有限公司(中國(guó)移動(dòng))
- 35、北京諾亦騰科技有限公司
- 36、增長(zhǎng)引擎(北京)信息技術(shù)有限公司
- 37、北京英貝思科技有限公司
- 38、剛泰集團(tuán)
- 39、深圳泰久信息系統(tǒng)股份有限公司
- 40、隨行付支付有限公司
- 41、廣州瀚農(nóng)網(wǎng)絡(luò)科技有限公司
- 42、享點(diǎn)科技有限公司
- 43、杭州比智科技有限公司
- 44、圳臨界線網(wǎng)絡(luò)科技有限公司
- 45、廣州知識(shí)圈網(wǎng)絡(luò)科技有限公司
- 46、國(guó)譽(yù)商業(yè)上海有限公司
- 47、海爾消費(fèi)金融有限公司,嗨付、夠花 (海爾)
- 48、廣州巴圖魯信息科技有限公司
- 49、深圳市鵬海運(yùn)電子數(shù)據(jù)交換有限公司
- 50、深圳市亞飛電子商務(wù)有限公司
- 51、上海趣醫(yī)網(wǎng)絡(luò)有限公司
- 52、聚金資本
- 53、北京父母邦網(wǎng)絡(luò)科技有限公司
- 54、中山元赫軟件科技有限公司
- 55、中商惠民(北京)電子商務(wù)有限公司
- 56、凱京集團(tuán)
- 57、華夏票聯(lián)(北京)科技有限公司
- 58、拍拍貸
- 59、北京尚德機(jī)構(gòu)在線教育有限公司
- 60、任子行股份有限公司
- ……
更多接入的公司,歡迎在 登記地址 登記,登記僅僅為了產(chǎn)品推廣。
歡迎大家的關(guān)注和使用,XXL-JOB也將擁抱變化,持續(xù)發(fā)展。
1.4 下載
文檔地址
源碼倉(cāng)庫(kù)地址
| 源碼倉(cāng)庫(kù)地址 | Release Download |
|---|---|
| https://github.com/xuxueli/xxl-job | Download |
| http://git.oschina.net/xuxueli0323/xxl-job | Download |
中央倉(cāng)庫(kù)地址
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>${最新穩(wěn)定版本}</version>
</dependency>