当前位置: 首页 > news >正文

Docker 部署 XXL-JOB

使用 Docker 部署 XXL-JOB 详细指南

XXL-JOB 是一个轻量级分布式任务调度平台,广泛应用于定时任务调度、分布式任务处理等场景。通过 Docker 部署 XXL-JOB 可以快速搭建一个高可用、易扩展的任务调度系统。本文将详细介绍如何使用 Docker 部署 XXL-JOB,并讲解如何根据需求配置 XXL-JOB。


目录

  1. XXL-JOB 简介
  2. Docker 部署 XXL-JOB
    • 拉取 XXL-JOB 镜像
    • 运行 XXL-JOB 容器
    • 持久化配置
    • 网络配置
  3. XXL-JOB 配置文件详解
    • 常用配置项
    • 自定义配置文件
  4. 高级配置与优化
    • 集群部署
    • 数据库配置
    • 任务调度优化
  5. 监控与维护
    • 使用 XXL-JOB 管理界面
    • 日志管理
  6. 案例实战
    • 部署 XXL-JOB 调度中心
    • 部署 XXL-JOB 执行器

XXL-JOB 简介

XXL-JOB 是一个分布式任务调度平台,核心设计目标是开发简单、易扩展、易维护。它支持多种任务调度模式(如定时任务、Cron 表达式任务等),并提供了丰富的管理界面和监控功能。


Docker 部署 XXL-JOB

拉取 XXL-JOB 镜像

XXL-JOB 官方提供了 Docker 镜像,可以直接从 Docker Hub 拉取。

拉取调度中心镜像
docker pull xuxueli/xxl-job-admin:2.3.0
拉取执行器镜像
docker pull xuxueli/xxl-job-executor-sample:2.3.0

运行 XXL-JOB 容器

1. 运行调度中心容器

调度中心是 XXL-JOB 的核心组件,负责任务调度和管理。

docker run -d \
  --name xxl-job-admin \
  -p 8080:8080 \
  -e PARAMS="--spring.datasource.url=jdbc:mysql://<mysql-host>:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
  --spring.datasource.username=<username> \
  --spring.datasource.password=<password>" \
  xuxueli/xxl-job-admin:2.3.0
  • -d:后台运行容器。
  • --name xxl-job-admin:指定容器名称。
  • -p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口。
  • -e PARAMS:设置环境变量,配置数据库连接信息。
  • <mysql-host>:MySQL 数据库地址。
  • <username>:MySQL 用户名。
  • <password>:MySQL 密码。
2. 运行执行器容器

执行器是任务的执行单元,负责接收调度中心的任务并执行。

docker run -d \
  --name xxl-job-executor \
  -e PARAMS="--xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin \
  --xxl.job.executor.appname=xxl-job-executor-sample \
  --xxl.job.executor.ip= \
  --xxl.job.executor.port=9999" \
  xuxueli/xxl-job-executor-sample:2.3.0
  • -d:后台运行容器。
  • --name xxl-job-executor:指定容器名称。
  • -e PARAMS:设置环境变量,配置调度中心地址和执行器信息。
  • <admin-host>:调度中心地址。

持久化配置

为了持久化 XXL-JOB 的数据(如任务日志、调度记录等),可以将数据存储到 MySQL 数据库。

1. 创建 MySQL 数据库

在 MySQL 中创建数据库 xxl_job,并导入 XXL-JOB 提供的 SQL 脚本。

mysql -h <mysql-host> -u <username> -p<password> -e "CREATE DATABASE xxl_job;"
mysql -h <mysql-host> -u <username> -p<password> xxl_job < /path/to/xxl-job.sql
  • /path/to/xxl-job.sql:XXL-JOB 提供的 SQL 脚本路径。
2. 配置调度中心连接数据库

在调度中心启动时,通过环境变量配置数据库连接信息。


网络配置

如果调度中心和执行器部署在不同的主机上,需要确保网络互通。

1. 调度中心地址

执行器需要配置调度中心的地址:

--xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin
2. 执行器地址

调度中心需要知道执行器的地址和端口:

--xxl.job.executor.ip=
--xxl.job.executor.port=9999

XXL-JOB 配置文件详解

常用配置项

以下是一些常用的 XXL-JOB 配置项:

  • spring.datasource.url:数据库连接 URL。
  • spring.datasource.username:数据库用户名。
  • spring.datasource.password:数据库密码。
  • xxl.job.admin.addresses:调度中心地址。
  • xxl.job.executor.appname:执行器名称。
  • xxl.job.executor.ip:执行器 IP 地址。
  • xxl.job.executor.port:执行器端口。

自定义配置文件

可以通过挂载配置文件的方式自定义 XXL-JOB 的配置。

1. 创建配置文件

在主机上创建配置文件 application.properties

spring.datasource.url=jdbc:mysql://<mysql-host>:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=<username>
spring.datasource.password=<password>
xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin
xxl.job.executor.appname=xxl-job-executor-sample
xxl.job.executor.ip=
xxl.job.executor.port=9999
2. 挂载配置文件

启动容器时挂载配置文件:

docker run -d \
  --name xxl-job-admin \
  -p 8080:8080 \
  -v /path/to/application.properties:/app/config/application.properties \
  xuxueli/xxl-job-admin:2.3.0

高级配置与优化

集群部署

为了提高系统的可用性,可以部署多个调度中心和执行器。

1. 调度中心集群

部署多个调度中心实例,并使用 Nginx 进行负载均衡。

2. 执行器集群

部署多个执行器实例,并在调度中心中配置相同的 appname


数据库配置

使用高性能的 MySQL 数据库,并优化数据库连接池配置。

1. 数据库连接池

application.properties 中配置数据库连接池:

spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=10
2. 数据库索引

为任务日志表和调度记录表添加索引,提高查询性能。


任务调度优化

1. 任务分片

对于大数据量任务,可以使用任务分片功能,将任务拆分为多个子任务并行执行。

2. 任务超时

设置任务超时时间,避免任务长时间占用资源。


监控与维护

使用 XXL-JOB 管理界面

XXL-JOB 提供了丰富的管理界面,可以查看任务执行情况、调度日志、执行器状态等。

访问 http://<admin-host>:8080/xxl-job-admin,使用默认用户名 admin 和密码 123456 登录。


日志管理

XXL-JOB 的任务日志存储在数据库中,可以通过管理界面查看日志详情。


案例实战

部署 XXL-JOB 调度中心

1. 启动调度中心容器
docker run -d \
  --name xxl-job-admin \
  -p 8080:8080 \
  -e PARAMS="--spring.datasource.url=jdbc:mysql://<mysql-host>:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
  --spring.datasource.username=<username> \
  --spring.datasource.password=<password>" \
  xuxueli/xxl-job-admin:2.3.0
2. 访问管理界面

打开浏览器,访问 http://<admin-host>:8080/xxl-job-admin


部署 XXL-JOB 执行器

1. 启动执行器容器
docker run -d \
  --name xxl-job-executor \
  -e PARAMS="--xxl.job.admin.addresses=http://<admin-host>:8080/xxl-job-admin \
  --xxl.job.executor.appname=xxl-job-executor-sample \
  --xxl.job.executor.ip= \
  --xxl.job.executor.port=9999" \
  xuxueli/xxl-job-executor-sample:2.3.0
2. 在管理界面注册执行器

登录调度中心管理界面,手动注册执行器。


通过以上步骤,你可以快速部署 XXL-JOB 调度平台,并根据需求进行配置和优化。继续实践和探索,你将能够更高效地使用 XXL-JOB 管理分布式任务!

相关文章:

  • 粘包半包以及Netty的解决办法
  • HCITool 的详细介绍、安装指南及使用说明
  • 合批Batching
  • MySQL 中利用 mysql.help_topic 实现行转列的深入剖析
  • 物理标签与逻辑标签的区别
  • 第七节 MATLAB数据类型
  • Pytorch使用手册—自定义 C++ 和 CUDA 扩展(专题五十二)
  • Altium Design元件管理笔记
  • PolyBench基准程序详解:编译器优化评测指标
  • IDEA 出现 Cannot access aliyunmaven in offline mode 问题解决方案
  • 【愚公系列】《高效使用DeepSeek》020-专业术语解释
  • 脚本语言 Lua
  • K8S学习之基础四十:K8S配置altermanager发送告警到钉钉群
  • 在麒麟系统(基于Ubuntu或Debuntu)的离线环境中创建本地APT仓库
  • 基于django美团美食销售数据分析与可视化系统设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • Redis 本地安装
  • 【Kafka】深入了解Kafka
  • 【文章写作】以数字素养筑基,绘治理现代化蓝图
  • CSS 用于图片的样式属性
  • STM32-汇编2、外设
  • “中国神湖”加快放大资源规模!3亿美元换海外年产380万吨钾盐项目
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 北京航空航天大学首个海外创新研究院落户巴西
  • 广州一饮品店取名“警茶”?市监局:取名没问题,但图像会产生误解
  • 国产水陆两栖大飞机AG600批产首架机完成总装下线
  • 茅台1935今年动销达到预期,暂无赴港上市计划!茅台业绩会回应多个热点