xxl-job源碼解析系列 - 源碼構建

 

@author:zxw

@email:[email protected]

@ Jishou University

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


1.前言

最近項目上使用到了xxl-job這個分佈式任務調度的框架,所以也藉此機會瞭解下該項目的使用原理。對於任何一個框架和開源項目都是建立在實際需求上而開發和使用。畢竟開發還是要創造價值爲主,而不是什麼炫酷就用什麼。包括像alibaba最近比較火爆的開源項目nacos,sentinel等,其都是爲了解決某些業務場景下的問題而產生。而對於別人能解決的業務場景在我們自己項目上則未必適用,所以爲什麼要用一定要貼合我們實際的項目來看。當然,我在項目中是用xxl-job主要用於定時任務。

2.設計思想

我們在開源碼之前,還是得對該框架的整體有個概念。瞭解其運作方式和核心流程以及思想。以下基於我個人理解,其實使用過spring的同學的都知道,spring封裝了一個定時任務的註解@@Scheduled來開啓定時任務,創建一個類然後在裏面使用,如果是簡單的小項目那麼肯定沒問題,但是如果是分佈式的項目,幾十,上百個工程都使用了定時任務,那麼管理和維護起來的是十分困難,如果有一個統一的平臺對項目中所使用的定時任務進行統一的管理以及調度那麼就極大的減少我們維護的成本了,這也是我們使用xxl-job的原因,當然引進中間件的框架的同時也會產生許多問題,例如增加開發難度,以及要維護中間件框架。

所以之前說框架的誕生都是貼合實際業務和需求產生,在看xxl-job的框架設計之前我們也可以想想如果我們要對自己項目的定時任務進行管理我們該怎麼做以及怎麼去設計,然後再參考一下作者的思路。

以下引用自官方文檔

2.1 系統組成

  • 調度模塊(調度中心) 負責管理調度信息,按照調度配置發出調度請求,自身不承擔業務代碼。調度系統與任務解耦,提高了系統可用性和穩定性,同時調度系統性能不再受限於任務模塊;

  • 執行模塊(執行器) 負責接收調度請求並執行任務邏輯。任務模塊專注於任務的執行等操作,開發和維護更加簡單和高效;

2.2 架構圖

輸入圖片說明

3.項目構建

首先是從github上將源碼fork到自己的倉庫在clone到本地,接着使用idea將項目引入構建,下面是xxl-job的工程目錄介紹(<!--摘自官方文檔-->)。

- /doc :文檔資料
- /db :“調度數據庫”建表腳本
- /xxl-job-admin :調度中心,項目源碼
- /xxl-job-core :公共Jar依賴
- /xxl-job-executor-samples :執行器,Sample示例項目(大家可以在該項目上進行開發,也可以將現有項目改造生成執行器項目)

目錄如下

我們首先在目錄:doc/db下找到table_xxl_job.sql文件,然後將其導入到數據庫中,因爲job-admin啓動時調用的是我們本地的數據庫,如果不導入該sql文件會報錯。

當我們導入完sql文件後,可以找到admin工程啓動後臺項目了,如果有個人的需求可以修改application.peoperties文件進行數據庫,端口等修改。

對於xxl-job的源碼構建就講到這,之後我們開始講xxl-job的核心源碼。

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