恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Lottery 抽奖系统实战:Docker 部署 XXL-JOB 分布式任务调度中心
首页
资讯中心
/
Lottery 抽奖系统实战:Docker 部署 XXL-JOB 分布式任务调度中心
Lottery 抽奖系统实战:Docker 部署 XXL-JOB 分布式任务调度中心
发布时间:2026/9/25 20:05:59
文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载导读本篇技术指南完整讲解在 Lottery 抽奖系统Docker 环境中部署 XXL-JOB 分布式任务调度中心的全部步骤从准备 MySQL 数据库、导入 xxl-job 初始化 SQL 脚本到拉取官方镜像、以单行docker run命令完成调度中心启动并逐一拆解PARAMS环境变量中数据源、端口、访问令牌等关键参数的配置含义。读完本文你不仅能独立部署一套可用的 XXL-JOB 调度中心还能理解它与 Lottery 项目中活动状态扫描、MQ 消息补偿等定时任务场景的配合方式。一、为什么 Lottery 项目需要 XXL-JOBLottery 抽奖系统在业务推进过程中会遇到典型的定时任务场景例如活动状态扫描把审核通过的活动扫描为“活动中”把已过期活动的状态扫描为“关闭”参见 第17节引入xxl-job处理活动状态扫描MQ 消息补偿扫描抽奖发货单消息状态对未发送或发送失败的 MQ 进行补偿发送保障全流程可靠性参见 第18节扫描库表补偿发货单MQ消息。这类需求如果散落在各个应用里各自写Timer、Scheduled会面临任务不可视、无重试、无告警、无法集群 HA 等问题。XXL-JOB 是一个分布式任务调度平台核心设计目标是开发迅速、学习简单、轻量级、易扩展其调度中心与执行器分离的架构能够为 Lottery 这类包含多服务、需要集群部署的系统提供统一的任务注册、调度、监控入口。其核心能力包括简单通过 Web 页面对任务进行 CRUD 操作一分钟上手动态支持动态修改任务状态、启动/停止任务、终止运行中任务即时生效调度中心 HA中心式设计支持集群部署执行器 HA任务分布式执行执行器支持集群部署注册中心执行器周期性自动注册调度中心自动发现并触发执行触发策略Cron 触发、固定间隔触发、固定延时触发、API事件触发、人工触发、父子任务触发阻塞处理策略单机串行默认、丢弃后续调度、覆盖之前调度任务超时控制 / 失败重试 / 失败告警超时主动中断、按预设次数重试、默认邮件告警并预留扩展接口路由策略第一个、最后一个、轮询、随机、一致性 HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等分片广播 / 动态分片以执行器为维度分片可随集群扩容动态增加分片数量提升大数据量任务的处理能力。正因如此Lottery 项目在Part-2阶段就引入 XXL-JOB 解决分布式定时任务问题并在云服务器部署阶段Part-5把它作为独立中间件环境安装到 Docker 中。二、部署前置先准备好 MySQL 环境XXL-JOB 调度中心的元数据执行器注册信息、任务配置、调度日志等全部持久化在 MySQL 中因此部署 xxl-job-admin 之前必须有一个可用的 MySQL 实例。在 Lottery 的部署链路里MySQL 环境的安装已经在上一章节完成详见 第04节部署环境 Mysql其核心动作是通过 Docker Hub 或docker search mysql查看可用版本拉取镜像docker pull mysql:latest启动容器并使用本地 SQL 工具连接 MySQL创建库表并导入建表语句。前置提醒如果你的云服务器还没有 Docker 环境需要先按 第01节在云服务器部署 Docker 完成安装。文中示例环境为 CentOS 8.x Docker 20.10.11若拉取镜像时报错error response from daemon: Get https://registry-1.docker.io/v2/...可在 Docker 配置中补充registry-mirrors镜像加速地址后重启 Docker 解决。部署 XXL-JOB 前的运维日志归纳如下在 Docker 容器中部署 xxl-job部署前需要 MySQL 环境上一章节已安装完成本章节下载 xxl-job 2.1.2 对应的 SQL 文件并导入作为调度中心的初始化数据。三、导入 xxl-job 初始化 SQLxxl-job 官方在发布包中提供了初始化脚本Lottery 项目将 xxl-job 2.1.2 对应的 SQL 文件存放在仓库的doc/assets/sql/xxl-job.sql路径下可直接打开使用。1. 创建数据库使用本地 SQL 链接工具示例中为 Navicat Premium连接上一章节部署好的 MySQL创建一个名为xxl_job的数据库然后将xxl-job.sql文件整体导入。2. 导入后生成的调度核心表脚本导入成功后xxl_job库下会生成一批 xxl-job 调度中心运行所依赖的表包括表名职责说明xxl_job_group执行器信息表保存执行器 AppName、名称、注册方式与地址列表xxl_job_info任务信息表保存任务配置、调度 Cron、路由策略、阻塞策略、任务参数等xxl_job_lock任务调度锁表用于调度中心集群环境下保证调度的一致性xxl_job_log调度日志表记录每次调度触发与执行结果xxl_job_log_report调度日志报表用于调度中心统计展示xxl_job_logglue任务 GLUE 模式在线编辑代码的代码历史表xxl_job_registry执行器注册表执行器心跳上报后在此登记调度中心据此发现执行器xxl_job_user调度中心后台登录用户表默认账号 admin / 123456这些表是调度中心正常工作的数据底座执行器通过xxl_job_registry完成自动注册任务调度通过xxl_job_info读取任务配置运行记录写入xxl_job_log供 Web 台监控。四、拉取 xxl-job-admin 镜像xxl-job 官方提供了开箱即用的 Docker 镜像xuxueli/xxl-job-adminLottery 部署章节选用的是2.3.0版本拉取命令如下docker pull xuxueli/xxl-job-admin:2.3.0镜像拉取完成后可以用docker images确认镜像是否就绪。接下来就是最关键的部署环节——通过一条docker run命令完成调度中心的启动与配置注入。五、部署 xxl-job 调度中心Docker 启动命令拆解xxl-job-admin 基于 Spring Boot 开发官方镜像约定通过环境变量PARAMS传入 Spring Boot 的启动参数从而在不改动镜像内部配置文件的前提下完成端口、数据源、访问令牌的定制。Lottery 项目使用的完整部署命令如下docker run -e PARAMS --server.port7397 --spring.datasource.urljdbc:mysql://172.17.0.6:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8serverTimezoneGMT%2B8 --spring.datasource.usernameroot --spring.datasource.password123456 --xxl.job.accessTokenxdsl3ewi3al1oehxmo68pqxer -p 7397:7397 -v /logs/xxl-job:/data/applogs --name xxl-job-admin --restartalways -d xuxueli/xxl-job-admin:2.3.0关键提醒命令中的数据库服务器 IP172.17.0.6、账号、密码、accessToken 都需要修改成你自己的实际值。下面对这条命令逐段拆解说明。1. 基础运行参数参数含义-d后台运行容器并返回容器 ID--name xxl-job-admin指定容器名称便于后续docker logs、docker stop等运维操作--restartalways容器退出时自动重启保证调度中心在服务器重启或进程异常退出后能自愈-p 7397:7397端口映射格式为「宿主机端口:容器端口」将容器的 7397 端口暴露到宿主机-v /logs/xxl-job:/data/applogs数据卷挂载将容器内的任务执行日志目录/data/applogs映射到宿主机/logs/xxl-job方便日志持久化与排查-e PARAMS...注入 Spring Boot 启动参数这是 xxl-job-admin 镜像的配置入口2.PARAMS中的调度中心参数PARAMS的本质是追加到java -jar之后的 Spring Boot 命令行参数优先级高于application.properties因此无需修改镜像内配置即可完成个性化参数示例值说明--server.port7397调度中心 HTTP 服务端口与-p 7397:7397的容器端保持一致浏览器通过该端口访问后台--spring.datasource.urljdbc:mysql://172.17.0.6:3306/xxl_job?useUnicodetruecharacterEncodingUTF-8serverTimezoneGMT%2B8JDBC 数据源地址指向已导入 SQL 的xxl_job库--spring.datasource.usernameroot数据库账号--spring.datasource.password123456数据库密码部署时务必替换为强密码--xxl.job.accessTokenxdsl3ewi3al1oehxmo68pqxer调度中心与执行器之间的访问令牌执行器接入时必须配置相同的令牌才能完成注册与调度3. JDBC URL 中三个关键参数的用意数据源 URL 中携带的useUnicode、characterEncoding、serverTimezone三个参数值得单独说明useUnicodetrue启用 Unicode 字符集支持配合characterEncoding一起使用避免中文乱码characterEncodingUTF-8指定客户端连接使用 UTF-8 编码任务名称、日志等中文内容才能正确读写serverTimezoneGMT%2B8指定服务器时区为东八区GMT8的 URL 编码形式%2B即。MySQL 8.x 驱动对时区敏感不显式指定会因服务器与客户端时区差异导致时间解析异常进而影响任务调度时间的计算。六、部署后的验证与运维检查容器启动后建议按以下顺序做一轮验证查看容器状态docker ps | grep xxl-job-admin确认容器状态为Up且--restartalways策略已生效查看启动日志docker logs -f xxl-job-admin关注 Spring Boot 启动 Banner、数据源初始化及 Tomcat 端口监听日志出现Started XxlJobAdminApplication字样即代表启动成功访问调度中心后台浏览器打开http://云服务器IP:7397/xxl-job-admin使用默认账号admin/ 密码123456登录首次登录后建议立即修改默认密码参见xxl_job_user表。若部署在其他云服务器请确认安全组/防火墙已放行7397端口否则外部无法访问后台界面。七、接入 Lottery 应用执行器注册与任务配置调度中心部署完成只是第一步要让 Lottery 应用里的定时任务真正跑起来还需要完成“执行器”的接入与“任务”的配置这一链路在 第17节引入xxl-job处理活动状态扫描 中有完整讲述。其整体协作流程是执行器侧配置在 Lottery 应用Spring Boot 工程中引入xxl-job依赖配置执行器 AppName、调度中心地址、端口以及与调度中心一致的 accessToken执行器自动注册应用启动后执行器周期性向调度中心上报心跳调度中心通过xxl_job_registry表发现并登记执行器地址后台配置任务登录调度中心 Web 台在执行器列表中选择对应 AppName新增任务并配置 Cron 表达式、路由策略、阻塞处理策略等任务定义写入xxl_job_info调度触发执行调度中心按 Cron 触发任务将调度请求下发到执行器执行器回调执行结果并写入xxl_job_logWeb 台即可实时查看调度日志与执行进度。在 Lottery 项目中任务处理类位于应用层worker包下的LotteryXxlJob中例如 第18节扫描库表补偿发货单MQ消息 中的“扫描抽奖发货单消息状态、补偿发送 MQ”任务就是在LotteryXxlJob中添加任务方法后再配置到 xxl-job 调度后台完成定时触发。活动状态扫描、MQ 补偿这类任务都依赖分库分表路由能力扫描多张表调度中心的统一触发与监控正好让这批任务的运行状态一目了然。八、小结至此Lottery 抽奖系统的 XXL-JOB 分布式任务调度中心已在 Docker 环境中部署完毕。整个部署链路可归纳为三步准备 MySQL沿用上一章节部署的 MySQL 实例创建xxl_job库并导入官方初始化 SQL生成xxl_job_info、xxl_job_group、xxl_job_registry等核心表拉取镜像docker pull xuxueli/xxl-job-admin:2.3.0一键部署通过-e PARAMS注入端口、数据源、账号密码与 accessToken配合端口映射、日志卷挂载与--restartalways完成高可用启动。调度中心就绪后即可在 Web 后台完成执行器管理与任务配置让 Lottery 中的活动状态扫描、MQ 消息补偿等分布式定时任务纳入统一调度与监控体系。赞分享文档教程后端【免费下载链接】CodeGuide:books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总旨在为大家提供一个清晰详细的学习教程侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助请给予支持(关注、点赞、分享)项目地址https://gitcode.com/gh_mirrors/code/CodeGuide点击查看免费下载相关推荐Lottery 抽奖系统部署实战Docker 安装 Nacos 注册中心并接入 Dubbo 服务注册Lottery 抽奖系统部署实战Docker 安装 Nacos 注册中心并接入 Dubbo 服务注册 导读 本篇是《Lottery 分布式抽奖系统》部署环境系文档教程后端JEECG-Boot分布式任务调度XXL-Job集群部署与任务管理终极指南JEECG Boot分布式任务调度XXL Job集群部署与任务管理终极指南 JEECG Boot作为一款强大的企业级快速开发平台深度集成了XXL Job分布低代码后端前端AI 应用大模型RAG工作流自动化【限时免费】 【xxl-job】开源下载和安装教程【xxl job】开源下载和安装教程 1、项目介绍 XXL JOB是一个轻量级分布式任务调度平台核心设计目标是开发迅速、学习简单、轻量级、易扩展。主要特性包括任务调度后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考