调度平台YYSchedule-介绍-结果回收机制

注:结果回收机制是在下发任务机制之后。

一、引擎的执行

当用户下发了一批任务,这批任务会通过下发任务机制,下发到每个引擎(engine)中并进行执行。

引擎执行任务时,可能会出现如下几种情况:

1、程序顺顺利利地执行成功

2、程序在执行过程中,出现了一些致命的错误,导致程序被强制中断。

3、程序在执行过程中,通过程序自身发现一些错误,错误会导致没有最终结果出现,但不会中断程序的执行。

4、程序执行时间超时,系统强制杀死程序所对应的进程。

 

对于上述4种情况,其中1、3可以通过程序本身在最后返回结果时,报告具体执行状况,而对于2、4来说,就必须在引擎外部增加一个引擎监测器(处在任务节点node中),用于监测引擎的具体执行状况。

因此,上述4种情况将会有如下的处理方法:

1、程序顺顺利利地执行成功             ---------------------------->        引擎正常返回执行结果类

2、程序在执行过程中,出现了一些致命的错误,导致程序被强制中断。    --------------------->   监测器返回含有中断标记的结果类

3、程序在执行过程中,通过程序自身发现一些错误,错误会导致没有最终结果出现,但不会中断程序的执行。    --------->   引擎返回具有出错标记的结果类

4、程序执行时间超时,系统强制杀死程序所对应的进程。       ---------->    监测器返回含有中断标记的结果类

 

具体流程图如下图右侧所示:

调度平台YYSchedule-介绍-结果回收机制
标题结果回收流程图

 

 

二、结果的回收

任务节点(node)在结果回收模块中会收到引擎亦或者引擎监测模块发送的结果。经过细微地处理后,会将结果发送到resultQueue队列中,然后由控制节点(taskmanager)的结果回收模块进行真正的结果回收。在结果回收后,会将成功的结果发给用户(User),失败的任务发送到失败处理模块中(详见博客“失败回收机制”)。

无论任务在本次执行中成功或失败,结果回收模块都会将其发送到结果状态统计模块中(详见”任务节点检测机制”)。