xxl-job官⽅⽂档学习笔记
参考:
XXL-JOB是⼀个分布式任务调度平台。
1 特性
1. 简单:⽀持通过Web页⾯对任务进⾏CRUD操作,操作简单,⼀分钟上⼿;
2. 动态:⽀持动态修改任务状态、启动/停⽌任务,以及终⽌运⾏中任务,即时⽣效;
3. 调度中⼼HA(中⼼式):调度采⽤中⼼式设计,“调度中⼼”⾃研调度组件并⽀持集部署,可保证调度中⼼HA;
4. 执⾏器HA(分布式):任务分布式执⾏,任务”执⾏器”⽀持集部署,可保证任务执⾏HA;
5. 注册中⼼: 执⾏器会周期性⾃动注册任务, 调度中⼼将会⾃动发现注册的任务并触发执⾏。同时,也⽀持⼿动录⼊执⾏器地址;
6. 弹性扩容缩容:⼀旦有新执⾏器机器上线或者下线,下次调度时将会重新分配任务;
7. 触发策略:提供丰富的任务触发策略,包括:Cron触发、固定间隔触发、固定延时触发、API(事件)触发、⼈⼯触发、⽗⼦任务触
发;
8. 调度过期策略:调度中⼼错过调度时间的补偿处理策略,包括:忽略、⽴即补偿触发⼀次等;
9. 阻塞处理策略:调度过于密集执⾏器来不及处理时的处理策略,策略包括:单机串⾏(默认)、丢弃后续调度、覆盖之前调度;
10. 任务超时控制:⽀持⾃定义任务超时时间,任务运⾏超时将会主动中断任务;
11. 任务失败重试:⽀持⾃定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进⾏重试;其中分⽚任务⽀持分⽚粒
度的失败重试;
12. 任务失败告警;默认提供邮件⽅式失败告警,同时预留扩展接⼝,可⽅便的扩展短信、钉钉等告警⽅式;
13. 路由策略:执⾏器集部署时提供丰富的路由策略,包括:第⼀个、最后⼀个、轮询、随机、⼀致性HASH、最不经常使⽤、最近最
久未使⽤、故障转移、忙碌转移等;
14. 分⽚⼴播任务:执⾏器集部署时,任务路由策略选择”分⽚⼴播”情况下,⼀次任务调度将会⼴播触发集中所有执⾏器执⾏⼀次
任务,可根据分⽚参数开发分⽚任务;
15. 动态分⽚:分⽚⼴播任务以执⾏器为维度进⾏分⽚,⽀持动态扩容执⾏器集从⽽动态增加分⽚数量,协同进⾏业务处理;在进⾏⼤
数据量业务操作时可显著提升任务处理能⼒和速度。
16. 故障转移:任务路由策略选择”故障转移”情况下,如果执⾏器集中某⼀台机器故障,将会⾃动Failover切换到⼀台正常的执⾏器
发送调度请求。
17. 任务进度监控:⽀持实时监控任务进度;
18. Rolling实时⽇志:⽀持在线查看调度结果,并且⽀持以Rolling⽅式实时查看执⾏器输出的完整的执⾏⽇志;
19. GLUE:提供Web IDE,⽀持在线开发任务逻辑代码,动态发布,实时编译⽣效,省略部署上线的过程。⽀持30个版本的历史版本回
溯。
20. 脚本任务:⽀持以GLUE模式开发和运⾏脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
21. 命令⾏任务:原⽣提供通⽤命令⾏任务Handler(Bean任务,”CommandJobHandler”);业务⽅只需要提供命令⾏即可;
22. 任务依赖:⽀持配置⼦任务依赖,当⽗任务执⾏结束且执⾏成功后将会主动触发⼀次⼦任务的执⾏, 多个⼦任务⽤逗号分隔;
23. ⼀致性:“调度中⼼”通过DB锁保证集分布式调度的⼀致性, ⼀次任务调度只会触发⼀次执⾏;
24. ⾃定义任务参数:⽀持在线配置调度任务⼊参,即时⽣效;
25. 调度线程池:调度系统多线程触发调度运⾏,确保调度精确执⾏,不被堵塞;
26. 数据加密:调度中⼼和执⾏器之间的通讯进⾏数据加密,提升调度信息安全性;
27. 邮件报警:任务失败时⽀持邮件报警,⽀持配置多邮件地址发报警邮件;
28. 推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, ⽅便⽤户接⼊和使⽤;
29. 运⾏报表:⽀持实时查看运⾏数据,如任务数量、调度次数、执⾏器数量等;以及调度报表,如调度⽇期分布图,调度成功分布图
等;
30. 全异步:任务调度流程全异步化设计实现,如异步调度、异步运⾏、异步回调等,有效对密集调度进⾏流量削峰,理论上⽀持任意时
30. 全异步:任务调度流程全异步化设计实现,如异步调度、异步运⾏、异步回调等,有效对密集调度进⾏流量削峰,理论上⽀持任意时
长任务的运⾏;
31. 跨语⾔:调度中⼼与执⾏器提供语⾔⽆关的 RESTful API 服务,第三⽅任意语⾔可据此对接调度中⼼或者实现执⾏器。除此之外,还
提供了 “多任务模式”和“httpJobHandler”等其他跨语⾔⽅案;
32. 国际化:调度中⼼⽀持国际化设置,提供中⽂、英⽂两种可选语⾔,默认为中⽂;
33. 容器化:提供官⽅docker镜像,并实时更新推送dockerhub,进⼀步实现产品开箱即⽤;
34. 线程池隔离:调度线程池进⾏隔离拆分,慢任务⾃动降级进⼊”Slow”线程池,避免耗尽调度线程,提⾼系统稳定性;
35. ⽤户管理:⽀持在线管理系统⽤户,存在管理员、普通⽤户两种⾓⾊;
36. 权限控制:执⾏器维度进⾏权限控制,管理员拥有全量权限,普通⽤户需要分配执⾏器权限后才允许相关操作;
2 安装配置
2.1 源码下载
下载地址:
github/xuxueli/xxl-job
下载的源码:
xxl-job-2.3.0.zip
2.2 数据库初始化
到源码中数据库脚本,执⾏脚本初始化数据库:
/xxl-job-2.3.0/doc/db/tables_xxl_job.sql
调度中⼼⽀持集部署,集情况下各节点务必连接同⼀个mysql实例。如果mysql做主从,调度中⼼集节点务必强制⾛主库。
执⾏初始化脚本之后,会创建xxl-job使⽤的数据库和表:
2.3 编译源码
解压源码包,执⾏ mvn install。
源码结构如下:
xxl-job-admin:调度中⼼
xxl-job-core:公共依赖
xxl-job-executor-samples:执⾏器Sample⽰例(选择合适的版本执⾏器,可直接使⽤,也可以参考其并将现有项⽬改造成执⾏器)
:xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执⾏器,推荐这种⽅式;
:xxl-job-executor-sample-frameless:⽆框架版本;
2.4 配置部署xxl-job-admin调度中⼼
调度中⼼是⼀个统⼀管理调度任务的平台,提供了web管理界⾯。
基于springboot实现的,以jar包⽅式运⾏。
调度中⼼配置⽂件
调度中⼼的配置⽂件位置:
src/main/resources/application.properties
配置说明如下:
### web管理平台配置:端⼝和上下⽂
server.port=8080
t-path=/xxl-job-admin
### 执⾏器
management.t-path=/actuator
management.abled=false
### 静态资源
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
### freemarker模板资源
plateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
quest-context-attribute=request
spring.freemarker.settings.number_format=0.>>
### mybatis配置
mybatis.mapper-locations=classpath:/mybatis-mapper/*l
#l.odel
### 数据库配置【必填】(需要修改为⾃⼰mysql的连接信息)
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shan ghai
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.sql.cj.jdbc.Driver
### datasource-pool 数据库连接池配置
pe=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=30
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=HikariCP
spring.datasource.hikari.max-lifetime=900000
spring.tion-timeout=10000
spring.tion-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=1000
### 报警邮箱设置
spring.mail.host=smtp.qq
spring.mail.port=25
spring.mail.username=xxx@qq
spring.mail.from=xxx@qq
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.able=true
spring.mail.properties.mail.quired=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.ssl.SSLSocketFactory
### 调度中⼼通讯TOKEN 【选填】:⾮空时启⽤;
xxl.job.accessToken=
mysql下载jar包### 调度中⼼国际化配置【必填】:默认为 "zh_CN"/中⽂简体, 可选范围为 "zh_CN"/中⽂简体, "zh_TC"/中⽂繁体 and "en"/英⽂;
xxl.job.i18n=zh_CN
## 调度线程池最⼤线程配置【必填】
iggerpool.fast.max=200
iggerpool.slow.max=100
### 调度中⼼⽇志表数据保存天数【必填】:过期⽇志⾃动清理;限制⼤于等于7时⽣效,否则, 如-1,关闭⾃动清理功能;
xxl.job.logretentiondays=30
⼀般来说,配置⼀下mysql的连接信息就可以了,其他的按需配置。
编译
修改完配置⽂件之后,在xxl-job-admin⽬录下执⾏mvn clean 和 mvn install重新编译打包,⽣成jar包:
/xxl-job-admin/target/xxl-job-admin-2.3.0.jar
启动服务
将xxl-job-admin-2.3.0.jar上传到服务器⾃定义⽬录(例如/usr/local/myapp/xxl-job-admin),启动执⾏:
nohup java -jar xxl-job-admin-2.3.0.jar &
从l配置⽂件中可以知道,⽇志⽂件输出位置/data/applogs/xxl-job/xxl-job-admin.log。
访问web控制台
地址为:
ip:8080/xxl-job-admin
注意,如果8080端⼝不能访问,可以配置防⽕墙
默认登录⽤户名/密码:
admin/123456
管理界⾯如下:
⾄此 “xxl-job-admin调度中⼼" 已经部署成功。
2.5 配置执⾏器
执⾏器负责接收 “调度中⼼” 的调度任务并执⾏任务。可直接部署执⾏器,也可以将执⾏器集成到现有业务项⽬中。
官⽅推荐SpringBoot⽅式创建执⾏器。
xxl-job-executor-sample-springboot 是官⽅提供的⼀个使⽤SpringBoot创建执⾏器的例⼦。
创建⼀个执⾏器最主要是要引⼊xxl-job-core依赖。
执⾏器的配置⽂件
配置⽂件的位置:
src/main/resources/application.properties
配置⽂件内容:
# port
server.port=8081
# 这⾥设置SpringBoot不占⽤web端⼝,⼀般定时任务都可以设置成不占⽤端⼝
#spring.main.web-environment=false
# ⽇志配置
### 调度中⼼部署的地址【选填】:如调度中⼼集部署存在多个地址则⽤逗号分隔。执⾏器将会使⽤该地址进⾏"执⾏器⼼跳注册"和"任务结果回调";为空则关闭⾃动注册;
xxl.job.admin.addresses=127.0.0.1:8080/xxl-job-admin
### 执⾏器通讯TOKEN 【选填】:⾮空时启⽤;
xxl.job.accessToken=
### 执⾏器AppName 【选填】:执⾏器⼼跳注册分组依据;为空则关闭⾃动注册
utor.appname=xxl-job-executor-sample
### 执⾏器注册【选填】:优先使⽤该配置作为注册地址,为空时使⽤内嵌服务 ”IP:PORT“ 作为注册地址。从⽽更灵活的⽀持容器类型执⾏器动态IP和动态映射端⼝问题。
utor.address=
### 执⾏器IP 【选填】:默认为空表⽰⾃动获取IP,多⽹卡时可⼿动设置指定IP,该IP不会绑定Host仅作为通讯实⽤;地址信息⽤于 "执⾏器注册" 和 "调度中⼼请求并触发任务";
utor.ip=
执⾏器端⼝号【选填】:⼩于等于0则⾃动获取;默认端⼝为9999,单机部署多个执⾏器时,注意要配置不同执⾏器端⼝;
utor.port=9999
### 执⾏器运⾏⽇志⽂件存储磁盘路径【选填】:需要对该路径拥有读写权限;为空则使⽤默认路径;
utor.logpath=/data/applogs/xxl-job/jobhandler
### 执⾏器⽇志⽂件保存天数【选填】:过期⽇志⾃动清理, 限制值⼤于等于3时⽣效; 否则, 如-1, 关闭⾃动清理功能;
utor.logretentiondays=30
实例化执⾏器Bean
配置⽂件位置:
src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
内容如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论