xxl-job 簡介

官方文檔:https://www.xuxueli.com/xxl-job/


今天想要跟大家分享一下對xxl-job的淺顯理解矾飞,他是一個在分布式環(huán)境下爆安,解決多機(jī)定時(shí)任務(wù)如何調(diào)度執(zhí)行的分布式任務(wù)調(diào)度平臺 xxl-job乃沙,它有著簡單易用康栈,開包即食等特點(diǎn)村怪。在此之前先說一下析藕,在開發(fā)中使用定時(shí)任務(wù)可能會遇到的問題和一些簡單的解決方案慷垮。

在日常開發(fā)中阿纤,經(jīng)常會用定時(shí)任務(wù)執(zhí)行某些不緊急又非常重要的事情句灌,例如批量結(jié)算,計(jì)算當(dāng)日的訂單量,當(dāng)日的成本收入等胰锌,如果是單機(jī)骗绕,那毫無問題,往往我們是多機(jī)器部署资昧,那么一個定時(shí)任務(wù)只應(yīng)該被一臺機(jī)器所執(zhí)行酬土,這個時(shí)候我們可以采用分布式鎖控制某一個任務(wù)執(zhí)行,特點(diǎn)是所有任務(wù)都會執(zhí)行格带,某一個機(jī)器真正執(zhí)行撤缴,其他機(jī)器也會同時(shí)一起執(zhí)行,用某種方式將其終止掉践惑,可以采用表的形式腹泌,這種方式比較不保險(xiǎn),執(zhí)行的機(jī)器由于某種原因尔觉,沒有回寫DB表中記錄凉袱,就會造成任務(wù)無法再次執(zhí)行,所以請慎用侦铜;還有用redis或者zookeeper實(shí)現(xiàn)分布式鎖來控制专甩,多機(jī)定時(shí)任務(wù)的執(zhí)行,這種也是比較常用的钉稍。但是不管是那種分布式鎖的方式都會存在這任務(wù)提醒涤躲、失敗重試等問題,更為甚著當(dāng)存在大量定時(shí)任務(wù)的時(shí)候贡未,任務(wù)的管理也會成為一個比較頭痛的問題椅亚,今天跟大家分享一下xxl-job,就是一個比較成熟的分布式任務(wù)調(diào)度平臺骚烧。


xxl-job有著諸多的特點(diǎn)血筑,精簡了以下幾條:

(1)支持通過Web頁面對任務(wù)進(jìn)行CRUD操作,可動態(tài)啟動/停止任務(wù)消恍,操作非常簡單

(2)任務(wù)分布式執(zhí)行岂昭,任務(wù)”執(zhí)行器”支持集群部署,支持彈性擴(kuò)容縮容狠怨;

(3)豐富的路由策略约啊,包括:第一個、最后一個佣赖、輪詢恰矩、隨機(jī)、故障轉(zhuǎn)移憎蛤、忙碌轉(zhuǎn)移等枢里;

(4)完善的調(diào)度過期策略、任務(wù)超時(shí)控制、任務(wù)失敗重試栏豺、任務(wù)失敗告警等

(5)支持動態(tài)分配彬碱,分片廣播任務(wù)以執(zhí)行器為維度進(jìn)行分片;并且分片廣播任務(wù):執(zhí)行器集群部署時(shí)奥洼,任務(wù)路由策略選擇”分片廣播”情況下巷疼,一次任務(wù)調(diào)度將會廣播觸發(fā)集群中所有執(zhí)行器執(zhí)行一次任務(wù)

(6)有著完善的故障轉(zhuǎn)移、任務(wù)進(jìn)度監(jiān)控灵奖、郵件報(bào)警等保護(hù)機(jī)制嚼沿,

(7)有著運(yùn)行報(bào)表,和Rolling實(shí)時(shí)日志方便對正規(guī)任務(wù)進(jìn)行實(shí)時(shí)的數(shù)據(jù)監(jiān)控


設(shè)計(jì)思想:

將調(diào)度行為抽象形成“調(diào)度中心”公共平臺瓷患,而平臺自身并不承擔(dān)業(yè)務(wù)邏輯骡尽,“調(diào)度中心”負(fù)責(zé)發(fā)起調(diào)度請求。將任務(wù)抽象成分散的JobHandler擅编,交由“執(zhí)行器”統(tǒng)一管理攀细,“執(zhí)行器”負(fù)責(zé)接收調(diào)度請求并執(zhí)行對應(yīng)的JobHandler中業(yè)務(wù)邏輯。因此爱态,“調(diào)度”和“任務(wù)”兩部分可以相互解耦谭贪,提高系統(tǒng)整體穩(wěn)定性和擴(kuò)展性;


架構(gòu)圖:



系統(tǒng)組成:

調(diào)度模塊(調(diào)度中心):負(fù)責(zé)管理調(diào)度信息锦担,按照調(diào)度配置發(fā)出調(diào)度請求俭识,自身不承擔(dān)業(yè)務(wù)代碼。調(diào)度系統(tǒng)與任務(wù)解耦洞渔,提高了系統(tǒng)可用性和穩(wěn)定性套媚,同時(shí)調(diào)度系統(tǒng)性能不再受限于任務(wù)模塊;支持可視化磁椒、簡單且動態(tài)的管理調(diào)度信息凑阶,包括任務(wù)新建,更新衷快,刪除,GLUE開發(fā)和任務(wù)報(bào)警等姨俩,所有上述操作都會實(shí)時(shí)生效蘸拔,同時(shí)支持監(jiān)控調(diào)度結(jié)果以及執(zhí)行日志,支持執(zhí)行器Failover环葵。

執(zhí)行模塊(執(zhí)行器):負(fù)責(zé)接收調(diào)度請求并執(zhí)行任務(wù)邏輯调窍。任務(wù)模塊專注于任務(wù)的執(zhí)行等操作,開發(fā)和維護(hù)更加簡單和高效张遭;

? ? ? 接收“調(diào)度中心”的執(zhí)行請求邓萨、終止請求和日志請求等。


注冊中心模塊:

XXL-RPC的注冊中心,是可選組件缔恳,支持服務(wù)注冊并動態(tài)發(fā)現(xiàn)宝剖,可選擇不啟用,直接指定服務(wù)提供方機(jī)器地址通訊歉甚,選擇啟用時(shí)万细,內(nèi)置可選方案:“XXL-RPC-ADMIN 輕量級服務(wù)注冊中心”(推薦)、“ZK注冊中心”纸泄、“Local注冊中心”等


執(zhí)行器模塊:

執(zhí)行器方面是基于數(shù)據(jù)庫的集群方案赖钞,數(shù)據(jù)庫選用Mysql;集群分布式并發(fā)環(huán)境中進(jìn)行定時(shí)任務(wù)調(diào)度時(shí)聘裁,會在各個節(jié)點(diǎn)會上報(bào)任務(wù)雪营,存到數(shù)據(jù)庫中,執(zhí)行時(shí)會從數(shù)據(jù)庫中取出觸發(fā)器來執(zhí)行衡便,如果觸發(fā)器的名稱和執(zhí)行時(shí)間相同献起,則只有一個節(jié)點(diǎn)去執(zhí)行此任務(wù)。


服務(wù)通訊模塊:

XXL-RPC提供多中通訊方案:支持 TCP 和 HTTP 兩種通訊方式進(jìn)行服務(wù)調(diào)用砰诵;其中 TCP 提供可選方案 NETTY 征唬,HTTP 提供可選方案 NETTY_HTTP (新版本移除了Mina和Jetty通訊方案,主推Netty茁彭;如果有需要可以參考舊版本)总寒。


高可用:

調(diào)度中心高可用,調(diào)度中心支持多節(jié)點(diǎn)部署理肺,基于數(shù)據(jù)庫行鎖保證同時(shí)只有一個調(diào)度中心節(jié)點(diǎn)觸發(fā)任務(wù)調(diào)度摄闸。

任務(wù)調(diào)度高可用,調(diào)度中心基于路由策略路由選擇一個執(zhí)行器節(jié)點(diǎn)執(zhí)行任務(wù)妹萨,XXL-JOB提供了諸多“忙碌轉(zhuǎn)移策略”和“故障轉(zhuǎn)移策略”的路由策略保證任務(wù)調(diào)度高可用年枕。


分區(qū)容錯:

服務(wù)提供方集群注冊時(shí),某個服務(wù)節(jié)點(diǎn)不可用時(shí)將會自動摘除乎完,同時(shí)消費(fèi)方將會移除失效節(jié)點(diǎn)將流量分發(fā)到其余節(jié)點(diǎn)熏兄,提高系統(tǒng)容錯能力。


一致性:

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


工作原理:


執(zhí)行流程:

a摩桶、執(zhí)行器根據(jù)配置的調(diào)度中心的地址,自動注冊到調(diào)度中心

b帽揪、達(dá)到任務(wù)觸發(fā)條件硝清,調(diào)度中心下發(fā)任務(wù)

c、執(zhí)行器基于線程池執(zhí)行任務(wù)转晰,并把執(zhí)行結(jié)果放入內(nèi)存隊(duì)列中芦拿、把執(zhí)行日志寫入日志文件中

d士飒、執(zhí)行器的回調(diào)線程消費(fèi)內(nèi)存隊(duì)列中的執(zhí)行結(jié)果,主動上報(bào)給調(diào)度中心

e蔗崎、當(dāng)用戶在調(diào)度中心查看任務(wù)日志酵幕,調(diào)度中心請求任務(wù)執(zhí)行器,任務(wù)執(zhí)行器讀取任務(wù)日志文件并返回日志詳情


個人總結(jié):

xxl-job是一個易上手蚁趁, 支持多種通訊協(xié)議多種注冊中心裙盾,可自由靈活配置,完善的日志系統(tǒng)他嫡,清晰簡潔的可視化頁面番官,多執(zhí)行策略,支持分片和分片廣播钢属,完整的補(bǔ)償機(jī)制徘熔,重試重發(fā)熔斷等。組件也存在一定的不租淆党,一定的入侵性酷师,對數(shù)據(jù)庫高度依賴,需要java環(huán)境等染乌∩娇祝總體來說xxl-job依然是一個非常不錯的“分布式任務(wù)調(diào)度平臺”。


橫向?qū)Ρ龋?/b>

特性quartzelastic-job-litexxl-jobLTS

依賴MySQL荷憋、jdkjdk台颠、zookeepermysql、jdkjdk勒庄、zookeeper串前、maven

高可用多節(jié)點(diǎn)部署,通過競爭數(shù)據(jù)庫鎖來保證只有一個節(jié)點(diǎn)執(zhí)行任務(wù)通過zookeeper的注冊與發(fā)現(xiàn)实蔽,可以動態(tài)的添加服務(wù)器基于競爭數(shù)據(jù)庫鎖保證只有一個節(jié)點(diǎn)執(zhí)行任務(wù)荡碾,支持水平擴(kuò)容【肿埃可以手動增加定時(shí)任務(wù)坛吁,啟動和暫停任務(wù),有監(jiān)控集群部署,可以動態(tài)的添加服務(wù)器铐尚〔β觯可以手動增加定時(shí)任務(wù),啟動和暫停任務(wù)塑径。有監(jiān)控

任務(wù)分片×

管理界面×

難易程度簡單簡單簡單略復(fù)雜

高級功能-彈性擴(kuò)容,多種作業(yè)模式填具,失效轉(zhuǎn)移统舀,運(yùn)行狀態(tài)收集匆骗,多線程處理數(shù)據(jù),冪等性誉简,容錯處理碉就,spring命名空間支持彈性擴(kuò)容,分片廣播闷串,故障轉(zhuǎn)移瓮钥,Rolling實(shí)時(shí)日志,GLUE(支持在線編輯代碼烹吵,免發(fā)布),任務(wù)進(jìn)度監(jiān)控碉熄,任務(wù)依賴,數(shù)據(jù)加密肋拔,郵件報(bào)警锈津,運(yùn)行報(bào)表,國際化支持spring凉蜂,spring boot琼梆,業(yè)務(wù)日志記錄器,SPI擴(kuò)展支持窿吩,故障轉(zhuǎn)移茎杂,節(jié)點(diǎn)監(jiān)控,多樣化任務(wù)執(zhí)行結(jié)果支持纫雁,F(xiàn)ailStore容錯煌往,動態(tài)擴(kuò)容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末先较,一起剝皮案震驚了整個濱河市携冤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闲勺,老刑警劉巖曾棕,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菜循,居然都是意外死亡翘地,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門癌幕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衙耕,“玉大人,你說我怎么就攤上這事勺远〕却” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵胶逢,是天一觀的道長厅瞎。 經(jīng)常有香客問我饰潜,道長,這世上最難降的妖魔是什么和簸? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任彭雾,我火速辦了婚禮,結(jié)果婚禮上锁保,老公的妹妹穿的比我還像新娘薯酝。我一直安慰自己,他們只是感情好爽柒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布吴菠。 她就那樣靜靜地躺著,像睡著了一般霉赡。 火紅的嫁衣襯著肌膚如雪橄务。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天穴亏,我揣著相機(jī)與錄音蜂挪,去河邊找鬼。 笑死嗓化,一個胖子當(dāng)著我的面吹牛棠涮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刺覆,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼严肪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谦屑?” 一聲冷哼從身側(cè)響起驳糯,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氢橙,沒想到半個月后酝枢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悍手,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年帘睦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坦康。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡竣付,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出滞欠,到底是詐尸還是另有隱情古胆,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布筛璧,位于F島的核電站逸绎,受9級特大地震影響妖滔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桶良,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沮翔。 院中可真熱鬧陨帆,春花似錦、人聲如沸采蚀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榆鼠。三九已至纲爸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妆够,已是汗流浹背识啦。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留神妹,地道東北人颓哮。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像鸵荠,于是被迫代替她去往敵國和親冕茅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 為獲得更好的閱讀體驗(yàn)蛹找,請?jiān)L問原文:傳送門 一姨伤、分布式任務(wù)調(diào)度概述 什么是任務(wù)調(diào)度平臺 任務(wù)調(diào)度是指基于給定的時(shí)間點(diǎn)...
    我沒有三顆心臟閱讀 3,049評論 0 34
  • 本地測試要用到xxl-job,官方文檔關(guān)于docker部署xxl-job描述的不夠詳細(xì)庸疾,所以寫一個關(guān)于docker...
    丶那風(fēng)很美閱讀 9,044評論 1 2
  • 《分布式任務(wù)調(diào)度平臺XXL-JOB》 一乍楚、簡介 1.1 概述 XXL-JOB是一個輕量級分布式任務(wù)調(diào)度框架,其核心...
    許雪里閱讀 16,793評論 3 29
  • XXL-JOB是一個分布式任務(wù)調(diào)度平臺彼硫,其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速炊豪、學(xué)習(xí)簡單、輕量級拧篮、易擴(kuò)展〈什常現(xiàn)已開放源代碼并接入多...
    Q南南南Q閱讀 22,981評論 1 7
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點(diǎn)串绩、注意力缺虐、語言聯(lián)想、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析礁凡,社會...
    Jenaral閱讀 5,720評論 0 5