Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
aa7e5e56
提交
aa7e5e56
authored
4月 27, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新RM
上级
2d750875
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
48 行增加
和
39 行删除
+48
-39
README.md
README.md
+48
-39
没有找到文件。
README.md
浏览文件 @
aa7e5e56
# 《分布式任务调度平台XXL-JOB》
# 《分布式任务调度平台XXL-JOB》
## 一、简介
## 一、简介
###
#
1.1 概述
### 1.1 概述
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
###
#
1.2 特性
### 1.2 特性
-
1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
-
1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
-
2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
-
2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
-
3、调度HA:“调度中心”基于集群Quartz实现,可保证调度中心HA;
-
3、调度HA:“调度中心”基于集群Quartz实现,可保证调度中心HA;
...
@@ -26,7 +26,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -26,7 +26,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
-
19、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
-
19、运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
-
20、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;
-
20、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;
###
#
1.3 发展
### 1.3 发展
于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
于2015年中,我在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计……
于2015-11月,XXL-JOB终于REALEASE了第一个大版本V1.0, 随后我将之发布到OSCHINA,XXL-JOB在OSCHINA上获得了@红薯的热门推荐,同期分别达到了OSCHINA的“热门动弹”排行第一和git.oschina的开源软件月热度排行第一,在此特别感谢红薯,感谢大家的关注和支持。
于2015-11月,XXL-JOB终于REALEASE了第一个大版本V1.0, 随后我将之发布到OSCHINA,XXL-JOB在OSCHINA上获得了@红薯的热门推荐,同期分别达到了OSCHINA的“热门动弹”排行第一和git.oschina的开源软件月热度排行第一,在此特别感谢红薯,感谢大家的关注和支持。
...
@@ -35,7 +35,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -35,7 +35,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
于2016-01月我司展开XXL-JOB的内部接入和定制工作,在此感谢袁某和尹某两位同事的贡献,同时也感谢内部其他给与关注与支持的同事。
于2016-01月我司展开XXL-JOB的内部接入和定制工作,在此感谢袁某和尹某两位同事的贡献,同时也感谢内部其他给与关注与支持的同事。
**我司大众点评目前已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本)**
。据最新统计, 自2016-01-21接入至2017-02-07期间,该系统已调度约30万次,表现优异。新接入应用推荐使用最新版本,因为经过数个大版本的更新,系统的任务模型、UI交互模型以及底层调度通讯模型都有了较大的优化和提升,核心功能更加稳定高效。
#### 我司大众点评目前已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本)。
据最新统计, 自2016-01-21接入至2017-04-27期间,该系统已调度约45万余次,表现优异。新接入应用推荐使用最新版本,因为经过数个大版本的更新,系统的任务模型、UI交互模型以及底层调度通讯模型都有了较大的优化和提升,核心功能更加稳定高效。
至今,XXL-JOB已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和大数据作业等,截止2016-07-19为止,XXL-JOB已接入的公司包括不限于:
至今,XXL-JOB已接入多家公司的线上产品线,接入场景如电商业务,O2O业务和大数据作业等,截止2016-07-19为止,XXL-JOB已接入的公司包括不限于:
...
@@ -65,13 +66,13 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -65,13 +66,13 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
欢迎大家的关注和使用,XXL-JOB也将拥抱变化,持续发展。
欢迎大家的关注和使用,XXL-JOB也将拥抱变化,持续发展。
###
#
1.4 下载
### 1.4 下载
####
#
源码地址 (将会在两个git仓库同步发布最新代码)
#### 源码地址 (将会在两个git仓库同步发布最新代码)
-
[
github地址
](
https://github.com/xuxueli/xxl-job
)
-
[
github地址
](
https://github.com/xuxueli/xxl-job
)
-
[
git.osc地址
](
http://git.oschina.net/xuxueli0323/xxl-job
)
-
[
git.osc地址
](
http://git.oschina.net/xuxueli0323/xxl-job
)
####
#
中央仓库地址 (最新Release版本)
#### 中央仓库地址 (最新Release版本)
```
```
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ -->
...
@@ -82,22 +83,22 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -82,22 +83,22 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
</dependency>
</dependency>
```
```
####
#
博客地址 (将会在两个博客同步更新文档)
#### 博客地址 (将会在两个博客同步更新文档)
-
[
oschina地址
](
http://my.oschina.net/xuxueli/blog/690978
)
-
[
oschina地址
](
http://my.oschina.net/xuxueli/blog/690978
)
-
[
cnblogs地址
](
http://www.cnblogs.com/xuxueli/p/5021979.html
)
-
[
cnblogs地址
](
http://www.cnblogs.com/xuxueli/p/5021979.html
)
####
#
技术交流群 (仅作技术交流)
#### 技术交流群 (仅作技术交流)
-
群3:242151780
[

](http://shang.qq.com/wpa/qunwpa?idkey=bab676dc27c7e855da54da433fc39cef8474db6c7095711e4bd21097f89bf320 )
-
群3:242151780
[

](http://shang.qq.com/wpa/qunwpa?idkey=bab676dc27c7e855da54da433fc39cef8474db6c7095711e4bd21097f89bf320 )
-
群2:438249535
[

](http://shang.qq.com/wpa/qunwpa?idkey=e288e6a50a82a1eeed89117f45b4839b4ba69db9a87da63ea915fae5294cc50d ) (群即将满,请加群3)
-
群2:438249535
[

](http://shang.qq.com/wpa/qunwpa?idkey=e288e6a50a82a1eeed89117f45b4839b4ba69db9a87da63ea915fae5294cc50d ) (群即将满,请加群3)
-
群1:367260654
[

](http://shang.qq.com/wpa/qunwpa?idkey=4686e3fe01118445c75673a66b4cc6b2c7ce0641528205b6f403c179062b0a52 ) (群即将满,请加群3)
-
群1:367260654
[

](http://shang.qq.com/wpa/qunwpa?idkey=4686e3fe01118445c75673a66b4cc6b2c7ce0641528205b6f403c179062b0a52 ) (群即将满,请加群3)
####
#
Download: 历史Release版本下载位置如下图所示,请自行前往进行选择和下载。
#### Download: 历史Release版本下载位置如下图所示,请自行前往进行选择和下载。


###
#
1.5 环境
### 1.5 环境
-
Servlet/JSP Spec:3.0/2.2
-
Servlet/JSP Spec:3.0/2.2
-
JDK:1.7+
-
JDK:1.7+
-
Tomcat:7+/Jetty8+
-
Tomcat:7+/Jetty8+
...
@@ -225,7 +226,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -225,7 +226,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。
请点击任务右侧 “日志” 按钮,可前往任务日志界面查看任务日志。
在任务日志界面中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。
在任务日志界面中,可查看该任务的历史调度记录以及每一次调度的任务调度信息、执行参数和执行信息。运行中的任务点击右侧的“执行日志”按钮,可进入日志控制台查看实时执行日志。


在日志控制台,可以Rolling方式实时查看任务在执行器一侧运行输出的日志信息,实时监控任务进度;
在日志控制台,可以Rolling方式实时查看任务在执行器一侧运行输出的日志信息,实时监控任务进度;
...
@@ -249,9 +250,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -249,9 +250,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
- Cron:触发任务执行的Cron表达式;
- Cron:触发任务执行的Cron表达式;
- 运行模式:
- 运行模式:
BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 "JobHandler" 属性匹配执行器中任务;
BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 "JobHandler" 属性匹配执行器中任务;
GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;
GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码
并 "groovy" 源码方式维护
,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;
GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段
shell
脚本;
GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段
"shell"
脚本;
GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段
python
脚本;
GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段
"python"
脚本;
- JobHandler:运行模式为 "BEAN模式" 时生效,对应执行器中新开发的JobHandler类“@JobHander”注解自定义的value值;
- JobHandler:运行模式为 "BEAN模式" 时生效,对应执行器中新开发的JobHandler类“@JobHander”注解自定义的value值;
- 子任务Key:每个任务都拥有一个唯一的任务Key(任务Key可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务Key所对应的任务的一次主动调度。
- 子任务Key:每个任务都拥有一个唯一的任务Key(任务Key可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务Key所对应的任务的一次主动调度。
- 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数抓换成数组传入;
- 执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数抓换成数组传入;
...
@@ -283,17 +284,23 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -283,17 +284,23 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是


#### 步骤二:开发任务代码:
#### 步骤二:开发任务代码:
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(
当然
也可以在IDE中开发完成后,复制粘贴到编辑中)。
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
版本回溯功能(支持30个版本的版本回溯):在GLUE任务的Web IDE界面,选择右上角下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;
版本回溯功能(支持30个版本的版本回溯):在GLUE任务的Web IDE界面,选择右上角下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;

### 3.3 GLUE模式(Shell)
### 3.3 GLUE模式(Shell)
#### 步骤一:调度中心,新建调度任务
#### 步骤一:调度中心,新建调度任务
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Shell)";
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Shell)";
#### 步骤二:开发任务代码:
#### 步骤二:开发任务代码:
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中)。
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
该模式的任务实际上是一段 "shell" 脚本;

### 3.4 GLUE模式(Python)
### 3.4 GLUE模式(Python)
...
@@ -301,7 +308,12 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -301,7 +308,12 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Python)";
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Python)";
#### 步骤二:开发任务代码:
#### 步骤二:开发任务代码:
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中)。
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
该模式的任务实际上是一段 "python" 脚本;

## 四、任务管理
## 四、任务管理
#### 4.0 配置执行器
#### 4.0 配置执行器
...
@@ -314,7 +326,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -314,7 +326,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
点击按钮 "+新增执行器" 弹框如下图, 可新增执行器配置:
点击按钮 "+新增执行器" 弹框如下图, 可新增执行器配置:


**执行器属性说明**
#### 执行器属性说明
AppName: 是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;
AppName: 是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;
名称: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;
名称: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;
...
@@ -325,30 +337,16 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
...
@@ -325,30 +337,16 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是
机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;
机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;
#### 4.1 新建任务
#### 4.1 新建任务
进入任务管理界面,点击“新增任务”按钮,在弹出的“新增任务”界面配置任务属性后保存即可,可参考下图:
进入任务管理界面,点击“新增任务”按钮,在弹出的“新增任务”界面配置任务属性后保存即可。详情页参考章节 "三、任务详解"。


#### 4.2 编辑任务
#### 4.2 编辑任务
进入任务管理界面,选中指定任务。点击该任务右侧“编辑”按钮,在弹出的“编辑任务”界面更新任务属性后保存即可,可参考下图:
进入任务管理界面,选中指定任务。点击该任务右侧“编辑”按钮,在弹出的“编辑任务”界面更新任务属性后保存即可,可以修改设置的任务属性信息:


#### 4.3 编辑GLUE代码
#### 4.3 编辑GLUE代码
该操作仅针对GLUE任务。
该操作仅针对GLUE任务。
GLUE任务开发:进入任务管理界面,选中指定任务。点击该任务右侧“GLUE”按钮(仅GLUE模式任务支持),将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(当然也可以在IDE中开发完成后,复制粘贴到编辑中)
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发。可参考章节 "3.2 GLUE模式(Java)"。
版本回溯功能(支持30个版本的版本回溯):可参考下图,选择下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;


#### 4.4 暂停/恢复任务
#### 4.4 暂停/恢复任务
可对任务进行“暂停”和“恢复”操作。
可对任务进行“暂停”和“恢复”操作。
...
@@ -366,13 +364,13 @@ GLUE任务开发:进入任务管理界面,选中指定任务。点击该任
...
@@ -366,13 +364,13 @@ GLUE任务开发:进入任务管理界面,选中指定任务。点击该任




调度时间:"调度中心"触发本次调度并向"执行器"发送任务执行信号的时间;
调度时间:"调度中心"触发本次调度并向"执行器"发送任务执行信号的时间;
调度结果:"调度中心"触发本次调度的结果,200表示成功,500或其他表示失败;
调度结果:"调度中心"触发本次调度的结果,200表示成功,500或其他表示失败;
调度备注:"调度中心"触发本次调度的日志信息;
调度备注:"调度中心"触发本次调度的日志信息;
执行器地址:本次任务执行的机器地址
执行器地址:本次任务执行的机器地址
JobHandler:本地任务执行的JobHandler;Bean模式表示任务执行的JobHandler名称
;
运行模式:触发调度时任务的运行模式,运行模式可参考章节 "三、任务详解"
;
任务参数:本地任务执行的入参
任务参数:本地任务执行的入参
执行时间:"执行器"中本次任务执行结束后回调的时间;
执行时间:"执行器"中本次任务执行结束后回调的时间;
执行结果:"执行器"中本次任务执行的结果,200表示成功,500或其他表示失败;
执行结果:"执行器"中本次任务执行的结果,200表示成功,500或其他表示失败;
...
@@ -652,6 +650,16 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L
...
@@ -652,6 +650,16 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L
当返回值符合 "ReturnT.code == ReturnT.SUCCESS_CODE" 时表示任务执行成功,否则表示任务执行失败,而且可以通过 "ReturnT.msg" 回调错误信息给调度中心;
当返回值符合 "ReturnT.code == ReturnT.SUCCESS_CODE" 时表示任务执行成功,否则表示任务执行失败,而且可以通过 "ReturnT.msg" 回调错误信息给调度中心;
从而,在任务逻辑中可以方便的控制任务执行结果;
从而,在任务逻辑中可以方便的控制任务执行结果;
#### 5.10 脚本任务
目前支持的脚本类型如下,脚本任务可参考章节 "三、任务详解":
- shell脚本:任务运行模式选择为 "GLUE模式(Shell)"时支持 "shell" 脚本任务;
- python脚本:任务运行模式选择为 "GLUE模式(Python)"时支持 "python" 脚本任务;
脚本任务的源码托管在调度中心,脚本逻辑在执行器运行。当触发脚本任务时,执行器会加载脚本源码在执行器机器上生成一份脚本文件,然后通过Java代码调用该脚本;
并且实时将脚本输出日志写到任务日志文件中,从而在调度中心可以实时监控脚本运行情况;
脚本返回码为0时表示执行成功,其他标示执行失败。
## 六、版本更新日志
## 六、版本更新日志
#### 6.1 版本 V1.1.x,新特性
#### 6.1 版本 V1.1.x,新特性
...
@@ -805,7 +813,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -805,7 +813,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
#### 6.14 版本 V1.7.0 特性 (Coding)
#### 6.14 版本 V1.7.0 特性 (Coding)
-
1、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;
-
1、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;
-
2、执行器移除GlueLoader依赖改为推送方式,GLUE源码加载不再依赖JDBC;
-
3、登陆拦截Redirect时获取项目名,解决非根据目录发布时跳转404问题;
#### TODO LIST
#### TODO LIST
-
1、任务并行触发处理规则:串行调度队列(默认)、并行、忽略、覆盖;
-
1、任务并行触发处理规则:串行调度队列(默认)、并行、忽略、覆盖;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论