认识
官网:https://www.xuxueli.com/xxl-job/
文档:https://www.xuxueli.com/xxl-job/
仓库:https://github.com/xuxueli/xxl-job
A distributed task scheduling framework.(分布式任务调度平台 XXL-JOB),XXL-JOB 是个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。简而言之,XXL-JOB 是个任务调度平台,负责调度任务。
组成
针对“调度”和“任务”两部分,可以相互解耦,以提高系统整体稳定性和扩展性:
- 将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。
- 将任务抽象成分散的 JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的 JobHandler 中业务逻辑。
_Scheduler/XXL-JOB/pasted_image.png)
在实际的部署应用中,其大致过程为:(1)首先,部署调度中心服务,(2)然后,在代码中引入执行器类库,编码实现具体的任务功能。(3)启动执行器,执行器将自己注册到调度中心,调度中心将根据执行器的配置来定时调度任务。
调度中心 | xxl-job-admin
负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE 开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器 Failover。
公共依赖 | xxl-job-core
负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
接收“调度中心”的执行请求、终止请求和日志请求等。
性质
参考 分布式任务调度平台 XXL-JOB/1.3 特性 页面,以了解更多特性。
- 简单:支持通过 Web 页面对任务进行 CRUD 操作,操作简单,一分钟上手;
- 动态:支持动态修改任务状态)启动 / 停止任务,以及终止运行中任务,即时生效;
- 调度中心 HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心 HA;
- 执行器 HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行 HA;
- 注册中心: 执行器会周期性自动注册任务,调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
- 弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
- 触发策略:提供丰富的任务触发策略,包括:Cron 触发)固定间隔触发)固定延时触发)API(事件)触发)人工触发)父子任务触发;
- 调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略)立即补偿触发一次等;
- 阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认))丢弃后续调度)覆盖之前调度;
- ……
构建
服务部署
根据官方文档,服务部署仅运行调度中心组件即可。
版本选择
https://github.com/xuxueli/xxl-job/releases
部署方式
- 通过 .jar 部署:分布式任务调度平台 XXL-JOB/…快速入门
- 通过 Docker 部署:分布式任务调度平台 XXL-JOB/…Docker 镜像方式搭建调度中心…
- 通过 Helm 部署:针对 Kubernetes 环境,我们通过官方 Helm Chart 部署。
Docker Compose
xxljob docker 部署基于 xuxueli/xxl-job-admin:2.4.0 镜像
初始数据:
- 下载项目源码并解压,获取 “调度数据库初始化 SQL 脚本” 并执行即可:xxl-job/doc/db/tables_xxl_job.sql
运行服务:
---
version: "3"
services:
xxl-job-admin:
environment:
- PARAMS=--spring.datasource.url=jdbc:mysql://172.17.0.2:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
--spring.datasource.username=xxljob --spring.datasource.password=123456
ports:
- 8080:8080
volumes:
- /Users/xwh/volumes/xxl-job/applogs:/data/applogs
container_name: xxl-job-admin-2.4.0
image: xuxueli/xxl-job-admin:2.4.0
访问服务
- 调度中心访问地址:http://localhost:8080/xxl-job-admin (该地址执行器将会使用到,作为回调地址)
- 默认登录账号 “admin/123456”
应用
官网示例 | xxl-job-executor-samples
其是官方提供的执行器实例,用于提供参考。
应用访问调度中心
调度中心部署根地址 [选填]:如调度中心集群部署存在多个地址,则用逗号分隔。执行器将会使用该地址进行”执行器心跳注册”和”任务结果回调”;为空,则关闭自动注册;
xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin
管理帐号密码重置
配置文件里面写账号密码一点用都没,并且直接从数据库中修改也是不起作用的,只能用默认密码(amdin/123456)登陆 web 页面,然后右上角点击修改密码(采用 MD5 加密),或者直接数据库中修改密码(采用 MD5 算法 32 位小写加密),这样才有用。
控制执行日志的保留时长
日志主要包含如下两部分,均支持日志自动清理,说明如下:
- 调度中心日志表数据:可借助配置项 xxl.job.logretentiondays 设置日志表数据保存天数,过期日志自动清理;
- 执行器日志文件数据:可借助配置项 xxl.job.executor.logretentiondays 设置日志文件数据保存天数,过期日志自动清理;