?傳送門
分布式定時(shí)任務(wù)系列1:XXL-job安裝
分布式定時(shí)任務(wù)系列2:XXL-job使用
分布式定時(shí)任務(wù)系列3:任務(wù)執(zhí)行引擎設(shè)計(jì)
分布式定時(shí)任務(wù)系列4:任務(wù)執(zhí)行引擎設(shè)計(jì)續(xù)
分布式定時(shí)任務(wù)系列5:XXL-job中blockingQueue的應(yīng)用
分布式定時(shí)任務(wù)系列6:XXL-job觸發(fā)日志過大引發(fā)的CPU告警
分布式定時(shí)任務(wù)系列7:XXL-job源碼分析之任務(wù)觸發(fā)
?Java并發(fā)編程實(shí)戰(zhàn)1:java中的阻塞隊(duì)列
通訊模塊剖析
一次完整的任務(wù)調(diào)度通訊流程
- 1、“調(diào)度中心”向“執(zhí)行器”發(fā)送http調(diào)度請求: “執(zhí)行器”中接收請求的服務(wù),實(shí)際上是一臺(tái)內(nèi)嵌Server,默認(rèn)端口9999;
- 2、“執(zhí)行器”執(zhí)行任務(wù)邏輯;
- 3、“執(zhí)行器”http回調(diào)“調(diào)度中心”調(diào)度結(jié)果: “調(diào)度中心”中接收回調(diào)的服務(wù),是針對執(zhí)行器開放一套API服務(wù);
上面的3個(gè)步驟流程是XXL-job官網(wǎng)給出的任務(wù)調(diào)度的通訊流程。如果看過前面分布式定時(shí)任務(wù)系列5:XXL-job中blockingQueue的應(yīng)用,分布式定時(shí)任務(wù)系列7:XXL-job源碼分析之任務(wù)觸發(fā)這2節(jié),應(yīng)該大致了解了XXL-job任務(wù)的觸發(fā)與執(zhí)行。不過既然XXL-job號(hào)稱是分布式調(diào)度,無可避免的會(huì)涉及到遠(yuǎn)程調(diào)用。但在分析源碼之前,還是再來看看對應(yīng)的架構(gòu)設(shè)計(jì)
架構(gòu)設(shè)計(jì)
設(shè)計(jì)思想
將調(diào)度行為抽象形成“調(diào)度中心”公共平臺(tái),而平臺(tái)自身并不承擔(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ò)展性;
從上面的描述中,可以抽象出下面設(shè)計(jì)模型:
系統(tǒng)組成
調(diào)度中心
- 調(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ù)模塊;
支持可視化、簡單且動(dòng)態(tài)的管理調(diào)度信息,包括任務(wù)新建,更新,刪除,GLUE開發(fā)和任務(wù)報(bào)警等,所有上述操作都會(huì)實(shí)時(shí)生效,同時(shí)支持監(jiān)控調(diào)度結(jié)果以及執(zhí)行日志,支持執(zhí)行器Failover。
執(zhí)行器
- 執(zhí)行模塊(執(zhí)行器):
負(fù)責(zé)接收調(diào)度請求并執(zhí)行任務(wù)邏輯。任務(wù)模塊專注于任務(wù)的執(zhí)行等操作,開發(fā)和維護(hù)更加簡單和高效;
接收“調(diào)度中心”的執(zhí)行請求、終止請求和日志請求等。
源碼目錄
結(jié)合前一節(jié)的代碼模塊來理解,可以得出下面的結(jié)論:
-
xxl-job-admin,就是調(diào)度中心源碼,也就是前面第7節(jié)的分析任務(wù)觸發(fā)的模塊
-
xxl-job-core,就是執(zhí)行器源碼,也是就是前面第5節(jié)的分析任務(wù)執(zhí)行的模塊(不過并不全面,只是里面的異步相關(guān)部分)
-
xxl-job-executor-samples,就是業(yè)務(wù)代碼,跟前面幾節(jié)里面的auth模塊的一樣,跟實(shí)際代碼相關(guān)?
而這節(jié)的重點(diǎn)就是那個(gè)綠色箭頭:調(diào)度執(zhí)行,遠(yuǎn)程調(diào)用??!?
自研RPC
從上面的架構(gòu)圖中,可以看到XXL-job框架對任務(wù)觸發(fā)過程中涉及的遠(yuǎn)程調(diào)用稱之為xxl-rpc模塊。畫一張部署圖(一種可能的部署方式,不保熟),從部署的角度來探討一下:文章來源:http://www.zghlxwxcb.cn/news/detail-810962.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-810962.html
到了這里,關(guān)于分布式定時(shí)任務(wù)系列8:XXL-job源碼分析之遠(yuǎn)程調(diào)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!