|
|
|
@ -503,14 +503,16 @@ CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).w
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/10172754_5DUl.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
##### 5.4.8 任务HA(Failover)
|
|
|
|
|
执行器如若集群部署,调度中心将会感知到在线的所有执行器,如“127.0.0.1:9998,127.0.0.1:9999”。
|
|
|
|
|
执行器如若集群部署,调度中心将会感知到在线的所有执行器,如“127.0.0.1:9997, 127.0.0.1:9998, 127.0.0.1:9999”。
|
|
|
|
|
|
|
|
|
|
执行器集群部署,当调度中心每次发起调度请求时,会对执行器随机排序,然后按照顺序取对执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定并发送调度请求。
|
|
|
|
|
当任务"路由策略"选择"故障转移(FAILOVER)"时,当调度中心每次发起调度请求时,会对执行器随机排序,然后按照顺序取对执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定并发送调度请求。
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/12230049_EBkr.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
调度成功后,可在日志监控界面查看“调度备注”,如下;
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201607/24150809_TNqT.png "在这里输入图片标题")
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/12230733_jrdI.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
“调度备注”可以查看执行器地址选择日志,任务配置的地址“227.0.0.1:9999,127.0.0.1:9999”,首先对第一个执行器地址“227.0.0.1:9999”进行心跳检测,心跳失败因此跳过;然后对第二个执行器地址“127.0.0.1:9999”进行心跳检测,心跳检测成功,选定为“目标执行器”;然后对“目标执行器”发送调度请求,调度流程结束,等待执行器回调执行结果。
|
|
|
|
|
“调度备注”可以看出本地调度运行轨迹,执行器的"注册方式"、"地址列表"和任务的"路由策略"。"故障转移(FAILOVER)"路由策略下,调度中心首先对第一个地址进行心跳检测,心跳失败因此自动跳过,第二个依然心跳检测失败……
|
|
|
|
|
直至心跳检测第三个地址“127.0.0.1:9999”成功,选定为“目标执行器”;然后对“目标执行器”发送调度请求,调度流程结束,等待执行器回调执行结果。
|
|
|
|
|
|
|
|
|
|
##### 5.4.9 调度日志
|
|
|
|
|
调度中心每次进行任务调度,都会记录一条任务日志,任务日志主要包括以下三部分内容:
|
|
|
|
@ -519,8 +521,7 @@ CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).w
|
|
|
|
|
- 调度信息:包括“调度时间”、“调度结果”和“调度日志”等,根据这些参数,可以了解“调度中心”发起调度请求时具体情况。
|
|
|
|
|
- 执行信息:包括“执行时间”、“执行结果”和“执行日志”等,根据这些参数,可以了解在“执行器”端任务执行的具体情况;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201607/24134148_6xpS.png "在这里输入图片标题")
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/12221436_c8Ru.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
调度日志,针对单次调度,属性说明如下:
|
|
|
|
|
- 执行器地址:任务执行的机器地址;
|
|
|
|
@ -555,9 +556,9 @@ CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).w
|
|
|
|
|
原理:每个Glue任务的代码,实际上是“一个继承自“IJobHandler”的实现类的类代码”,“执行器”接收到“调度中心”的调度请求时,会通过Groovy类加载器加载此代码,实例化成Java对象,同时注入此代码中声明的Spring服务(请确保Glue代码中的服务和类引用在“执行器”项目中存在),然后调用该对象的execute方法,执行任务逻辑。
|
|
|
|
|
|
|
|
|
|
##### 5.5.3 执行器
|
|
|
|
|
执行器实际上是一个内嵌的Jetty服务器,默认端口9999。
|
|
|
|
|
执行器实际上是一个内嵌的Jetty服务器,默认端口9999,如下图配置文件所示(参数:xxl.job.executor.port)。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201607/23224304_0jxT.png "在这里输入图片标题")
|
|
|
|
|
![输入图片说明](https://static.oschina.net/uploads/img/201703/10174923_TgNO.png "在这里输入图片标题")
|
|
|
|
|
|
|
|
|
|
在项目启动时,执行器会通过“@JobHander”识别Spring容器中“Bean模式任务”,以注解的value属性为key管理起来。
|
|
|
|
|
|
|
|
|
|