分布式任務調度XXL-JOB初體驗


簡介

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

官方文檔很完善,不多贅述。本文主要是搭建XXL-JOB和簡單使用的記錄。

搭建xxl-job-admin管理端

運行環境

  • Ubuntu 16.04 64位
  • Mysql 5.7

安裝Mysql

$ sudo apt-get update
$ sudo apt-get install mysql-server

## 設置mysql,主要是安全方面的,密碼策略等
$ mysql_secure_installation
## 配置遠程訪問
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
$ sudo service mysql restart
$ sudo service mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-06-05 13:23:41 HKT; 45s ago
...

創建數據庫

$ mysql -u root -p
mysql> CREATE database if NOT EXISTS `xxl-job` default character set utf8 collate utf8_general_ci;

創建用戶

$ mysql -u root -p
mysql> CREATE USER 'xxl-job'@'%' IDENTIFIED BY 'xxlJob2019@';
mysql> GRANT ALL PRIVILEGES ON `xxl-job`.* TO 'xxl-job'@'%';

本地測試xxl-job-admin

拉取最新源碼

$ git clone git@github.com:xuxueli/xxl-job.git
$ cd xxl-job

導入項目

我比較熟悉Idea開發工具,所以這里使用IdeaGradle項目進行演示。

打開xxl-job,項目結構如下

測試項目

打開xxl-job-admin/resources/application.properties,修改mysql連接信息

### xxl-job, datasource
spring.datasource.url=jdbc:mysql://192.168.32.129:3306/xxl-job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=xxl-job
spring.datasource.password=xxlJob2019@

使用/xxl-job/doc/db/tables_xxl_job.sql初始化數據庫,初始化完應該如下圖

准備就緒后,就可以啟動項目了,然后打開地址http://localhost:8080/xxl-job-admin將會看到首頁

部署

打包調度中心

$ cd /xxl-job
$ mvn install
...
[INFO] xxl-job ............................................ SUCCESS [  0.513 s]
[INFO] xxl-job-core ....................................... SUCCESS [  4.258 s]
[INFO] xxl-job-admin ...................................... SUCCESS [  5.525 s]
[INFO] xxl-job-executor-samples ........................... SUCCESS [  0.016 s]
[INFO] xxl-job-executor-sample-spring ..................... SUCCESS [  2.188 s]
[INFO] xxl-job-executor-sample-springboot ................. SUCCESS [  0.892 s]
[INFO] xxl-job-executor-sample-jfinal ..................... SUCCESS [  1.753 s]
[INFO] xxl-job-executor-sample-nutz ....................... SUCCESS [  1.316 s]
[INFO] xxl-job-executor-sample-frameless .................. SUCCESS [  0.358 s]
[INFO] xxl-job-executor-sample-jboot ...................... SUCCESS [  1.279 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  18.549 s
[INFO] Finished at: 2019-06-05T14:40:25+08:00
[INFO] ------------------------------------------------------------------------

看到以上信息,說明我們打包成功了,在/xxl-job/xxl-job-admin目錄下會存在jar文件:xxl-job-admin-2.1.0-SNAPSHOT.jar

部署到服務器

$ sudo apt install openjdk-8-jdk
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.16.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)

$ sudo mkdir -p /data/xxl-job
$ sudo cd /data/xxl-job
## 上傳我們打包好的jar至此目錄,並添加軟連接
$ sudo ln -s xxl-job-admin-2.1.0-SNAPSHOT.jar current.jar

## 注冊為system服務,可以達到異常重啟,開機自啟等目的
$ sudo vim /etc/systemd/system/xxl-job.service
[Unit]
Description=xxl-job Service Daemon
After=mysql.service
[Service]
Environment="JAVA_OPTS= -Xmx1024m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:NewRatio=3 -Dserver.port=8081"
# java要寫絕對路徑
ExecStart=/usr/local/jdk/bin/java -jar /data/xxl-job/current.jar
Restart=always
WorkingDirectory=/data/xxl-job/
[Install]
WantedBy=multi-user.target

$ sudo systemctl enable xxl-job.service
$ sudo service xxl-job start
$ sudo service xxl-job status
● xxl-job.service - xxl-job Service Daemon
   Loaded: loaded (/etc/systemd/system/xxl-job.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-07-18 18:19:08 CST; 2min 19s ago
 Main PID: 27572 (java)
   CGroup: /system.slice/xxl-job.service
           └─27572 /usr/local/jdk/bin/java -jar /data/xxl-job/current.jar

我們訪問一下http://192.168.32.129:8080/xxl-job-admin:

測試任務調度

以上,我們的任務調度管理端已經搭建完成,接下來,讓我們測試下任務調度。

直接使用自帶的SpringBoot測試項目xxl-job-executor-sample-springboot進行測試,修改配置文件

xxl-job-executor-sample-springboot=http://192.168.32.129:8080/xxl-job-admin

自定義任務

編寫一個簡單的任務,打印100次當前序列

package com.xxl.job.executor.service.jobhandler;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * TODO
 *
 * @author gaochen
 * @date 2019/6/5
 */
@JobHandler(value="gcddJobHandler")
@Component
public class GcddJobHandler extends IJobHandler {
    @Override
    public ReturnT<String> execute(String param) throws Exception {
        for (int i = 0; i < 100; i++) {
            XxlJobLogger.log("XXL-JOB, print " + i);
            TimeUnit.SECONDS.sleep(1);
        }
        return SUCCESS;
    }
}

啟動執行器

然后啟動執行器,啟動完成后,我們會發現管理頁面的執行器列表會多出我們剛才啟動的執行器

添加任務

查看任務執行日志

可以看到,任務已經按照我們的規划執行成功了,非常的方便。

結語

想要了解更詳細的內容,請訪問xxl-job官網


免責聲明!

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



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