|
|
|
|
@ -1009,7 +1009,7 @@ public XxlJobSpringExecutor xxlJobExecutor() {
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 步骤四:部署执行器项目:
|
|
|
|
|
如果已经正确进行上述配置,可将执行器项目编译打部署,系统提供多种执行器Sample示例项目,选择其中一个即可,各自的部署方式如下。
|
|
|
|
|
如果已经正确进行上述配置,可将执行器项目编译打包部署,系统提供多种执行器Sample示例项目,选择其中一个即可,各自的部署方式如下。
|
|
|
|
|
|
|
|
|
|
xxl-job-executor-sample-springboot:项目编译打包成springboot类型的可执行JAR包,命令启动即可;
|
|
|
|
|
xxl-job-executor-sample-frameless:项目编译打包成JAR包,命令启动即可;
|
|
|
|
|
@ -1041,7 +1041,7 @@ public XxlJobSpringExecutor xxlJobExecutor() {
|
|
|
|
|
|
|
|
|
|
#### 步骤二:“GLUE模式(Java)” 任务开发:
|
|
|
|
|
请点击任务右侧 “GLUE IDE” 按钮,进入 “GLUE编辑器开发界面” ,见下图。“GLUE模式(Java)” 运行模式的任务默认已经初始化了示例任务代码,即打印Hello World。
|
|
|
|
|
( “GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务,详细介绍请查看第三章节)
|
|
|
|
|
( “GLUE模式(Java)” 运行模式的任务实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器中的其他服务,详细介绍请查看第三章节)
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
@ -1084,7 +1084,7 @@ public XxlJobSpringExecutor xxlJobExecutor() {
|
|
|
|
|
任务配置:
|
|
|
|
|
- 运行模式:
|
|
|
|
|
BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 "JobHandler" 属性匹配执行器中任务;
|
|
|
|
|
GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码并 "groovy" 源码方式维护,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务;
|
|
|
|
|
GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码并以 "groovy" 源码方式维护,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器中的其他服务;
|
|
|
|
|
GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段 "shell" 脚本;
|
|
|
|
|
GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段 "python" 脚本;
|
|
|
|
|
GLUE模式(PHP):任务以源码方式维护在调度中心;该模式的任务实际上是一段 "php" 脚本;
|
|
|
|
|
@ -1251,7 +1251,7 @@ dify.api-key={自行获取并修改}
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑器中)。
|
|
|
|
|
|
|
|
|
|
版本回溯功能(支持30个版本的版本回溯):在GLUE任务的Web IDE界面,选择右上角下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本;
|
|
|
|
|
|
|
|
|
|
@ -1263,7 +1263,7 @@ dify.api-key={自行获取并修改}
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Shell)";
|
|
|
|
|
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑器中)。
|
|
|
|
|
|
|
|
|
|
该模式的任务实际上是一段 "shell" 脚本;
|
|
|
|
|
|
|
|
|
|
@ -1275,7 +1275,7 @@ dify.api-key={自行获取并修改}
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(Python)";
|
|
|
|
|
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑器中)。
|
|
|
|
|
|
|
|
|
|
该模式的任务实际上是一段 "python" 脚本;
|
|
|
|
|
|
|
|
|
|
@ -1287,7 +1287,7 @@ dify.api-key={自行获取并修改}
|
|
|
|
|
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 "GLUE模式(NodeJS)";
|
|
|
|
|
|
|
|
|
|
#### 步骤二:开发任务代码:
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑中)。
|
|
|
|
|
选中指定任务,点击该任务右侧“GLUE”按钮,将会前往GLUE任务的Web IDE界面,在该界面支持对任务代码进行开发(也可以在IDE中开发完成后,复制粘贴到编辑器中)。
|
|
|
|
|
|
|
|
|
|
该模式的任务实际上是一段 "nodeJS" 脚本;
|
|
|
|
|
|
|
|
|
|
@ -1346,7 +1346,7 @@ dify.api-key={自行获取并修改}
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
### 4.7 查看调度日志
|
|
|
|
|
点击“日志”按钮,可以查看任务历史调度日志。在历史调入日志界面可查看每次任务调度的调度结果、执行结果等,点击“执行日志”按钮可查看执行器完整日志。
|
|
|
|
|
点击“日志”按钮,可以查看任务历史调度日志。在历史调度日志界面可查看每次任务调度的调度结果、执行结果等,点击“执行日志”按钮可查看执行器完整日志。
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
@ -1444,7 +1444,7 @@ XXL-JOB调度模块基于自研调度组件并支持集群部署,调度数据
|
|
|
|
|
#### 5.3.1 设计思想
|
|
|
|
|
将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。
|
|
|
|
|
|
|
|
|
|
将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。
|
|
|
|
|
将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中的业务逻辑。
|
|
|
|
|
|
|
|
|
|
因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性;
|
|
|
|
|
|
|
|
|
|
@ -1477,7 +1477,7 @@ XXL-JOB最终选择自研调度组件(早期调度组件基于Quartz);一
|
|
|
|
|
XXL-JOB中“调度模块”和“任务模块”完全解耦,调度模块进行任务调度时,将会解析不同的任务参数发起远程调用,调用各自的远程执行器服务。这种调用模型类似RPC调用,调度中心提供调用代理的功能,而执行器提供远程服务的功能。
|
|
|
|
|
|
|
|
|
|
#### 5.4.3 调度中心HA(集群)
|
|
|
|
|
基于数据库的集群方案,数据库选用Mysql;集群分布式并发环境中进行定时任务调度时,会在各个节点会上报任务,存到数据库中,执行时会从数据库中取出触发器来执行,如果触发器的名称和执行时间相同,则只有一个节点去执行此任务。
|
|
|
|
|
基于数据库的集群方案,数据库选用Mysql;集群分布式并发环境中进行定时任务调度时,会在各个节点上报任务,存到数据库中,执行时会从数据库中取出触发器来执行,如果触发器的名称和执行时间相同,则只有一个节点去执行此任务。
|
|
|
|
|
|
|
|
|
|
#### 5.4.4 调度线程池
|
|
|
|
|
调度采用线程池方式实现,避免单线程因阻塞而引起任务调度延迟。
|
|
|
|
|
@ -1521,7 +1521,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
|
|
|
|
|
调度中心每次进行任务调度,都会记录一条任务日志,任务日志主要包括以下三部分内容:
|
|
|
|
|
|
|
|
|
|
- 任务信息:包括“执行器地址”、“JobHandler”和“执行参数”等属性,点击任务ID按钮可查看,根据这些参数,可以精确的定位任务执行的具体机器和任务代码;
|
|
|
|
|
- 调度信息:包括“调度时间”、“调度结果”和“调度日志”等,根据这些参数,可以了解“调度中心”发起调度请求时具体情况。
|
|
|
|
|
- 调度信息:包括“调度时间”、“调度结果”和“调度日志”等,根据这些参数,可以了解“调度中心”发起调度请求时的具体情况。
|
|
|
|
|
- 执行信息:包括“执行时间”、“执行结果”和“执行日志”等,根据这些参数,可以了解在“执行器”端任务执行的具体情况;
|
|
|
|
|
|
|
|
|
|
调度日志,针对单次调度,属性说明如下:
|
|
|
|
|
@ -1556,7 +1556,7 @@ xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback
|
|
|
|
|
|
|
|
|
|
得益于上述两点优化,理论上默认配置下的调度中心,单机能够支撑 5000 任务并发运行稳定运行;
|
|
|
|
|
|
|
|
|
|
实际场景中,由于调度中心与执行器网络ping延迟不同、DB读写耗时不同、任务调度密集程度不同,会导致任务量上限会上下波动。
|
|
|
|
|
实际场景中,由于调度中心与执行器网络ping延迟不同、DB读写耗时不同、任务调度密集程度不同,会导致任务量上限上下波动。
|
|
|
|
|
|
|
|
|
|
如若需要支撑更多的任务量,可以通过 "调大调度线程数" 、"降低调度中心与执行器ping延迟" 和 "提升机器配置" 几种方式优化。
|
|
|
|
|
|
|
|
|
|
|