diff --git a/README.md b/README.md index 357d0e44..b3bf6572 100644 --- a/README.md +++ b/README.md @@ -161,53 +161,47 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 执行器端口:由于“调度中心”和“执行器”部署在不同项目,“调度中心”会请求该端口触发任务执行。如上图所示,默认的“执行器”端口是9999,如果与系统现有端口冲突可自行修改,如若不冲突,可忽略。 - - -**部署项目**:如果已经正确进行上述配置,可将项目编译打war包并部署到tomcat中。 - +**部署项目**: 至此“执行器”项目已经部署结束。 -#### 2.5 开发第一个任务“Hello World” +#### 2.5 开发第一个任务“Hello World” 本示例为新建一个“GLUE模式任务”(“GLUE模式任务”的执行代码支持托管到调度中心在线维护,相比“Bean模式任务”需要在执行器项目开发部署上线,更加简便轻量)。更多有关任务的详细配置,请查看“章节三:任务详解”。 **前提:请确认“调度中心”和“执行器”项目已经成功部署并启动;** -- **步骤一(新建任务)**:登陆调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。 +- **步骤一(新建任务)**: +登陆调度中心,点击下图所示“新建任务”按钮,新建示例任务。然后,参考下面截图中任务的参数配置,点击保存。 -![输入图片说明](https://static.oschina.net/uploads/img/201607/24191531_2qRI.png "在这里输入图片标题") +![输入图片说明](https://static.oschina.net/uploads/img/201610/03195725_xrba.png "在这里输入图片标题") -![输入图片说明](https://static.oschina.net/uploads/img/201607/24192014_9YEz.png "在这里输入图片标题") +![输入图片说明](https://static.oschina.net/uploads/img/201610/03200237_Y29m.png "在这里输入图片标题") -- **步骤二(GLUE任务开发)**:请点击下图中所示“GLUE入口按钮”,进入“GLUE编辑器开发界面”,见下图。GLUE任务默认已经初始化了示例任务代码,即打印Hello World。 +- **步骤二(GLUE任务开发)**: +请点击下图中所示“GLUE入口按钮”,进入“GLUE编辑器开发界面”,见下图。GLUE任务默认已经初始化了示例任务代码,即打印Hello World。 (GLUE实际上是一段继承自IJobHandler的Java类代码,它在执行器项目中运行,可使用@Resource/@Autowire注入执行器里中的其他服务,详细介绍请查看第三章节) - -![输入图片说明](https://static.oschina.net/uploads/img/201607/23225310_RYby.png "在这里输入图片标题") - +![输入图片说明](https://static.oschina.net/uploads/img/201610/03200312_EhFJ.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201607/23225327_Y1cn.png "在这里输入图片标题") -- **步骤三(触发执行)**:点击下图所示“执行”按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度出发)。 - +- **步骤三(触发执行)**: +点击下图所示“执行”按钮,可手动触发一次任务执行(通常情况下,通过配置Cron表达式进行任务调度出发)。 ![输入图片说明](https://static.oschina.net/uploads/img/201607/23225653_iY9K.png "在这里输入图片标题") -- **步骤四(查看日志)**: +- **步骤四(查看日志)**: 点击图2.5F所示“日志”按钮,可前往任务日志界面查看任务日志。 在如图2.5G的任务日志界面中,可查看任务调度状态,执行器接收到调度请求后的执行状态。 同时,点击如图2.5G中的“执行日志”按钮,可以查看本此调度在执行器端的完整执行日志,完整执行日志如图2.5H。 - ![输入图片说明](https://static.oschina.net/uploads/img/201607/23225953_7ey7.png "在这里输入图片标题") (图2.5F:“调度中心”管理管理界面,任务日志入口) - ![输入图片说明](https://static.oschina.net/uploads/img/201607/23230953_BFVV.png "在这里输入图片标题") (图2.5G:“调度中心”管理管理界面,任务日志入口) - ![输入图片说明](https://static.oschina.net/uploads/img/201607/23230416_2cLu.png "在这里输入图片标题") (图2.5H:“调度中心”管理管理界面,任务日志入口) @@ -215,7 +209,8 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 ## 三、任务详解 **配置属性详细说明:** - - 任务组:任务的分组,便于任务管理; + + - 执行器:任务的绑定的执行器,任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能; 另一方面也可以方便的进行任务分组。每个任务必须绑定一个执行器, 可在 "执行器管理" 进行设置; - 描述:任务的描述信息,便于任务管理; - 执行器地址:执行器接受任务调度的地址,格式为“IP:Port”,支持配置多个地址进行Failover,当存在多个地址时用逗号分隔,格式为“IP1:Port,IP2:Port...” - Cron:触发任务执行的Cron表达式; @@ -227,6 +222,7 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是 - 负责人:任务的负责人; - 子任务Key:每个任务都拥有一个唯一的任务Key(任务Key可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务Key所对应的任务的一次主动调度。 + #### 3.1 BEAN模式任务 Bean模式任务:任务逻辑以JobHandler的形式存在于“执行器”所在项目中,开发流程如下: @@ -242,7 +238,7 @@ Bean模式任务:任务逻辑以JobHandler的形式存在于“执行器”所 参考上文“配置属性详细说明”对新建的任务进行参数配置,需要注意的是“JobHandler + GLUE复选框”任务属性,需要按照“GLUE模式”任务进行配置; -![输入图片说明](https://static.oschina.net/uploads/img/201607/24191939_pWgf.png "在这里输入图片标题") +![输入图片说明](https://static.oschina.net/uploads/img/201610/03201536_AITu.png "在这里输入图片标题") #### 3.2 GLUE模式任务 GLUE模式任务:任务逻辑以GLUE代码的形式存储在DB中,支持通过Web IDE在线更新,实时编译和生效,因此不需要指定JobHandler。开发流程如下: @@ -260,19 +256,35 @@ GLUE模式任务:任务逻辑以GLUE代码的形式存储在DB中,支持通 版本回溯功能(支持30个版本的版本回溯):可参考下图,选择下拉框“版本回溯”,会列出该GLUE的更新历史,选择相应版本即可显示该版本代码,保存后GLUE代码即回退到对应的历史版本; ## 四、任务管理 +#### 4.0 配置执行器 +点击进入"执行器管理"界面, 如下图: +![输入图片说明](https://static.oschina.net/uploads/img/201610/03202021_hCSq.png "在这里输入图片标题") + + 1、"调度中心OnLine:"右侧显示在线的"调度中心"列表, 任务执行结束后, 将会以failover的模式进行回调调度中心通知执行结果, 避免回调的单点风险; + 2、"执行器列表" 中显示在线的执行器列表, 可通过"OnLine 机器"查看对应执行器的集群机器。 + +点击按钮 "+新增执行器" 弹框如下图, 可新增执行器配置: +![输入图片说明](https://static.oschina.net/uploads/img/201610/03202706_y3sj.png "在这里输入图片标题") + +**执行器属性说明** + + AppName: 是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用; + 名称: 执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性; + 排序: 执行器的排序, 系统中需要执行器的地方,如任务新增, 将会按照该排序读取可用的执行器列表; + #### 4.1 新建任务 进入任务管理界面,点击“新增任务”按钮,在弹出的“新增任务”界面配置任务属性后保存即可,可参考下图: -![输入图片说明](https://static.oschina.net/uploads/img/201607/24123920_b9UQ.png "在这里输入图片标题") +![输入图片说明](https://static.oschina.net/uploads/img/201610/03204131_epwD.png "在这里输入图片标题") -![输入图片说明](https://static.oschina.net/uploads/img/201607/24192243_9NvE.png "在这里输入图片标题") +![输入图片说明](https://static.oschina.net/uploads/img/201610/03204139_P5Wx.png "在这里输入图片标题") #### 4.2 编辑任务 进入任务管理界面,选中指定任务。点击该任务右侧“编辑”按钮,在弹出的“编辑任务”界面更新任务属性后保存即可,可参考下图: ![输入图片说明](https://static.oschina.net/uploads/img/201607/24124734_UYp2.png "在这里输入图片标题") -![输入图片说明](https://static.oschina.net/uploads/img/201607/24192805_Yhmj.png "在这里输入图片标题") +![输入图片说明](https://static.oschina.net/uploads/img/201610/03204241_BfNw.png "在这里输入图片标题") #### 4.3 编辑GLUE代码 @@ -556,6 +568,13 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L ##### 5.6.2 通讯数据加密 调度中心与执行器之间使用RequestModel和ResponseModel两个对象封装调度请求参数和响应数据, 在进行通讯之前底层会将上述两个对象对象序列化字节数组,最终转化成16进制数据进行数据交互,从而达到数据加密的功能; +#### 5.7 任务注册, 任务自动发现 +自v1.5版本之后, 任务取消了"任务执行机器"属性, 改为通过任务注册和自动发现的方式, 动态获取远程执行器地址并执行。 + + AppName: 每个执行器机器集群的唯一标示, 任务注册以 "执行器" 为最小粒度进行注册; 每个任务通过其绑定的执行器可感知对应的执行器机器列表; + Beat: 任务注册心跳周期, 默认15s; 执行器以一倍Beat进行执行器注册, 调度中心以一倍Beat进行动态任务发现; 注册信息的失效时间被两倍Beat; + 注册表: 见"XXL_JOB_QRTZ_TRIGGER_REGISTRY"表, "执行器" 的进行任务注册时,将会周期性维护一条注册记录; "调度中心" 从而可以动态感知在线的 "执行器" 机器; + ## 六、版本更新日志 #### 6.1 版本 V1.1.x,新特性 **【于V1.1.x版本,XXL-JOB正式应用于我司,内部定制别名为 “Ferrari”,新接入应用推荐使用最新版本】**