调度平台YYSchedule-介绍-结果回收机制
注:结果回收机制是在下发任务机制之后。
一、引擎的执行
当用户下发了一批任务,这批任务会通过下发任务机制,下发到每个引擎(engine)中并进行执行。
引擎执行任务时,可能会出现如下几种情况:
1、程序顺顺利利地执行成功
2、程序在执行过程中,出现了一些致命的错误,导致程序被强制中断。
3、程序在执行过程中,通过程序自身发现一些错误,错误会导致没有最终结果出现,但不会中断程序的执行。
4、程序执行时间超时,系统强制杀死程序所对应的进程。
对于上述4种情况,其中1、3可以通过程序本身在最后返回结果时,报告具体执行状况,而对于2、4来说,就必须在引擎外部增加一个引擎监测器(处在任务节点node中),用于监测引擎的具体执行状况。
因此,上述4种情况将会有如下的处理方法:
1、程序顺顺利利地执行成功 ----------------------------> 引擎正常返回执行结果类
2、程序在执行过程中,出现了一些致命的错误,导致程序被强制中断。 ---------------------> 监测器返回含有中断标记的结果类
3、程序在执行过程中,通过程序自身发现一些错误,错误会导致没有最终结果出现,但不会中断程序的执行。 ---------> 引擎返回具有出错标记的结果类
4、程序执行时间超时,系统强制杀死程序所对应的进程。 ----------> 监测器返回含有中断标记的结果类
具体流程图如下图右侧所示:
二、结果的回收
任务节点(node)在结果回收模块中会收到引擎亦或者引擎监测模块发送的结果。经过细微地处理后,会将结果发送到resultQueue队列中,然后由控制节点(taskmanager)的结果回收模块进行真正的结果回收。在结果回收后,会将成功的结果发给用户(User),失败的任务发送到失败处理模块中(详见博客“失败回收机制”)。
无论任务在本次执行中成功或失败,结果回收模块都会将其发送到结果状态统计模块中(详见”任务节点检测机制”)。