這篇文章,就來介紹一下xxl-job 的安裝和簡單使用。
這裡安裝是基於 Ubuntu 16.04 安裝的。
我看了一下 GitHub 上開源的分布式調度系統,目前是 xxl-job 項目是分布式調度開源系統中最多 starts 的(當然也有可能因為這個 xxl-job 出來挺久了)
window ,mac 或docker 安裝
如果為 window,mac 等安裝,可以先根據github 上的 SQL 腳本創建好資料庫和表,然後直接將github 上的源碼 導入到 idea 按照Spring Boot 應用來啟動即可。
如果為 docker 的安裝,可以直接pull 官方鏡像,然後運行時指定 MySQL 和存儲日誌目錄即可。
下載鏡像
# Docker地址:https://hub.docker.com/r/xuxueli/xxl-job-admin/ (建議指定版本號)docker pull xuxueli/xxl-job-admin創建容器並運行
# 如需自定義 mysql 等配置,可通過 "-e PARAMS" 指定,參數格式 PARAMS="--key=value --key2=value2" ;# 配置項參考文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties# 如需自定義 JVM內存參數 等配置,可通過 "-e JAVA_OPTS" 指定,參數格式 JAVA_OPTS="-Xmx512m" ;docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai" -p 8080:8080 -v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin:{指定版本}linux Ubuntu 16.04 安裝 xxl-job
在linux下直接安裝 xxl-job 會有點麻煩, 因為 xxl-job 並沒有像 nacos 之類的直接提供了一個啟動包,直接修改一下配置文件,然後運行啟動腳本即可那種。xxl-job 是只提供了的源碼文件,如果要運行,需要自己先將 java 源碼 通過 maven 打包構建成運行包,然後才能運行。所以接下來我來詳細講述一下如何在linux 下安裝啟動 xxl-job,這裡使用的 linux 版本為:Ubuntu 16.04。 其他版本也類似。
安裝 jdk ,maven ,git 環境
首先我們先需要安裝 Java 相關的環境,因為xxl-job 是 Java 開發的,在沒有提供啟動包的基礎上,我們需要自己從源碼解釋編譯成啟動包,然後啟動。
安裝 JDK
安裝有兩種一種是直接根據 apt 的包安裝,另一種是手動獲取 java 包安裝。這裡我們為了簡單起見使用 apt 直接安裝,如果需要更多自定義的配置可以手動安裝。執行運行以下兩個命令即可安裝 jdk8 版本的。
sudo apt-get updatesudo apt-get install openjdk-8-jdk -y參考:Ubuntu 16.04安裝Java JDK8
安裝 maven
我們這裡也直接採用 apt 包的安裝
sudo apt-get -y update sudo apt install maven -y待安裝完成之後,運行
mvn -v即可檢查是否安裝成功了
這裡安裝了 maven 之後還需要將 maven 的默認的遠程倉庫地址換成 國內的遠程倉庫地址,不然下載 maven 依賴的時候會很慢。打開 /etc/maven/settings.xml 文件,在 標籤裡面添加以下內容,即可將默認倉庫替換成阿里雲的倉庫。
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>安裝 GIT
我們這裡還需要安裝 GIT ,主要是為了可以方便複製源碼到本機,當然也可以通過直接 curl 獲取到文件,然後解壓。不過 git 總是有用,所以我們這裡也安裝了
sudo apt-get -y updatesudo apt-get install git -y 安裝資料庫
初始化資料庫的腳步為xxl-job的git 項目中的 /xxl-job/doc/db/tables_xxl_job.sql的文件,在已經安裝了 MySQL 的機器上連接上,然後執行即可
默認xxl-job 是支持集群部署的,只要連接相同的資料庫即可
另外如果 MySQL 有做主從部署,則 xxl-job 連接的一定要為主庫,也不能使用讀寫分離的帳號,否則在調度的時候可能會出現問題
git clone 源碼文件,打包構建
git clone https://gitee.com/xuxueli0323/xxl-job.gitcd xxl-job/mvn -B -Dmaven.test.skip=true clean packagecd xxl-job-admin/target# 這裡 根據不同的xxl-job的版本,文件名不一樣unzip xxl-job-admin-2.3.0-SNAPSHOT.jar# 解壓之後,進入BOOT-INT/target/class/ 目錄即可看到調度中心的配置文件 `application.properties`,修改裡面的資料庫連結和密碼即可,如果考慮調度系統的調用的安全性可以加上, xxl.job.accessToken= 參數# 修改完成之後,然後進入到 /xxl-job/xxl-job-admin/target 目錄下執行以下命令來啟動 xxl-job /usr/local/java/bin/java -classpath ./:./lib/* org.springframework.boot.loader.JarLauncher &執行之後,如果啟動成功會顯示如下圖這樣
然後打開連結: http://127.0.0.1:8080/xxl-job-admin (該地址執行器將會使用到,作為回調地址)
輸入默認的帳號和密碼, 「admin/123456」,登錄即可看到調度中心。(需要將127.0.0.1 換成自己的機器的ip)
安裝執行器項目
安裝完成調度中心之後,我們還需要安裝執行器項目,調度中心本身是不負責執行項目,要安裝執行器之後,才能通過調度中心去執行器服務上執行。安裝執行器項目很簡單,基本上就是安裝調度中心那樣安裝啟動即可,我們這裡為了簡單起見,可以直接啟動 xxl-job 自帶Spring Boot的簡單執行器。基於上面克隆下來的項目,我們進入 /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/target 目錄。如果要修改調度中心的地址的信息、調度中心的驗證的key等,可以修改配置文件,該執行器的配置文件為 /xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/target/BOOT-INF/classes/application.properties。
然後執行以下命令即可啟動執行器項目:
/usr/local/java/bin/java -classpath ./:./lib/* org.springframework.boot.loader.JarLauncher &簡單使用 xxl-job
經過上面的步驟,我們就有一個簡單的調度中心系統了。基於這個調度系統,我們可以隨便創建調度任務。這裡我示範一個創建一個每分鐘定時請求 http://t.weather.itboy.net/api/weather/city/101280101 連結獲取廣州天氣的任務。參考:免費天氣API,天氣JSON API,不限次數獲取十五天的天氣預報
登錄進入任務管理頁面新建任務
訪問,http://127.0.0.1:8080/xxl-job-admin ,輸入 admin/123456 。登錄上面我們搭建成功的xxl-job的分布式調度系統。然後進入"任務管理" 頁面,進行新建任務,
填寫任務的基本信息
這裡填寫的是調度任務的基本信息,例如:任務失敗的時候重試的次數,該任務的負責人、應該依賴的上一個任務id。
在彈出的新建任務的窗口,按照如下填寫:
編輯任務的具體執行的內容
我們可以通過xxl-job 自帶的 IDE 來編輯我們需要運行的shell腳本。
按照上面填寫好任務的基本信息後,我們接著來編輯要執行的任務腳本,
啟動任務並查詢執行記錄
點擊保存,然後返回任務列表,啟動該任務。然後就可以到"調度日誌"頁面,查看該任務的執行記錄了,點擊具體運行的某個實例的「查看日誌」能看到該實例執行記錄的詳細日誌信息。
總結
本篇文章介紹了分布式調度任務系統 xxl-job 的安裝 和簡單使用。其實整篇下來,我覺得挺水的;算作當做自己記錄一下吧,這個分布式調度系統的,其實功能挺簡單的,如果運行比較少的任務的會比較輕鬆和容易上手。不過如果要運行一些複雜的任務,特別是包含一些例如,按小時匯總到天 然後觸發依賴 之類邏輯較多的依賴或者是想延遲執行、指定重跑某個數據時間的實例 等等複雜邏輯,就比較困難了。另外這個分布式開源的調度系統的任務實例界面和任務管理界面的交互並不是很好,都是展示成列表的形式。如果把任務實例界面修改為按照單元格日期 這樣來選擇會比較好些。因為我們公司也有類似這樣的分布式調度系統,不過我們公司的由於業務比較複雜,所以我們的分布式調度任務系統的功能比較多,相對於 xxl-job 有一定優勢,但是也有挺多缺點的。
總而言之,對於絕大部分中小公司的調度任務或者是比較簡單的調度任務用xxl-job 是完全沒有問題的。如果是要作為企業級系統來使用估計還需要基於 xxl-job 來修改挺多模塊的。
原文連結:https://www.cnblogs.com/kanlon2015/p/14170299.html
如果覺得本文對你有幫助,可以轉發關注支持一下