оригинал:gcdd1993.github.io/распределенное планирование задач XXL-…
Введение
XXL-JOBЭто легкая распределенная платформа планирования задач, основными целями которой являются быстрая разработка, простота обучения, малый вес и легкое расширение. Теперь с открытым исходным кодом и подключен к линейкам онлайн-продуктов многих компаний, из коробки.
Официальная документация очень полная, поэтому я не буду вдаваться в подробности. Эта статья в основном построенаXXL-JOB
и простые в использовании записи.
Собрать терминал управления xxl-job-admin
Рабочая среда
- Убунту 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
инструменты разработки, так что используйте здесьIdea
изGradle
Проект для демонстрации.
Открыть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
Description=xxl-job Service Daemon
After=mysql.service
[Service]
Type=simple
Environment="JAVA_OPTS= -Xmx1024m -Xms1024m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:NewRatio=3"
ExecStart=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
Loaded: loaded (/etc/systemd/system/xxl-job.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-06-05 15:30:08 HKT; 2min 34s ago
...
Заходим на 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 официальный сайт