分布式任务调度系统及方法与流程

文档序号:12271068阅读:213来源:国知局
分布式任务调度系统及方法与流程

本发明涉及分布式任务调度技术领域,具体而言,涉及一种分布式任务调度系统及方法。



背景技术:

随着计算机技术的发展,应用程序的计算量越来越大,对于大数据量的计算,通常采用的处理方式是并行计算,当前有一些编程模型,用于进行大数据量的计算,比如Map Reduce,它是一种简化并行计算的编程模型,它可以令并行计算经验并不丰富的开发人员也可以开发并行应用,因此它是一种非常经典的任务模型。

Hadoop来自于Map Reduce编程模型,是一个能够对大量数据进行分布式处理的软件框架,以Hadoop为例,开发并行计算程序要编写一个模块用于把任务分割成多个子任务,还需要编写程序具体执行某一个子任务,如图1所示,图中虚线框为开发人员需要编写的模块。

由图1可以看出,利用Hadoop开发并行计算程序时,开发人员至少需要编写两类模块,一类任务分割模块、一类任务执行模块,代码编写量大、开发人员的开发任务重。

针对上述提出的现有技术提供的并行计算程序开发方式代码编写量大、开发人员开发任务重的问题,目前尚未提出较好的解决办法。



技术实现要素:

有鉴于此,本发明的目的在于提供一种分布式任务调度系统及方法,以缓解现有技术提供的并行计算程序开发方式代码编写量大、开发人员开发任务重的问题。

第一方面,本发明实施例提供了一种分布式任务调度系统,所述系统包括:中心服务器和多个计算服务器;所述中心服务器获取分布式应用程序和所述分布式应用程序的执行请求,其中,所述分布式应用程序在执行时对应为一个主任务和多个子任务,所述执行请求包括所述主任务的任务身份和所述主任务的任务参数;所述中心服务器确定执行所述主任务的计算服务器,向执行所述主任务的计算服务器发送所述分布式应用程序、所述主任务的任务身份和所述主任务的任务参数;执行所述主任务的计算服务器根据所述主任务的任务身份和所述主任务的任务参数将所述分布式应用程序的执行过程分割为多个子任务,并确定各个所述子任务的任务参数和各个所述子任务之间的执行顺序,根据各个所述子任务之间的执行顺序将各个所述子任务的任务参数以及各个所述子任务的执行请求发送至所述中心服务器。

结合第一方面,本发明实施例提供了第一方面第一种可能的实施方式,其中,所述主任务的任务参数包括子任务数量和/或子任务大小;执行所述主任务的计算服务器具体用于:执行所述主任务的计算服务器根据所述主任务的任务身份确定执行所述主任务;当所述主任务的任务参数包括所述子任务数量或所述子任务大小时,执行所述主任务的计算服务器按照所述子任务数量或所述子任务大小将所述分布式应用程序的执行过程分割为多个子任务;当所述主任务的任务参数包括所述子任务数量和所述子任务大小时,执行所述主任务的计算服务器比较所述子任务数量和所述子任务大小的优先级,按照优先级最高的参数将所述分布式应用程序的执行过程分割为多个子任务,或者,根据子任务数量最少原则将所述分布式应用程序的执行过程分割为多个子任务,或者,根据子任务数量最多原则将所述分布式应用程序的执行过程分割为多个子任务。

结合第一方面,本发明实施例提供了第一方面第二种可能的实施方式,其中,执行所述主任务的计算服务器具体用于:当各个所述子任务为并行执行时,依次将各个所述子任务的任务参数和各个所述子任务的执行请求发送至所述中心服务器;当各个所述子任务为串行执行时,将当前子任务的任务参数和执行请求发送至所述中心服务器,当获取到所述当前子任务的执行结果时,将所述执行结果作为所述当前子任务的下一个子任务的任务参数的一部分,将所述下一个子任务的任务参数和执行请求发送至所述中心服务器。

结合第一方面第二种可能的实施方式,本发明实施例提供了第一方面第三种可能的实施方式,其中,所述中心服务器接收执行所述主任务的计算服务器发送的子任务的任务参数以及子任务的执行请求,确定执行所述子任务的计算服务器,将所述分布式应用程序、接收到的所述子任务的任务参数以及所述子任务的任务身份发送至执行所述子任务的计算服务器;执行所述子任务的计算服务器根据所述子任务的任务身份、所述子任务的任务参数以及所述分布式应用程序执行所述子任务,将所述子任务的执行结果发送至执行所述主任务的计算服务器。

结合第一方面第三种可能的实施方式,本发明实施例提供了第一方面第四种可能的实施方式,其中,各个所述计算服务器中均设置有编程接口;执行所述主任务的计算服务器通过调用所述编程接口获取所述主任务的任务身份和所述主任务的任务参数,以及通过调用所述编程接口根据各个所述子任务之间的执行顺序将各个所述子任务的任务参数以及各个所述子任务的执行请求发送至所述中心服务器;执行所述子任务的计算服务器通过调用所述编程接口获取所述子任务的任务身份和所述子任务的任务参数,以及通过调用所述编程接口将所述子任务的执行结果发送至执行所述主任务的计算服务器。

第二方面,本发明实施例提供了一种应用上述第一方面中的分布式任务调度系统的分布式任务调度方法,所述方法包括:所述中心服务器获取分布式应用程序和所述分布式应用程序的执行请求,其中,所述分布式应用程序在执行时对应为一个主任务和多个子任务,所述执行请求包括所述主任务的任务身份和所述主任务的任务参数;所述中心服务器确定执行所述主任务的计算服务器,向执行所述主任务的计算服务器发送所述分布式应用程序、所述主任务的任务身份和所述主任务的任务参数;执行所述主任务的计算服务器根据所述主任务的任务身份和所述主任务的任务参数将所述分布式应用程序的执行过程分割为多个子任务;执行所述主任务的计算服务器确定各个所述子任务的任务参数和各个所述子任务之间的执行顺序,根据各个所述子任务之间的执行顺序将各个所述子任务的任务参数以及各个所述子任务的执行请求发送至所述中心服务器。

结合第二方面,本发明实施例提供了第二方面第一种可能的实施方式,其中,所述主任务的任务参数包括子任务数量和/或子任务大小;执行所述主任务的计算服务器根据所述主任务的任务身份和所述主任务的任务参数将所述分布式应用程序的执行过程分割为多个子任务,包括:执行所述主任务的计算服务器根据所述主任务的任务身份确定执行所述主任务;当所述主任务的任务参数包括所述子任务数量或所述子任务大小时,执行所述主任务的计算服务器按照所述子任务数量或所述子任务大小将所述分布式应用程序的执行过程分割为多个子任务;当所述主任务的任务参数包括所述子任务数量和所述子任务大小时,执行所述主任务的计算服务器比较所述子任务数量和所述子任务大小的优先级,按照优先级最高的参数将所述分布式应用程序的执行过程分割为多个子任务,或者,根据子任务数量最少原则将所述分布式应用程序的执行过程分割为多个子任务,或者,根据子任务数量最多原则将所述分布式应用程序的执行过程分割为多个子任务。

结合第二方面,本发明实施例提供了第二方面第二种可能的实施方式,其中,根据各个所述子任务之间的执行顺序将各个所述子任务的任务参数以及各个所述子任务的执行请求发送至所述中心服务器,包括:当各个所述子任务为并行执行时,依次将各个所述子任务的任务参数和各个所述子任务的执行请求发送至所述中心服务器;当各个所述子任务为串行执行时,将当前子任务的任务参数和执行请求发送至所述中心服务器,当获取到所述当前子任务的执行结果时,将所述执行结果作为所述当前子任务的下一个子任务的任务参数的一部分,将所述下一个子任务的任务参数和执行请求发送至所述中心服务器。

结合第二方面第二种可能的实施方式,本发明实施例提供了第二方面第三种可能的实施方式,其中,所述方法还包括:所述中心服务器接收执行所述主任务的计算服务器发送的子任务的任务参数以及子任务的执行请求,确定执行所述子任务的计算服务器,将所述分布式应用程序、接收到的所述子任务的任务参数以及所述子任务的任务身份发送至执行所述子任务的计算服务器;执行所述子任务的计算服务器根据所述子任务的任务身份、所述子任务的任务参数以及所述分布式应用程序执行所述子任务,将所述子任务的执行结果发送至执行所述主任务的计算服务器。

结合第二方面第三种可能的实施方式,本发明实施例提供了第二方面第四种可能的实施方式,其中,所述分布式任务调度系统中,各个所述计算服务器中均设置有编程接口;执行所述主任务的计算服务器根据所述主任务的任务身份和所述主任务的任务参数将所述分布式应用程序的执行过程分割为多个子任务之前,所述方法还包括:执行所述主任务的计算服务器通过调用所述编程接口获取所述主任务的任务身份和所述主任务的任务参数;根据各个所述子任务之间的执行顺序将各个所述子任务的任务参数以及各个所述子任务的执行请求发送至所述中心服务器,包括:通过调用所述编程接口根据各个所述子任务之间的执行顺序将各个所述子任务的任务参数以及各个所述子任务的执行请求发送至所述中心服务器;执行所述子任务的计算服务器根据所述子任务的任务身份、所述子任务的任务参数以及所述分布式应用程序执行所述子任务之前,所述方法还包括:执行所述子任务的计算服务器通过调用所述编程接口获取所述子任务的任务身份和所述子任务的任务参数;将所述子任务的执行结果发送至执行所述主任务的计算服务器,包括:通过调用所述编程接口将所述子任务的执行结果发送至执行所述主任务的计算服务器。

本发明实施例中,中心服务器在获取到分布式应用程序后,将分布式应用程序、主任务的任务身份和主任务的任务参数发送至执行主任务的计算服务器,执行主任务的计算服务器根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务。由于通过本发明实施例中的系统及方法,开发人员无需分别开发任务分割模块和任务执行模块,只需要编写一个分布式应用程序就能够实现各个子任务的分割,因此与现有技术相比,本发明实施例中的系统及方法代码编写量小,能够缓解现有技术中并行计算程序开发方式代码编写量大、开发人员开发任务重的问题。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了现有技术中的并行计算程序开发示意图;

图2示出了本发明实施例提供的分布式任务调度系统的第一种组成示意图;

图3示出了本发明实施例提供的分布式任务调度系统的第二种组成示意图;

图4示出了本发明实施例提供的应用图2中的分布式任务调度系统的任务调度方法的流程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

考虑到现有技术提供的并行计算程序开发方式代码编写量大、开发人员开发任务重的问题,本发明实施例提供了一种分布式任务调度系统及方法,以缓解现有技术提供的并行计算程序开发方式代码编写量大、开发人员开发任务重的问题,下面通过实施例进行具体描述。

图2示出了本发明实施例提供的分布式任务调度系统的第一种组成示意图,如图2所示,该系统包括:中心服务器10和多个计算服务器20;

中心服务器10获取分布式应用程序和分布式应用程序的执行请求,其中,分布式应用程序在执行时对应为一个主任务和多个子任务,执行请求包括主任务的任务参数;

中心服务器10确定执行主任务的计算服务器20,向执行主任务的计算服务器20发送分布式应用程序、主任务的任务身份和主任务的任务参数;

执行主任务的计算服务器20根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务,并确定各个子任务的任务参数和各个子任务之间的执行顺序,根据各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器10。

本发明实施例中,中心服务器10在获取到分布式应用程序后,将分布式应用程序、主任务的任务身份和主任务的任务参数发送至执行主任务的计算服务器20,执行主任务的计算服务器20根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务。由于通过本发明实施例中的系统,开发人员无需分别开发任务分割模块和任务执行模块,只需要编写一个分布式应用程序就能够实现各个子任务的分割,因此与现有技术相比,本发明实施例中的系统代码编写量小,能够缓解现有技术中并行计算程序开发方式代码编写量大、开发人员开发任务重的问题。

中心服务器10获取的分布式应用程序为用户编辑好的分布式应用程序,无需采用特殊的编译器,采用各个操作系统通用的编译器编译即可。分布式应用程序在执行时对应为一个主任务和多个子任务,比如,某个分布式应用程序的内容为提取5000张图像的图像特征,则该分布式应用程序在执行时可以对应为一个主任务和多个子任务,主任务的任务内容是将5000张图像的图像特征提取过程分割为10个子任务,每个子任务的任务内容是提取500张图像的图像特征。

分布式应用程序的执行请求包括主任务的任务身份和主任务的任务参数,主任务的任务身份用于使计算服务器20识别其所执行的任务类型,主任务的任务参数包括主任务的执行时间、分割子任务的数量、每个子任务的大小、以及各个子任务的执行结果的处理算法等。中心服务器10选择空闲的计算服务器20、或者可利用资源最多的计算服务器20执行主任务,并将分布式应用程序、主任务的任务身份和主任务的任务参数发送至该执行主任务的计算服务器20。

该执行主任务的计算服务器20根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务,其中,执行主任务的计算服务器20根据主任务的任务身份确定执行主任务;主任务的任务参数包括子任务数量和/或子任务大小,当主任务的任务参数包括子任务数量或子任务大小时,执行主任务的计算服务器20按照子任务数量或子任务大小将分布式应用程序的执行过程分割为多个子任务;如,子任务数量为50,则执行主任务的计算服务器20将分布式应用程序的执行过程分割为50个子任务,又如,子任务大小为提取200张图像的图像特征,则执行主任务的计算服务器20将分布式应用程序的执行过程分割为多个子任务,每个子任务提取200张图像的图像特征。

当主任务的任务参数包括子任务数量和子任务大小时,执行主任务的计算服务器20比较子任务数量和子任务大小的优先级,按照优先级最高的参数将分布式应用程序的执行过程分割为多个子任务,比如,开发人员在主任务的任务参数内将子任务数量对应的字符数据写在了子任务大小对应的字符数据之前,则执行主任务的计算服务器20确定子任务数量的优先级最高,执行主任务的计算服务器20根据子任务数量将分布式应用程序的执行过程分割为多个子任务,又如,开发人员在主任务的任务参数内预先指定了子任务数量的优先级和子任务大小的优先级,则执行主任务的计算服务器20比较二者的优先级,确定优先级最高的参数,按照优先级最高的参数将分布式应用程序的执行过程分割为多个子任务。

或者,根据子任务数量最少原则将分布式应用程序的执行过程分割为多个子任务,比如,执行主任务的计算服务器20计算按照子任务大小分割任务时对应的子任务数量,将该子任务数量与主任务的任务参数中的子任务数量比较,确定子任务数量最少时对应的主任务的任务参数,按照子任务数量最少时对应的主任务的任务参数将分布式应用程序的执行过程分割为多个子任务。

或者,根据子任务数量最多原则将分布式应用程序的执行过程分割为多个子任务,比如,执行主任务的计算服务器20计算按照子任务大小分割任务时对应的子任务数量,将该子任务数量与主任务的任务参数中的子任务数量比较,确定子任务数量最多时对应的主任务的任务参数,按照子任务数量最多时对应的主任务的任务参数将分布式应用程序的执行过程分割为多个子任务。

本实施例中,由于子任务数量和子任务大小是任务分割过程中比较重要的两个参数,因此根据子任务数量或子任务大小进行任务分割能够保证得到多个分割合理的子任务。当子任务数量和子任务大小同时存在时,按照优先级最高的参数将分布式应用程序的执行过程分割为多个子任务,能够保证任务分割的合理性,当根据子任务数量最少原则将分布式应用程序的执行过程分割为多个子任务时,能够保证资源利用量最小,当根据子任务数量最多原则将分布式应用程序的执行过程分割为多个子任务时,能够保证任务的并行度高。在实际开发过程中,开发人员可以根据实际开发情况确定主任务的任务参数,从而保证分割出符合实际需求的多个子任务。

执行主任务的计算服务器20在分割出多个子任务后,还确定各个子任务的任务参数和各个子任务之间的执行顺序。具体地,执行主任务的计算服务器20根据开发人员编写的分布式应用程序中的内容确定各个子任务的任务参数和各个子任务之间的执行顺序。

由于中心服务器10需要接收到子任务的执行请求才会开始调用其他计算服务器20执行子任务,并且其他计算服务器20需要根据子任务的任务参数执行子任务,因此执行主任务的计算服务器20根据各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器10。具体地,当各个子任务为并行执行时,执行主任务的计算服务器20依次将各个子任务的任务参数和各个子任务的执行请求发送至中心服务器10,以使中心服务器10调用其他计算服务器20执行各个子任务,各个子任务可以同步执行。

当各个子任务为串行执行时,执行主任务的计算服务器20将当前子任务的任务参数和执行请求发送至中心服务器10,当获取到当前子任务的执行结果时,将该执行结果作为当前子任务的下一个子任务的任务参数的一部分,将该下一个子任务的任务参数和执行请求发送至中心服务器10。其中,执行主任务的计算服务器20将当前子任务的任务参数和执行请求发送至中心服务器10,中心服务器10确定空闲的计算服务器20执行当前子任务,将当前子任务的任务参数、任务身份和上述分布式应用程序发送至确定的计算服务器20,当确定的计算服务器20执行完成当前子任务时,将当前子任务的执行结果直接返回给执行主任务的计算服务器20,执行主任务的计算服务器20将当前子任务的执行结果作为当前子任务的下一个子任务的任务参数,将该下一个子任务的任务参数和执行请求发送至中心服务器10,以使中心服务器10调用空闲的计算服务器20执行该下一个子任务,其中,当前子任务的下一个子任务是按照各个子任务之间的执行顺序确定出来的。

本实施例中,考虑到各个子任务之间的执行顺序,执行主任务的计算服务器20按照各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器10,以使各个子任务按照执行顺序执行,保证分布式应用程序的正确执行。

本实施例中,中心服务器10不关注各个子任务之间的执行顺序,中心服务器10用于调用空闲的计算服务器20执行各个子任务。具体地,中心服务器10接收执行主任务的计算服务器10发送的子任务的任务参数以及子任务的执行请求,确定执行子任务的计算服务器10,优选确定空闲的计算服务器20执行子任务,将分布式应用程序和接收到的子任务的任务参数以及子任务的任务身份发送至执行子任务的计算服务器10。其中,当各个子任务并行执行时,中心服务器10将接收到多个子任务的任务参数和多个子任务的执行请求,中心服务器10确定执行各个子任务的计算服务器20,将接收到的多个子任务的任务参数同步发送至执行各个子任务的计算服务器20,中心服务器10还需要向执行各个子任务的计算服务器20发送各个子任务的任务身份和分布式应用程序,从而使计算服务器20能够执行子任务。

由于各个子任务的执行结果需要返回至主任务,因此执行子任务的计算服务器20根据子任务的任务身份、子任务的任务参数以及分布式应用程序执行子任务,得到子任务的执行结果,并将子任务的执行结果发送至执行主任务的计算服务器10。其中,执行子任务的计算服务器20根据子任务的任务身份确定所要执行的任务为子任务。

由于在执行主任务和子任务时,主任务的任务参数和子任务的任务参数可能相同,因此需要向计算服务器20发送任务身份和任务参数,使计算服务器20根据任务身份获知所要执行的任务类型,避免任务执行错误。对于图2中的任意一个计算服务器20而言,当其接收到中心服务器10发送的主任务的任务身份或者子任务的任务身份后,首先根据主任务的任务身份或者子任务的任务身份获知将要执行的是主任务还是子任务,进而根据分布式应用程序、主任务的任务参数或者子任务的任务参数执行主任务或者子任务。主任务的内容通常是将分布式应用程序的执行过程分割为多个子任务。本实施例中,主任务的任务身份或者子任务的任务身份为计算服务器20生成的。

通过本实施例能够知道,开发人员只需要编写分布式应用程序并编译,中心服务器10在获取到编译好的分布式应用程序之后,能够调用各个计算服务器20,自动将分布式应用程序的执行过程分割为多个子任务,并自动执行各个子任务,无需开发人员在进行任何干预。本领域技术人员应知,对于程序而言,当程序需要和操作系统之间发生交互时,如从操作系统中获取某些数据时,需要通过API(Application Programming Interface,应用程序编程接口)进行数据获取,因此在本发明实施例中,为了满足分布式应用程序与各个计算服务器内的操作系统之间的交互,也需要开发类似于API的接口,这里称之为编程接口,在各个计算服务器20中均设置有编程接口,分布式应用程序通过调用编程接口获取任务参数和任务身份,以及执行计算服务器20之间的通信、计算服务器20与中心服务器10之间的通信。

具体地,各个计算服务器20中均设置有编程接口;执行主任务的计算服务器20通过调用编程接口获取主任务的任务身份和主任务的任务参数,以及通过调用编程接口将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器10,执行子任务的计算服务器20通过调用编程接口获取子任务的任务身份和子任务的任务参数,以及通过调用编程接口将子任务的执行结果发送至执行主任务的计算服务器10。

如图3所示,本实施例中各个计算服务器20中均设置有编程接口,该编程接口的意义与操作系统的API概念相同,在计算服务器20中,编程接口以动态库的形态存在,分布式应用程序调用编程接口时,则编程接口的动态库就会运行在用户进程中,分布式应用程序只要与编程接口的动态库建立联系就可以实现对用户进程的控制。

本实施例中,通过在各个计算服务器20中设置编程接口,能够使得开发人员编写分布式应用程序的方式与开发普通程序非常类似,让开发人员像开发通用多任务程序一样开发分布式多任务程序,尤其是创建多任务的方法与通用操作系统创建多线程非常相似,这对于开发人员上手来说非常容易。并且,通过在各个计算服务器20中设置编程接口,能够使得分布式应用程序主动与操作系统发生交互,在执行子任务的计算服务器20内,分布式应用程序主动获取子任务的任务参数,从而主动调用各个子任务,这种子任务的调用方式对于开发人员理解分布式应用程序的执行流程非常有帮助。

综上,本发明实施例具有以下技术效果。

(1)通过中心服务器和多个计算服务器之间的系统结构,使得开发人员只需要编写一个分布式应用程序,就可以自动将分布式应用程序的执行过程分割为多个子任务,减少开发人员编程量;

(2)通过在各个计算服务器中设置类似于通用操作系统中的API的编程接口,使得开发人员能够采用类似通用操作系统创建多任务的方式开发分布式计算系统的多任务程序,对于开发人员易于理解和维护;

(3)通过在各个计算服务中设置类似于通用操作系统中的API的编程接口,使得分布式应用系统在计算服务器中主动调用子任务的任务参数,主动调用子任务,从而使分布式应用程序采用程序主动调用而非被动调用逻辑的方式执行子任务,这对于开发人员理解应用程序执行流程非常有用;

(4)本实施例中很难过编译分布式应用程序无需专用的编译器,各个操作系统的通用编译器均可。

对应上述的分布式任务调度系统,本发明实施例还提供了一种分布式任务调度方法,如图4所示,该方法包括:

步骤S401,中心服务器获取分布式应用程序和分布式应用程序的执行请求,其中,分布式应用程序在执行时对应为一个主任务和多个子任务,执行请求包括主任务的任务身份和主任务的任务参数;

步骤S402,中心服务器确定执行主任务的计算服务器,向执行主任务的计算服务器发送分布式应用程序、主任务的任务身份和主任务的任务参数;

步骤S403,执行主任务的计算服务器根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务;

步骤S404,执行主任务的计算服务器确定各个子任务的任务参数和各个子任务之间的执行顺序,根据各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器。

本发明实施例中,中心服务器10在获取到分布式应用程序后,将分布式应用程序、主任务的任务身份和主任务的任务参数发送至执行主任务的计算服务器20,执行主任务的计算服务器20根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务。由于通过本发明实施例中的方法,开发人员无需分别开发任务分割模块和任务执行模块,只需要编写一个分布式应用程序就能够实现各个子任务的分割,因此与现有技术相比,本发明实施例中的方法代码编写量小,能够缓解现有技术中并行计算程序开发方式代码编写量大、开发人员开发任务重的问题。

主任务的任务参数包括子任务数量和/或子任务大小;执行主任务的计算服务器根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务,包括:(1)执行主任务的计算服务器根据主任务的任务身份确定执行主任务;(2)当主任务的任务参数包括子任务数量或子任务大小时,执行主任务的计算服务器按照子任务数量或子任务大小将分布式应用程序的执行过程分割为多个子任务;(3)当主任务的任务参数包括子任务数量和子任务大小时,执行主任务的计算服务器比较子任务数量和子任务大小的优先级,按照优先级最高的参数将分布式应用程序的执行过程分割为多个子任务,或者,根据子任务数量最少原则将分布式应用程序的执行过程分割为多个子任务,或者,根据子任务数量最多原则将分布式应用程序的执行过程分割为多个子任务。

上述根据各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器,包括:(1)当各个子任务为并行执行时,依次将各个子任务的任务参数和各个子任务的执行请求发送至中心服务器;(2)当各个子任务为串行执行时,将当前子任务的任务参数和执行请求发送至中心服务器,当获取到当前子任务的执行结果时,将执行结果作为当前子任务的下一个子任务的任务参数的一部分,将下一个子任务的任务参数和执行请求发送至中心服务器。

上述方法还包括:中心服务器接收执行主任务的计算服务器发送的子任务的任务参数以及子任务的执行请求,确定执行子任务的计算服务器,将分布式应用程序、接收到的子任务的任务参数以及子任务的任务身份发送至执行子任务的计算服务器;执行子任务的计算服务器根据子任务的任务身份、子任务的任务参数以及分布式应用程序执行子任务,将子任务的执行结果发送至执行主任务的计算服务器。

本发明实施例中的方法涉及的分布式任务调度系统中,各个计算服务器中均设置有编程接口;执行主任务的计算服务器根据主任务的任务身份和主任务的任务参数将分布式应用程序的执行过程分割为多个子任务之前,本方法还包括:执行主任务的计算服务器通过调用编程接口获取主任务的任务身份和主任务的任务参数;根据各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器,包括:通过调用编程接口根据各个子任务之间的执行顺序将各个子任务的任务参数以及各个子任务的执行请求发送至中心服务器。

执行子任务的计算服务器根据子任务的任务身份、子任务的任务参数以及分布式应用程序执行子任务之前,本方法还包括:执行子任务的计算服务器通过调用编程接口获取子任务的任务身份和子任务的任务参数;将子任务的执行结果发送至执行主任务的计算服务器,包括:通过调用编程接口将子任务的执行结果发送至执行主任务的计算服务器。

综上,本发明实施例具有以下技术效果。

(1)通过中心服务器和多个计算服务器之间的系统结构,使得开发人员只需要编写一个分布式应用程序,就可以自动将分布式应用程序的执行过程分割为多个子任务,减少开发人员编程量;

(2)通过在各个计算服务器中设置类似于通用操作系统中的API的编程接口,使得开发人员能够采用类似通用操作系统创建多任务的方式开发分布式计算系统的多任务程序,对于开发人员易于理解和维护;

(3)通过在各个计算服务中设置类似于通用操作系统中的API的编程接口,使得分布式应用系统在计算服务器中主动调用子任务的任务参数,主动调用子任务,从而使分布式应用程序采用程序主动调用而非被动调用逻辑的方式执行子任务,这对于开发人员理解应用程序执行流程非常有用;

(4)本实施例中很难过编译分布式应用程序无需专用的编译器,各个操作系统的通用编译器均可。

本发明实施例所提供的系统可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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