XXL-job 學習筆記


XXL-job 學習筆記
一、學習XXL-job之前,先了解一下什么是xxl-job;
XXL-JOB是一個輕量級分布式任務調度平台,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼並接入多家公司線上產品線,開箱即用。
官方地址中文版:http://www.xuxueli.com/xxl-job

Quartz作為開源作業調度中的佼佼者,是作業調度的首選。集群環境中Quartz采用API的方式對任務進行管理,Quartz存在以下問題:
問題一:調用API的的方式操作任務,不人性化;
問題二:需要持久化業務QuartzJobBean到底層數據表中,系統侵入性相當嚴重。
問題三:調度邏輯和QuartzJobBean耦合在同一個項目中,這將導致一個問題,在調度任務數量逐漸增多,同時調度任務邏輯逐漸加重的情況加,此時調度系統的性能將大大受限於業務;
問題四:quartz底層以“搶占式”獲取DB鎖並由搶占成功節點負責運行任務,會導致節點負載懸殊非常大;而XXL-JOB通過執行器實現“協同分配式”運行任務,充分發揮集群優勢,負載各節點均衡。
XXL-JOB彌補了quartz的上述不足之處。

二、環境准備
在准備xxl-job環境之前先了解一下docker,因為xxl-job我是依賴於docker環境安裝的,當然也可以采用傳統方式安裝;不過我還是覺得docker比較方便,不污染環境。具體安裝方法有很多,由於不是本文豬腳,就不在此贅述;
通過docker命令拉取xxl-job-admin的鏡像:
docker pull xuxueli/xxl-job-admin:2.1.2
執行docker run啟動container
docker run –e                                         
PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=數據庫用戶名 --spring.datasource.password=數據庫密碼" -p 映射主機的端口:8080 -v /tmp:/data/applogs --name xxl-job-admin  -d 鏡像ID

命令的PARAMS是作者給的參數名稱,具體需要了解Dockfile的編寫
啟動之后可以訪問job-admin任務管理后台,界面如下:
 

三、任務使用
1.在需要使用任務的項目中引入maven依賴
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.1.2</version>
</dependency>
2.添加yml配置
---
#xxl-job
### xxl-job admin address list, such as "http://address" or "http://address01,http://address02"
xxl.job.admin.addresses: http://之前部署服務器地址:8085/xxl-job-admin
### xxl-job executor address
xxl.job.executor.appname: xxl-job-executor-sample
xxl.job.executor.ip:
xxl.job.executor.port: 9999
### xxl-job, access token
xxl.job.accessToken:
### xxl-job log path
xxl.job.executor.logpath: /data/applogs/xxl-job/jobhandler
### xxl-job log retention days
xxl.job.executor.logretentiondays: 30

3.代碼編寫我們的任務執行器
 
4.使用管理后台創建執行器,
 
5.創建要執行的任務
 
選擇之前我們創建的執行器,java一般是bean模式,與代碼中的bean相同即可,輸入cron表達式,跟@ Scheduled和quartz類似。保存后啟動任務即可。如果再分布式項目中可以把執行器單獨抽取一個服務,這樣也能體現出xxl-job在分布式架構下的完美表現。這僅僅只是它的最基本使用方法,具體有多強大就需要你去發現了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM