P6高頻面試題:分佈式任務調度平臺

引言

日常開發中,我們難免會遇到需要處理一些定時任務,而且這些定時任務還需要靈活的調度,並且在異常的情況下需要做的重試或者報警。這些任務我們希望能靈活配置,並且能及時生效,不需要經常發版本更新代碼。所以我們希望能有一個這樣的平臺,能滿足我們的這些需求。感謝開源社區,已經有了很好的解決方案,就是 XXL-JOB。 本文介紹的版本是基於 XXL-JOB 的1.9.0版本,新版本調度中心 Admin 已經切換爲 SpringBoot 項目了。

介紹

XXL-JOB[1]是一個輕量級分佈式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。中文文檔地址[2]

XXL-JOB由兩個模塊組成分爲調度中心和執行器,作者許雪裏的開源項目,感謝大佬。

調度中心搭建

從release[3]拉取最新代碼

根據自己的需要配置 xxl-job-admin 中 xxl-job-admin.properties 文件中的數據源信息以及賬號密碼,以及 accessToken 和郵件服務器地址等信息

P6高頻面試題:分佈式任務調度平臺

 

 

配置log4j.xml中日誌的路徑

P6高頻面試題:分佈式任務調度平臺

 

 

將xxl-job-admin打包成war包,部署到tomcat中即可

執行器配置

新建 Springboot 項目,pom.xml中引入 xxl-job 的核心庫

​
<dependency>
 <groupId>com.xuxueli</groupId> 
 <artifactId>xxl-job-core</artifactId>
 <version>1.9.0</version>
</dependency>

配置文件中配置調度中心的地址和一些具體參數

P6高頻面試題:分佈式任務調度平臺

 

 

 

編寫 jobHandler ,繼承 JobHandler 實現內部 execute 方法,具體的業務邏輯就在這個方法裏面實現。這種方式是通過Java代碼來執行定時任務的,除了 JavaBean 方式還支持 Python,nodeJs,Shell 等方式。

 

我最喜歡的是 Python 方式,因爲 Python 在處理簡單的定時任務的時候還是比較得心應手的,而且很快速,但是稍微複雜一點的就不方便了,而且 Python 可以直接 WebIDE 裏面直接粘貼代碼,實現功能,就不用發版本了,但是具體的需要看具體的業務。

 

​
@Service
@JobHandler(value = "demoHandler")
public class DemoHandler extends IJobHandler {
 @Override
 public ReturnT<String> execute(String s) throws Exception {
 XxlJobLogger.log("日誌記錄數據...");
 //do something
 return ReturnT.SUCCESS;
 }
}
​

新增任務

配置好調度中心並且也成功啓動了執行器後,登錄調度中心新增執行器然後就可以配置任務了

新增執行器

P6高頻面試題:分佈式任務調度平臺

 

 

新增任務

新增任務的時候需要選擇上一步創建的執行器,選擇運行模式,如果是 JavaBean 方式就配置 JobHandler,或者選擇 Python 模式等,然後填上必要的一些信息,如Cron以及一些參數 具體配置可以參考任務詳解[4] 這裏的配置項比較多。

配置完成後可以如下,可以手動執行,暫停,查看日誌,如果是 Python 模式可以直接點擊GLUE按鈕進去填寫代碼,相關的代碼也有版本回溯,方便回滾,十分方便。

P6高頻面試題:分佈式任務調度平臺

 

 

總結一下

整個 XXL—JOB 都是支持分佈式部署的,而且執行器也可以配置多個,具體的路由策略也是可以配置的,十分方便。新版本的調度中心 Admin 已經升級爲 SpringBoot 項目了,而且項目本身就攜帶了很多類型的執行器可以使用,基本上實現了開箱即用,只要添加自己的業務邏輯就可以了。

不過整個 XXL-JOB 有個缺點就是沒有權限管理,執行器沒有實現權限控制,這個目前作者沒有實現,應該在後續的版本中會增加,這個在作者的 todo list 裏面,但是具體什麼時候實現就不知道了。目前我們這邊項目已經在線上跑了差不多一年了,還是比較穩定的,而且只是組內使用,沒有執行器權限的問題,但是如果要是上升到公司級別,讓各個組用的話權限還是一個重要的點。

總結

歡迎關注CSDN:JAVA編程大飛哥

覺得收穫的話可以點個關注評論轉發一波喔,謝謝大佬們支持!

微服務、分佈式、高併發、高可用,性能優化丶源碼分析等等一些技術乾貨等着你來探討學習!

點擊加入,一線互聯網技術等你來學習

點擊加入領取免費技術資料諮詢問題等。備註:CSDN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章