python任务调度平台界⾯_分布式任务调度平台XXL-JOB 以前带我的⼈说过,最好的学习就是看官⽅⽂档,个⼈也有4个T的学习视频,但是会发现讲的都是⼊门,有的也⽐较浅。
官⽅⽂档⽐较官⽅,也⽐较权威,打开xxl-job的官⽹,写的贼详细,有些⼈喜欢收博客,不喜欢看官⽹,因此就直接复制过来了,
过段时间会参考⽂档,⾃⼰来⼀遍。
⼀、简介
1.1 概述
XXL-JOB是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接⼊多家公司线上产品线,开箱即⽤。
1.2 社区交流
1.3 特性
1、简单:⽀持通过Web页⾯对任务进⾏CRUD操作,操作简单,⼀分钟上⼿;
2、动态:⽀持动态修改任务状态、启动/停⽌任务,以及终⽌运⾏中任务,即时⽣效;
echarts事例怎么用3、调度中⼼HA(中⼼式):调度采⽤中⼼式设计,“调度中⼼”⾃研调度组件并⽀持集部署,可保证调度中⼼HA;
4、执⾏器HA(分布式):任务分布式执⾏,任务”执⾏器”⽀持集部署,可保证任务执⾏HA;
5、注册中⼼: 执⾏器会周期性⾃动注册任务, 调度中⼼将会⾃动发现注册的任务并触发执⾏。同时,也⽀持⼿动录⼊执⾏器地址;
6、弹性扩容缩容:⼀旦有新执⾏器机器上线或者下线,下次调度时将会重新分配任务;
7、路由策略:执⾏器集部署时提供丰富的路由策略,包括:第⼀个、最后⼀个、轮询、随机、⼀致性HASH、最不经常使⽤、最近最久未使⽤、故障转移、忙碌转移等;
8、故障转移:任务路由策略选择”故障转移”情况下,如果执⾏器集中某⼀台机器故障,将会⾃动Failover切换到⼀台正常的执⾏器发送调度请求。
centos安装docker教程9、阻塞处理策略:调度过于密集执⾏器来不及处理时的处理策略,策略包括:单机串⾏(默认)、丢弃后续调度、覆盖之前调度;
10、任务超时控制:⽀持⾃定义任务超时时间,任务运⾏超时将会主动中断任务;
11、任务失败重试:⽀持⾃定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进⾏重试;其中分⽚任务⽀持分⽚粒度的失败重试;
12、任务失败告警;默认提供邮件⽅式失败告警,同时预留扩展接⼝,可⽅便的扩展短信、钉钉等告警⽅式;
13、分⽚⼴播任务:执⾏器集部署时,任务路由策略选择”分⽚⼴播”情况下,⼀次任务调度将会⼴播触发集中所有执⾏器执⾏⼀次任务,可根据分⽚参数开发分⽚任务;
python入门教程app14、动态分⽚:分⽚⼴播任务以执⾏器为维度进⾏分⽚,⽀持动态扩容执⾏器集从⽽动态增加分⽚数量,协同进⾏业务处理;在进⾏⼤数据量业务操作时可显著提升任务处理能⼒和速度。
15、事件触发:除了”Cron⽅式”和”任务依赖⽅式”触发任务执⾏之外,⽀持基于事件的触发任务⽅式。调度中⼼提供触发任务单次执⾏的API服务,可根据业务事件灵活触发。
16、任务进度监控:⽀持实时监控任务进度;
17、Rolling实时⽇志:⽀持在线查看调度结果,并且⽀持以Rolling⽅式实时查看执⾏器输出的完整的执⾏⽇志;
18、GLUE:提供Web IDE,⽀持在线开发任务逻辑代码,动态发布,实时编译⽣效,省略部署上线的过程。⽀持30个版本的历史版本回溯。
19、脚本任务:⽀持以GLUE模式开发和运⾏脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
20、命令⾏任务:原⽣提供通⽤命令⾏任务Handler(Bean任务,”CommandJobHandler”);业务⽅只需要提供命令⾏即可;
21、任务依赖:⽀持配置⼦任务依赖,当⽗任务执⾏结束且执⾏成功后将会主动触发⼀次⼦任务的执⾏, 多个⼦任务⽤逗号分隔;
22、⼀致性:“调度中⼼”通过DB锁保证集分布式调度的⼀致性, ⼀次任务调度只会触发⼀次执⾏;
23、⾃定义任务参数:⽀持在线配置调度任务⼊参,即时⽣效;
24、调度线程池:调度系统多线程触发调度运⾏,确保调度精确执⾏,不被堵塞;
25、数据加密:调度中⼼和执⾏器之间的通讯进⾏数据加密,提升调度信息安全性;
26、邮件报警:任务失败时⽀持邮件报警,⽀持配置多邮件地址发报警邮件;
27、推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, ⽅便⽤户接⼊和使⽤;
28、运⾏报表:⽀持实时查看运⾏数据,如任务数量、调度次数、执⾏器数量等;以及调度报表,如调度⽇期分布图,调度成功分布图等;
29、全异步:任务调度流程全异步化设计实现,如异步调度、异步运⾏、异步回调等,有效对密集调度进⾏流量削峰,理论上⽀持任意时长任务的运⾏;
30、跨平台:原⽣提供通⽤HTTP任务Handler(Bean任务,”HttpJobHandler”);业务⽅只需要提供HTTP链接即可,不限制语⾔、平台;
31、国际化:调度中⼼⽀持国际化设置,提供中⽂、英⽂两种可选语⾔,默认为中⽂;
32、容器化:提供官⽅docker镜像,并实时更新推送dockerhub,进⼀步实现产品开箱即⽤;
33、线程池隔离:调度线程池进⾏隔离拆分,慢任务⾃动降级进⼊”Slow”线程池,避免耗尽调度线程,提⾼系统稳定性;
34、⽤户管理:⽀持在线管理系统⽤户,存在管理员、普通⽤户两种⾓⾊;
35、权限控制:执⾏器维度进⾏权限控制,管理员拥有全量权限,普通⽤户需要分配执⾏器权限后才允许相关操作;
1.4 下载
⽂档地址
源码仓库地址
中央仓库地址
com.xuxueli
xxl-job-core
${最新稳定版本}
1.6 环境
Maven3+
Jdk1.7+
Mysql5.7+
⼆、快速⼊门
2.1 初始化“调度数据库”
请下载项⽬源码并解压,获取 “调度数据库初始化SQL脚本” 并执⾏即可。
“调度数据库初始化SQL脚本” 位置为:
/xxl-job/doc/db/tables_xxl_job.sql
调度中⼼⽀持集部署,集情况下各节点务必连接同⼀个mysql实例;
如果mysql做主从,调度中⼼集节点务必强制⾛主库;
2.2 编译源码
解压源码,按照maven格式将源码导⼊IDE, 使⽤maven进⾏编译即可,源码结构如下:
xxl-job-admin:调度中⼼
帝国cms立即购买模板源码xxl-job-core:公共依赖
xxl-job-executor-samples:执⾏器Sample⽰例(选择合适的版本执⾏器,可直接使⽤,也可以参考其并将现有项⽬改造成执⾏器):xxl-job-executor-sample-springboot:Springboot版本,通过Springboot管理执⾏器,推荐这种⽅式;
:xxl-job-executor-sample-spring:Spring版本,通过Spring容器管理执⾏器,⽐较通⽤;
:xxl-job-executor-sample-frameless:⽆框架版本;
:xxl-job-executor-sample-jfinal:JFinal版本,通过JFinal管理执⾏器;
:xxl-job-executor-sample-nutz:Nutz版本,通过Nutz管理执⾏器;
:xxl-job-executor-sample-jboot:jboot版本,通过jboot管理执⾏器;
2.3 配置部署“调度中⼼”
调度中⼼项⽬:xxl-job-admin
作⽤:统⼀管理任务调度平台上调度任务,负责触发调度执⾏,并且提供任务管理平台。
步骤⼀:调度中⼼配置:
调度中⼼配置⽂件地址:
/xxl-job/xxl-job-admin/src/main/resources/application.properties
调度中⼼配置内容说明:
### 调度中⼼JDBC链接:链接地址请保持和 2.1章节 所创建的调度数据库的地址⼀致
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root_pwd
spring.datasource.sql.jdbc.Driver
### 报警邮箱
spring.mail.host=smtp.qq
spring.mail.port=25
spring.mail.username=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=
### 调度中⼼国际化配置 [选填]: 默认为空,表⽰中⽂; "en" 表⽰英⽂;
xxl.job.i18n=
## 调度线程池最⼤线程配置【必填】
iggerpool.fast.max=200
iggerpool.slow.max=100
### 调度中⼼⽇志表数据保存天数 [必填]:过期⽇志⾃动清理;限制⼤于等于7时⽣效,否则, 如-1,关闭⾃动清理功能;
xxl.job.logretentiondays=30
步骤⼆:部署项⽬:
如果已经正确进⾏上述配置,可将项⽬编译打包部署。
默认登录账号 “admin/123456”, 登录后运⾏界⾯如下图所⽰。
⾄此“调度中⼼”项⽬已经部署成功。
步骤三:调度中⼼集(可选):
调度中⼼⽀持集部署,提升调度系统容灾和可⽤性。
调度中⼼集部署时,⼏点要求和建议:
DB配置保持⼀致;
集机器时钟保持⼀致(单机集忽视);
建议:推荐通过nginx为调度中⼼集做负载均衡,分配域名。调度中⼼访问、执⾏器回调配置、调⽤API服务等操作均通过该域名进⾏。
其他:Docker 镜像⽅式搭建调度中⼼:
下载镜像
// Docker地址:hub.docker/r/xuxueli/xxl-job-admin/ (建议指定版本号)
docker pull xuxueli/xxl-job-admin
创建容器并运⾏
docker run -p 8080:8080-v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin
/**
invalidated* 如需⾃定义 mysql 等配置,可通过 "PARAMS" 指定,参数格式 RAMS="--key=value --key2=value2" ;
* 配置项参考⽂件:/xxl-job/xxl-job-admin/src/main/resources/application.properties
*/
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?
Unicode=true&characterEncoding=UTF-8"-p 8080:8080-v /tmp:/data/applogs --name xxl-job-admin -d xuxueli/xxl-job-admin
2.4 配置部署“执⾏器项⽬”
“执⾏器”项⽬:xxl-job-executor-sample-springboot (提供多种版本执⾏器供选择,现以springboot 版本为例,可直接使⽤,也可以参考其并将现有项⽬改造成执⾏器)
作⽤:负责接收“调度中⼼”的调度并执⾏;可直接部署执⾏器,也可以将执⾏器集成到现有业务项⽬中。
步骤⼀:maven依赖
确认pom⽂件中引⼊了 “xxl-job-core” 的maven依赖;
步骤⼆:执⾏器配置
执⾏器配置,配置⽂件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
执⾏器配置,配置内容说明:
### 调度中⼼部署跟地址 [选填]:如调度中⼼集部署存在多个地址则⽤逗号分隔。执⾏器将会使⽤该地址进⾏"执⾏器⼼跳注册"和"任务结果回调";为空则关闭⾃动注册;
xxl.job.admin.addresses=127.0.0.1:8080/xxl-job-admin
### 执⾏器AppName [选填]:执⾏器⼼跳注册分组依据;为空则关闭⾃动注册
utor.appname=xxl-job-executor-sample
### 执⾏器IP [选填]:默认为空表⽰⾃动获取IP,多⽹卡时可⼿动设置指定IP,该IP不会绑定Host仅作
为通讯实⽤;地址信息⽤于 "执⾏器注册" 和 "调度中⼼请求并触发任务";
utor.ip=
### 执⾏器端⼝号 [选填]:⼩于等于0则⾃动获取;默认端⼝为9999,单机部署多个执⾏器时,注意要配置不同执⾏器端⼝;
utor.port=9999
insertinto values### 执⾏器通讯TOKEN [选填]:⾮空时启⽤;
xxl.job.accessToken=
### 执⾏器运⾏⽇志⽂件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使⽤默认路径;
utor.logpath=/data/applogs/xxl-job/jobhandler
### 执⾏器⽇志⽂件保存天数 [选填] : 过期⽇志⾃动清理, 限制值⼤于等于3时⽣效; 否则, 如-1, 关闭⾃动清理功能;
utor.logretentiondays=30
步骤三:执⾏器组件配置
执⾏器组件,配置⽂件地址:
/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-
springboot/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
执⾏器组件,配置内容说明:
@Bean
publicXxlJobSpringExecutorxxlJobExecutor(){
logger.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutorxxlJobSpringExecutor =newXxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论