一种任务调度服务器及任务调度方法与流程

文档序号:11386264阅读:339来源:国知局
一种任务调度服务器及任务调度方法与流程

本发明涉及通信领域,更具体地说,涉及一种任务调度服务器及任务调度方法。



背景技术:

大数据平台任务调度系统中的有向无环图(dag,directedacyclicgraph)任务调度流程由单独的系统进行维护,基于dag图的任务调度流程使用工作流调度工具转换为能被工具流调度器识别的脚本,举例来说,基于dag图的任务调度流程使用airflow工具转换为能被airflow识别的dag.py脚本,其中,airflow是一个工作流开源项目,dag.py是指用python写的编码脚本。airflow本身是可以直接执行任务,如hivesql任务,任务之间的阻塞执行是根据子任务执行结果来确定是否执行下一个子任务,保证子任务能有序执行,但是目前一些大数据的任务,如hivesql任务由单独的子系统来完成,所以,在airflow中子任务变为超文本传输协议请求子系统执行、子系统执行子任务两步,超文本协议请求成功不能判断子系统是否执行了子任务,超文本协议请求成功不能作为子任务真正的执行成功状态,现有技术不能确定子任务是否执行成功。



技术实现要素:

鉴于此,本发明提供了一种任务调度服务器及任务调度方法,所述任务调度服务器及任务调度方法能确定子任务是否执行成功,提高任务调度的效率。

本发明提供一种任务调度服务器,所述任务调度服务器包括:

判断模块,用于判断当前子任务是否由对应的子系统单独执行;

获取模块,用于当当前子任务是由对应的子系统单独执行时,获取所述子任务对应的任务脚本;

处理模块,用于执行所述任务脚本,将所述子任务的执行请求发送给所述对应的子系统,并监测所述子任务的执行结果,根据所述执行结果确定所述子任务是否执行完成。

可选地,所述任务脚本包括第一任务节点、第二任务节点,其中,所述第一任务节点定义执行请求,所述执行请求用于请求所述子任务系统执行所述当前子任务,所述第二任务节点定义监测请求,所述监测请求用于监测所述子任务系统执行所述当前子任务的执行结果。

可选地,所述执行请求包括超文本传输协议请求,所述监测请求包括轮询请求,所述执行结果包括执行完成、或者执行终止、或者执行取消、或者执行异常。

可选地,所述处理模块包括:

执行模块,用于根据所述第一任务节点向所述子任务系统发送所述执行请求,请求所述子任务系统执行所述当前子任务;

监测模块,用于根据所述第二任务节点向所述子任务系统发送所述监测请求,监测所述子任务系统执行所述当前子任务的执行结果,若所述执行结果为执行成功,则确定所述子任务执行成功,若所述执行结果为执行终止、或者执行取消、或者执行异常,则确定所述子任务执行失败。

可选地,

所述执行模块,还用于执行所述任务脚本的所述第一任务节点,根据所述第一任务节点向所述子任务系统发送超文本传输协议请求;

所述监测模块,还用于执行所述任务脚本的所述第二任务节点根据所述第二任务节点向所述子任务系统发送轮询请求,定时监测所述子任务系统执行所述当前子任务的执行结果,若所述执行结果为执行成功,则确定所述子任务执行成功,若所述执行结果为执行终止、或者执行取消、或者执行异常,则确定所述子任务执行失败,若所述执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送所述轮询请求,若所述执行结果为空时,则间隔预设时间发送所述轮询请求。

本发明还提供了一种任务调度方法,所述任务调度方法应用于任务调度服务器,所述任务调度方法包括:

判断当前子任务是否由对应的子系统单独执行;

当当前子任务是由对应的子系统单独执行时,获取所述子任务对应的任务脚本;

执行所述任务脚本,将所述子任务的执行请求发送给所述对应的子系统,并监测所述子任务的执行结果,根据所述执行结果确定所述子任务是否执行完成。

可选地,所述任务脚本包括第一任务节点、第二任务节点,其中,所述第一任务节点定义执行请求,所述执行请求用于请求所述子任务系统执行所述当前子任务,所述第二任务节点定义监测请求,所述监测请求用于监测所述子任务系统执行所述当前子任务的执行结果。

可选地,所述执行请求包括超文本传输协议请求,所述监测请求包括轮询请求,所述执行结果包括执行完成、或者执行终止、或者执行取消、或者执行异常。

可选地,执行所述任务脚本,将所述子任务的执行请求发送给所述对应的子系统,并监测所述子任务的执行结果,根据所述执行结果确定所述子任务是否执行完成,包括:

根据所述第二任务节点向所述子任务系统发送所述执行请求,请求所述子任务系统执行所述当前子任务;

根据所述第二任务节点向所述子任务系统发送所述监测请求,监测所述子任务系统执行所述当前子任务的执行结果;

若所述执行结果为执行成功,则确定所述子任务执行成功;

若所述执行结果为执行终止、或者执行取消、或者执行异常,则确定所述子任务执行失败。

可选地,所述执行所述任务脚本,将所述子任务的执行请求发送给所述对应的子系统,并监测所述子任务的执行结果,根据所述执行结果确定所述子任务是否执行完成,包括:

执行所述任务脚本的所述第一任务节点、所述第二任务节点,根据所述第一任务节点向所述子任务系统发送超文本传输协议请求;

根据所述第二任务节点向所述子任务系统发送轮询请求,定时监测所述子任务系统执行所述当前子任务的执行结果;

若所述执行结果为执行成功,则确定所述子任务执行成功;

若所述执行结果为执行终止、或者执行取消、或者执行异常,则确定所述子任务执行失败;

若所述执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送所述轮询请求;

若所述执行结果为空时,则间隔预设时间发送所述轮询请求。

本发明提供的任务调度服务器及任务调度方法能判断当前子任务是否由对应的子系统单独执行,当当前子任务是由对应的子系统单独执行时,获取所述子任务对应的任务脚本,执行所述任务脚本,将所述子任务的执行请求发送给所述对应的子系统,并监测所述子任务的执行结果,根据所述执行结果确定所述子任务是否执行完成,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

附图说明

图1为实现本发明各个实施例任务调度服务器所在的大数据平台的分层示意图;

图2为如图1所示的任务调度服务器所在的大数据平台的的应用环境示意图;

图3是本发明实施例一任务调度服务器的功能模块图;

图4是本发明实施例二任务调度服务器的功能模块图;

图5是本发明实施例三任务调度服务器的应用环境示意图;

图6是本发明实施例四任务调度方法的流程图;

图7是本发明实施例五任务调度方法的流程图;

图8是本发明实施例六任务调度方法的流程图;

图9是本发明实施例七第二任务节点的代码示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

现在将参考附图描述实现本发明各个实施例一可选的任务调度服务器。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。

任务调度服务器可以以各种形式来实施。例如,本发明中描述的服务器可以包括诸如大型服务器、小型服务器。

图1为实现本发明各个实施例任务调度服务器所在的大数据平台的分层示意图。图1中包括数据分析层20、编程模型层30、数据存储层40、文件存储层50、数据集成层60。数据集成层60集成的数据包括应用数据、数据库、日志、其他数据源的数据,文件存储层用于存储各种文件资料,数据存储层40用于存储元数据,编程模型层30用于根据具体算法进行模型编程,数据分析层20用于针对数据服务进行具体分析,数据服务的核心是分布式存储、实时计算、离线计算等。

图2为如图1所示的任务调度服务器所在的大数据平台的的应用环境示意图。图2在图1的分层下进行布局,在图2中包括任务调用服务器10、数据存储服务器270、数据计算服务器271,子系统272,任务调用服务器10分别于数据存储服务器270、数据计算服务器271,子系统272进行通信连接。任务调用服务器10能根据数据存储服务器270、数据计算服务器271的分析计算获取各种子任务,任务调用服务器10获取子任务之后,请求对应的子系统272执行对应的子任务。

补充说明的是,大数据中各种服务器均有多个,在此仅仅示意性画出一个,在本实施例中对服务器的个数不做限制。

任务调度服务器10可以包括,但不限于,存储器、控制器、无线通信单元、输入单元、输入单元、接口单元及电源单元。但是应当理解的是,并不要求实施所有组件。可以替代地实施更多或更少的组件。将在下面详细描述任务调度服务器10的元件。

无线通信单元通常包括一个或多个组件,其允许任务调度服务器10与无线通信系统或网络之间的无线点通信。例如,无线通信单元可以包括广播生成模块、移动通信模块、无线互联网模块、短程通信模块和位置消息模块中的至少一个。

广播生成模块经由广播信道从外部广播管理服务器接收广播信号和/或广播相关消息。广播信道可以包括卫星信道和/或地面信道。广播管理服务器可以是生成并发送广播信号和/或广播相关消息的服务器或者接收之前生成的广播信号和/或广播相关消息并且将其发送给终端的服务器。广播信号可以包括tv广播信号、无线电广播信号、数据广播信号等等。而且,广播信号可以进一步包括与tv或无线电广播信号组合的广播信号。广播相关消息也可以经由移动通信网络提供,并且在该情况下,广播相关消息可以由移动通信模块来接收。广播信号可以以各种形式存在,例如,其可以以数字多媒体广播(dmb)的电子节目指南(epg)、数字视频或音频广播手持(dvb-h)的电子服务指南(esg)等等的形式而存在。广播生成模块可以通过使用各种类型的广播系统接收信号广播。特别地,广播生成模块可以通过使用诸如多媒体广播-地面(dmb-t)、数字多媒体广播-卫星(dmb-s)、数字视频或音频广播-手持(dvb-h),前向链路媒体(mediaflo@)的数据广播系统、地面数字广播综合服务(isdb-t)等等的数字广播系统接收数字广播。广播生成模块可以被构造为适合提供广播信号的各种广播系统以及上述数字广播系统。经由广播生成模块接收的广播信号和/或广播相关消息可以存储在存储器20(或者其它类型的存储介质)中。

移动通信模块将无线电信号发送到基站(例如,接入点、节点b等等)、外部终端以及服务器中的至少一个和/或从其接收无线电信号。这样的无线电信号可以包括语言通话信号、视频或音频通话信号、或者根据文本和/或多媒体消息发送和/或接收的各种类型的数据。

无线互联网模块支持任务调度服务器的无线互联网接入。该模块可以内部或外部地耦接到终端。该模块所涉及的无线互联网接入技术可以包括wlan(无线lan)(wi-fi)、wibro(无线宽带)、wimax(全球微波互联接入)、hsdpa(高速下行链路分组接入)等等。

短程通信模块是用于支持短程通信的模块。短程通信技术的一些示例包括蓝牙tm、射频识别(rfid)、红外数据协会(irda)、超宽带(uwb)、紫蜂tm等等。

位置消息模块是用于检查或获取任务调度服务器的位置消息的模块。位置消息模块的典型示例是gps(全球定位系统)。根据当前的技术,gps模块计算来自三个或更多卫星的距离消息和准确的时间消息并且对于计算的消息应用三角测量法,从而根据经度、纬度和高度准确地计算三维当前位置消息。当前,用于计算位置和时间消息的方法使用三颗卫星并且通过使用另外的一颗卫星校正计算出的位置和时间消息的误差。此外,gps模块能够通过实时地连续计算当前位置消息来计算速度消息。

输出单元被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频或音频信号、警报信号、振动信号等等)。输出单元可以包括显示单元、音频输出模块、警报单元等等。

显示单元可以显示在任务调度服务器10中处理的消息。例如,当任务调度服务器10处于工作模式时,显示单元51可以显示例如,文本消息收发、多媒体文件下载等等相关的用户界面(ui)或图形用户界面(gui)。当任务调度服务器10处于视频或音频通话模式或者图像捕获模式时,显示单元51可以显示捕获的图像和/或接收的图像、示出视频或音频或图像以及相关功能的ui或gui等等。

同时,当显示单元和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元可以用作输入装置和输出装置。显示单元可以包括液晶显示器(lcd)、薄膜晶体管lcd(tft-lcd)、有机发光二极管(oled)显示器、柔性显示器、三维(3d)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为toled(透明有机发光二极管)显示器等等。根据特定想要的实施方式,任务调度服务器10可以包括两个或更多显示单元(或其它显示装置),例如,任务调度服务器可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。

音频输出模块可以在任务调度服务器处于记录模式、语言识别模式、广播接收模式等等模式下时,将无线通信单元接收的或者在存储器中存储的音频数据转换音频信号并且输出为声音。而且,音频输出模块可以提供与任务调度服务器10执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出模块可以包括扬声器、蜂鸣器等等。

警报单元可以提供输出以将事件的发生通知给任务调度服务器10。典型的事件可以包括呼叫接收、消息接收、键信号输入、触摸输入等等。除了音频或视频或音频输出之外,警报单元可以以不同的方式提供输出以通知事件的发生。例如,警报单元可以以振动的形式提供输出,当接收到呼叫、消息或一些其它进入通信(incomingcommunication)时,警报单元可以提供触觉输出(即,振动)以将其通知给用户。通过提供这样的触觉输出,即使在用户的移动电话处于用户的口袋中时,用户也能够识别出各种事件的发生。警报单元也可以经由显示单元或音频输出模块提供通知事件的发生的输出。

输入单元可以根据用户输入的命令生成键输入数据以控制任务调度服务器的各种操作。输入单元允许用户输入各种类型的消息,并且可以包括键盘、锅仔片、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元上时,可以形成触摸屏。在本发明的实施例中,所述输入单元包括触控屏及水墨屏。

接口单元用作至少一个外部装置与任务调度服务器10连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(i/o)端口、视频或音频i/o端口、耳机端口等等。识别模块可以是存储用于验证用户使用任务调度服务器10的各种消息并且可以包括用户识别模块(uim)、客户识别模块(sim)、通用客户识别模块(usim)等等。另外,具有识别模块的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与任务调度服务器10连接。接口单元可以用于接收来自外部装置的输入(例如,数据消息、电力等等)并且将接收到的输入传输到任务调度服务器10内的一个或多个元件或者可以用于在任务调度服务器和外部装置之间传输数据。

另外,当任务调度服务器10与外部底座连接时,接口单元可以用作允许通过其将电力从底座提供到任务调度服务器10的路径或者可以用作允许从底座输入的各种命令信号通过其传输到任务调度服务器的路径。从底座输入的各种命令信号或电力可以用作用于识别任务调度服务器是否准确地安装在底座上的信号。

存储器可以存储由控制器执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频或音频等等)。而且,存储器可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。

存储器可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等等。而且,任务调度服务器10可以与通过网络连接执行存储器的存储功能的网络存储装置协作。

控制器通常控制任务调度服务器的总体操作。例如,控制器执行与语言通话、数据通信、视频或音频通话等等相关的控制和处理。另外,控制器可以包括用于再现(或回放)多媒体数据的多媒体模块,多媒体模块可以构造在控制器内,或者可以构造为与控制器分离。控制器可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。

电源单元在控制器的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。

这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(asic)、数字信号处理器(dsp)、数字信号处理装置(dspd)、可编程逻辑装置(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器160中并且由控制器180执行。

至此,己经按照其功能描述了任务调度服务器。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型任务调度服务器等等的各种类型的任务调度服务器中的滑动型任务调度服务器作为示例。因此,本发明能够应用于任何类型的任务调度服务器,并且不限于滑动型任务调度服务器。

基于上述任务调度服务器硬件结构,提出本发明方法各个实施例。

请参阅图3,图3是本发明实施例一任务调度服务器的功能模块图。图3所示的任务调度服务器10包括判断模块101、获取模块102、处理模块103。下面对功能模块进行详细说明。

任务调度服务器10的判断模块101判断当前子任务是否由对应的子系统单独执行。获取模块102用于当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本。处理模块103执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成。

补充说明的是,当确认当前子任务执行成功时,执行下一个子任务。任务调度服务器10的判断模块101判断当前子任务是否由对应的子系统单独执行之前,任务调度服务器维护dag图,保存dag图后,将dag图转换成dag.py脚本文件,该dag.py脚本文件遵照airflow定义的格式生成,任务调度服务器将dag.py脚本提交到airflow工作平台,并调用airflow平台接口,启动dag.py脚本的任务调度,并周期性的执行dag.py脚本文件,以获取当前的子任务,其中,若子任务为hivesql任务,则该子任务为子系统单独执行的子任务。

本实施例提供的任务调度服务器能判断当前子任务是否由对应的子系统单独执行,当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本,执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

请参阅图4,图4是本发明实施例二任务调度服务器的功能模块图。图4所示的任务调度服务器10包括判断模块101、获取模块102、处理模块103,其中,处理模块103包括执行模块104、监测模块105。下面对功能模块进行详细说明。

任务调度服务器10的判断模块101判断当前子任务是否由对应的子系统单独执行。获取模块102用于当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本。处理模块103执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成。

补充说明的是,任务脚本包括第一任务节点、第二任务节点,其中,第一任务节点定义执行请求,执行请求用于请求子任务系统执行当前子任务,第二任务节点定义监测请求,监测请求用于监测子任务系统执行当前子任务的执行结果。其中,执行请求包括超文本传输协议请求,监测请求包括轮询请求,执行结果包括执行完成、或者执行终止、或者执行取消、或者执行异常。请同时参阅图9,图9是本发明实施例七第二任务节点的代码示意图,其中,第二任务节点的代码包括pythonoperator类,通过python脚本实现对子系统执行对应子任务的状态进行轮询,及时获取子任务的执行结果。

具体来说,执行模块104根据第一任务节点向子任务系统发送执行请求,请求子任务系统执行当前子任务。监测模块105根据第二任务节点向子任务系统发送监测请求,监测子任务系统执行当前子任务的执行结果,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败。请同时参阅图9,图9是本发明实施例七第二任务节点的代码示意图,其中,第二任务节点的代码包括pythonoperator类,通过python脚本实现对子系统执行对应子任务的状态进行轮询,及时获取子任务的执行结果。

补充说明的是,执行模块104执行任务脚本的第一任务节点,根据第一任务节点向子任务系统发送超文本传输协议请求。监测模块105执行任务脚本的第二任务节点,根据第二任务节点向子任务系统发送轮询请求,定时监测子任务系统执行当前子任务的执行结果,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败,若执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送轮询请求,若执行结果为空时,则间隔预设时间发送轮询请求。

本实施例提供的任务调度服务器能判断当前子任务是否由对应的子系统单独执行,当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本,执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,若执行结果为执行成功,则确定第一子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定第一子任务执行失败,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

请参阅图5,图5是本发明实施例三任务调度服务器的应用环境示意图。图5中的任务调度服务器10包括判断模块101、获取模块102、处理模块103,其中,处理模块103包括执行模块104、监测模块105,任务调度服务器10分别与第一子系统501、第二子系统502、第三子系统503进行通信连接。下面对图5进行详细说明。

任务调度服务器10的判断模块101判断当前子任务是否由对应的子系统单独执行。获取模块102用于当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本。处理模块103执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成。

参阅图5来说,第一子任务为第一子系统501单独执行、第二子任务为第二子系统502单独执行、第三子任务为第三子系统503单独执行,假设,当前的子任务为第一子任务时,任务调度服务器10的判断模块101判断当前的第一子任务由对应的第一子系统单独执行。当当前第一子任务是由对应的第一子系统单独执行时,获取模块102用于获取第一子任务对应的任务脚本。处理模块103执行任务脚本,将子任务的执行请求发送给对应的第一子系统,并监测第一子任务的执行结果,根据第一子任务的执行结果确定第一子任务是否执行完成。补充说明的是,任务脚本包括第一任务节点、第二任务节点,其中,第一任务节点定义执行请求,执行请求用于请求子任务系统执行当前子任务,第二任务节点定义监测请求,监测请求用于监测子任务系统执行当前子任务的执行结果。其中,执行请求包括超文本传输协议请求,监测请求包括轮询请求,执行结果包括执行完成、或者执行终止、或者执行取消、或者执行异常。请同时参阅图9,图9是本发明实施例七第二任务节点的代码示意图,其中,第二任务节点的代码包括pythonoperator类,通过python脚本实现对子系统执行对应子任务的状态进行轮询,及时获取子任务的执行结果。

具体来说,子任务可以有多个,例如,第一子任务、第二子任务、第三子任务,当前的子任务可以为多个子任务中的任意一个,当当前的子任务为第一子任务时,执行模块104根据第一任务节点向第一子任务系统发送执行请求,请求第一子任务系统执行当前第一子任务。监测模块105根据第二任务节点向第一子任务系统发送监测请求,监测第一子任务系统执行当前第一子任务的执行结果,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败。

补充说明的是,当当前的子任务为第一子任务时,执行模块104执行任务脚本的第一任务节点,根据第一任务节点向第一子任务系统发送超文本传输协议请求。监测模块105执行任务脚本的第二任务节点,根据第二任务节点向第一子任务系统发送轮询请求,定时监测子任务系统执行当前第一子任务的执行结果,若执行结果为执行成功,则确定第一子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定第一子任务执行失败,若执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送轮询请求,若执行结果为空时,则间隔预设时间发送轮询请求。

若第一子任务和第二子任务为串行的执行关系,当当前的子任务为第一子任务执行成功后时,任务调度服务器10的获取第二子任务,任务调度服务器10的判断模块101判断第二子任务是否由对应的子系统单独执行。获取模块102用于当第二子任务是由对应的第二子系统单独执行时,获取子任务对应的任务脚本。处理模块103执行任务脚本,将子任务的执行请求发送给对应的第二子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成。

执行模块104根据第一任务节点向第而子任务系统发送执行请求,请求第而子任务系统执行当前第二子任务。监测模块105根据第二任务节点向第二子任务系统发送监测请求,监测第一子任务系统执行当前第二子任务的执行结果,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败。

补充说明的是,当当前的子任务为第二子任务时,执行模块104执行任务脚本的第一任务节点,根据第一任务节点向第二子任务系统发送超文本传输协议请求。监测模块105执行任务脚本的第二任务节点,根据第二任务节点向第二子任务系统发送轮询请求,定时监测子任务系统执行当前第二子任务的执行结果,若执行结果为执行成功,则确定第一子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定第二子任务执行失败,若执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送轮询请求,若执行结果为空时,则间隔预设时间发送轮询请求。若第一子任务和第二子任务为并行的执行关系,且在执行完第一子任务和第二子任务后再执行第三子任务时,任务调度服务器10在执行完第一子任务和第二子任务后再执行第三子任务,获取第三子任务,向第三子系统请求执行第三子任务,并监测第三子任务是否执行成功。

本实施例提供的任务调度服务器能判断当前子任务是否由对应的子系统单独执行,当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本,执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成,若执行结果为执行成功,则确定第一子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定第一子任务执行失败,若执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送轮询请求,若执行结果为空时,则间隔预设时间发送轮询请求,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

本发明还提供一种任务调度方法,该方法应用于图3-5所示的任务调度服务器10,下面对本实施例的任务调度方法进行详细介绍。

参阅图6,图6是本发明实施例四任务调度方法的流程图。

在步骤s601中,任务调度服务器10的判断模块101判断当前子任务是否由对应的子系统单独执行。

在步骤s602中,获取模块102用于当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本。

在步骤s603中,处理模块103执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成。

补充说明的是,任务脚本包括第一任务节点、第二任务节点,其中,第一任务节点定义执行请求,执行请求用于请求子任务系统执行当前子任务,第二任务节点定义监测请求,监测请求用于监测子任务系统执行当前子任务的执行结果。执行请求包括超文本传输协议请求,监测请求包括轮询请求,执行结果包括执行完成、或者执行终止、或者执行取消、或者执行异常。请同时参阅图9,图9是本发明实施例七第二任务节点的代码示意图,其中,第二任务节点的代码包括pythonoperator类,通过python脚本实现对子系统执行对应子任务的状态进行轮询,及时获取子任务的执行结果。

进一步补充说明的是,任务调度服务器10的判断模块101判断当前子任务是否由对应的子系统单独执行之前,任务调度服务器维护dag图,保存dag图后,将dag图转换成dag.py脚本文件,该dag.py脚本文件遵照airflow定义的格式生成,任务调度服务器将dag.py脚本提交到airflow工作平台,并调用airflow平台接口,启动dag.py脚本的任务调度,并周期性的执行dag.py脚本文件,以获取当前的子任务。当确认当前子任务执行成功时,执行下一个子任务,其中,若子任务为hivesql任务,则该子任务为子系统单独执行的子任务。

本实施例提供的任务调度方法能判断当前子任务是否由对应的子系统单独执行,当当前子任务是由对应的子系统单独执行时,获取子任务对应的任务脚本,执行任务脚本,将子任务的执行请求发送给对应的子系统,并监测子任务的执行结果,根据执行结果确定子任务是否执行完成,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

参阅图7,图7是本发明实施例五任务调度方法的流程图。该方法应用于图3-5所示的任务调度服务器10,下面对本实施例的任务调度方法进行详细介绍。

在步骤s701中,执行模块104根据第一任务节点向子任务系统发送执行请求,请求子任务系统执行当前子任务。

在步骤s702中,监测模块105根据第二任务节点向子任务系统发送监测请求,监测子任务系统执行当前子任务的执行结果。补充说明的是,第二任务节点的代码包括pythonoperator类,通过python脚本实现对子系统执行对应子任务的状态进行轮询,及时获取子任务的执行结果。

在步骤s703中,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败。

本实施例提供的任务调度方法能监测子任务的执行结果,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

参阅图8,图8是本发明实施例六任务调度方法的流程图。该方法应用于图3-5所示的任务调度服务器10,下面对本实施例的任务调度方法进行详细介绍。

在步骤s801中,执行模块104执行任务脚本的第一任务节点,根据第一任务节点向子任务系统发送超文本传输协议请求。

在步骤s802中,监测模块105执行任务脚本的第二任务节点,根据第二任务节点向子任务系统发送轮询请求。其中,第二任务节点的代码包括pythonoperator类,通过python脚本实现对子系统执行对应子任务的状态进行轮询,及时获取子任务的执行结果。

在步骤s803中,定时监测子任务系统执行当前子任务的执行结果,若执行结果为执行成功,则确定子任务执行成功,若执行结果为执行终止、或者执行取消、或者执行异常,则确定子任务执行失败。

在步骤s804中,若执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送轮询请求,若执行结果为空时,则间隔预设时间发送轮询请求。

本实施例提供的任务调度方法能监测子任务的执行结果,若执行结果为执行成功、执行终止、或者执行取消、或者执行异常时,则停止发送轮询请求,若执行结果为空时,则间隔预设时间发送轮询请求,这样,能确定子任务是否执行成功,确保所有子任务能有序执行,提高任务调度的效率。

以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1