首页> 中国专利> 一种用于为构建过程中的任务分配资源的方法和系统

一种用于为构建过程中的任务分配资源的方法和系统

摘要

本发明属于软件工程领域,公开了一种用于为构建过程中的任务分配资源的方法。该构建过程包括多个任务,该方法包括:获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任务类型;获取执行元数据,所述执行元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结果;根据所述任务元数据和所述执行元数据确定所述第二任务需要的资源。本发明还公开了一种用于为构建过程中的任务分配资源的系统。通过采用本发明提供的方法和系统,可以动态的确认构建过程中的任务所需的资源,并据此进行动态的资源分配,从而提高资源的利用率,也提高了构建过程的效率。

著录项

  • 公开/公告号CN104123184A

    专利类型发明专利

  • 公开/公告日2014-10-29

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201310154425.3

  • 申请日2013-04-28

  • 分类号G06F9/50(20060101);

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人张亚非;于静

  • 地址 美国纽约

  • 入库时间 2023-12-17 01:34:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-04-04

    未缴年费专利权终止 IPC(主分类):G06F 9/50 专利号:ZL2013101544253 申请日:20130428 授权公告日:20171222

    专利权的终止

  • 2017-12-22

    授权

    授权

  • 2014-12-03

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20130428

    实质审查的生效

  • 2014-10-29

    公开

    公开

说明书

技术领域

本发明涉及软件工程领域,更具体地,涉及一种用于为构建过程中的任务 分配资源的方法和系统。

背景技术

在软件工程中,构建(build)系统得到越来越广泛的应用。一个构建过程 通常包括了从获取软件代码一直到形成可发布软件产品的多个阶段。图2示出 了一个典型的构建过程。这个构建过程中包括了多个任务,如获取源代码、编 译、运行测试例、以及发布。

对于每一个构建过程,需要消费相应的资源,通常会在最初阶段静态分配 相应的资源。这些静态分配的资源在构建过程中不会动态变化,从而导致整个 构建过程中有时资源过剩而其他构建过程无法消费过剩的资源,而有时资源不 足导致构建过程的时间过长。

发明内容

考虑到解决现有技术中存在的问题,本发明实施例提供了一种用于为构建 过程中的任务分配资源的方法,以提高资源利用效率。进一步的本发明实施例 还提供了一种用于为构建过程中的任务分配资源的系统。

根据本发明的一个方面,提供了一种用于为构建过程中的任务分配资源的 方法,所述构建过程包括多个任务,所述方法包括获取任务元数据,所述任务 元数据包括所述多个任务中第二任务的任务类型;获取执行元数据,所述执行 元数据包括所述多个任务中第一任务的执行结果,其中所述第二任务依赖所述 第一任务的执行结果;根据所述任务元数据和所述执行元数据确定所述第二任 务需要的资源。

根据本发明的另一个方面,提供了一种用于为构建过程中的任务资源分配 的系统,其中,所述构建过程包括多个任务,所述系统包括:第一捕获模块, 被配置为获取任务元数据,所述任务元数据包括所述多个任务中第二任务的任 务类型;第二捕获模块,被配置为获取执行元数据,所述执行元数据包括所述 多个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行 结果;资源需求确认模块,被配置为根据所述第一捕获模块获取的任务元数据 和所述第二捕获模块获取的执行元数据确定所述第二任务需要的资源。

本发明所提供的技术方案可以在构建过程中动态的分配资源,从而提高资 源的使用效率。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以 及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中, 相同的参考标号通常代表相同部件。

图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12 的框图;

图2示出了一种典型的构建过程的示例;

图3示出了本发明实施例一种用于为构建过程中的任务分配资源的方法的 流程示意图;

图4示出了本发明实施例一种用于为构建过程中的任务分配资源的系统的 结构示意图;

图5示出了本发明实施例另一种用于为构建过程中的任务分配资源的系统 的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了 本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被 这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透 彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。

所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程 序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也 可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结 合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施 例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品 的形式,该计算机可读介质中包含计算机可读的程序代码。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以 是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可 以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或 器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的 列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机 存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪 存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、 或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包 含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或 者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据 信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种 形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计 算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介 质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或 者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—— 但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计 算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、 Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的 程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算 机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算 机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形 中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网 (WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服 务提供商来通过因特网连接)。

下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程 图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图 和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序占 领可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器, 从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理 装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。

也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理 装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的 指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指 令装置(instruction means)的制造品(manufacture)。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其 它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列 操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上 执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过 程。

图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12 的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实 施例的功能和使用范围带来任何限制。

如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机 系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元 16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16) 的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控 制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线 结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构 (ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准 协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可 以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失 性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随 机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以 进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。 仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1 未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移 动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光 盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况 下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器 28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模 块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如 存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者 多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合 中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的 功能和/或方法。

计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向 设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/ 服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或 多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。 这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器 12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域 网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过 总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出, 可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于: 微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱 动器以及数据备份存储系统等。

现在参看图3,图3示出了本发明实施例提供的一种用于为构建过程中的 任务分配资源的方法。该方法包括:步骤310,获取任务元数据;步骤320,获 取执行元数据;步骤330,根据所述任务元数据和所述执行元数据确定所述第 二任务需要的资源。其中,任务元数据包括第二任务的任务类型;执行元数据 包括:第一任务的执行结果;所述第二任务依赖所述第一任务的执行结果。本 实施例中构建过程包括多个任务。

采用本实施例提供的方法,对于依赖于第一任务执行结果的第二任务,可 以根据第一任务的执行结果以及第二任务的任务类型来确定第二任务所需要的 资源,从而能够根据现有可用的资源为第二任务合理的分配现有资源。进而使 得在整个的构建过程中,随着不同任务的执行,动态的进行资源分配。例如可 以为CPU密集型的任务分配更多的计算资源,而为网络密集型的任务分配较多 的网络资源。这样既能避免在构建过程开始前静态分配资源所导致的资源无法 充分利用,也可以避免由于静态分配资源所导致的资源不足而造成的构建过程 时间过长。

在本发明一实施例中,构建过程例如包括从软件代码到可发布软件产品所 执行的多个任务。本发明并不将构建过程限制于此,也可以仅包括上述多个任 务中的至少两个,或者可以包括更多的任务,例如上载、部署等。构建过程可 以包括多个组件(component)的构建,也可以仅包括一个组件的构建。构建过 程可以按照阶段进行,例如先获取所有组件的源代码,再对所有组件的源代码 进行编译;或者构建过程也可以按照组件进行,例如先获取组件A的源代码, 对组件A的源代码进行编译等,然后获取组件B的源代码,对组件B的源代码 进行编译等;或者构建过程中的任务还可以按照其它预定的顺序执行。本发明 并不限制构建过程中任务的执行顺序。

图3所示的实施例中,任务类型例如包括获取源代码、编译、运行测试例、 上载、部署等。资源例如包括网络资源、CPU资源、内存资源以及硬盘资源等。 在虚拟环境或者云环境中,资源例如包括虚拟网络资源、虚拟CPU资源、虚拟 内存资源以及虚拟硬盘资源等。执行结果例如包括取回的代码数量,测试用例 的多少,编译得到的包的大小等。本发明并不将任务类型、资源以及执行结果 限制在上述示例中。构建过程中,任务之间存在着依赖关系,也即某一任务直 接受到其他一个或多个任务的执行结果的影响。例如编译依赖获取源代码的执 行结果;构建结果上载等任务与获取源代码之间仅存在间接的关系,不属于依 赖;再例如,构建结果上载以及应用部署都依赖编译的执行结果。在本发明一 实施例中,任务之间的依赖关系会因采用的技术手段不同或者任务的执行顺序 不同而变化。例如,若在获取源代码任务后通过对源代码的扫描获知测试例的 数量,则运行测试例任务依赖获取源代码的执行结果;若通过对编译好的代码 进行分析获知测试例的数量,则运行测试例任务只间接受到获取源代码的任务 的影响。

本发明一实施例中,步骤310可以是从构建任务配置文件中获取任务元数 据。在配置文件中例如可以包括任务的类型、任务的执行顺序、任务的依赖关 系等。本领域技术人员可以理解,还可以采用其它技术手段获取任务元数据。 例如,可以在构建过程中通过对第一任务或者其它已经执行完毕的任务的执行 结果进行分析来获取任务元数据。例如,可以通过构建管道分析获取任务之间 的依赖关系。构建管道分析还可以获知任务的工作负载特征,例如任务属于计 算密集型或者内存密集型等。

本发明一实施例中,步骤320可以是在构建过程中捕获执行元数据。该步 骤例如可以在整个构建过程中不断重复执行。本领域技术人员可以理解,可以 采用各种技术手段来实现执行元数据的捕获。例如,对于获取源代码的执行结 果以及编译的执行结果可以通过静态扫描来获知取回的数量以及编译得到的包 的大小。本发明一实施例中,可以仅捕获执行结果中与第二任务资源需求相关 的部分。

本发明一实施例中,步骤330例如可以根据预定规则或者算法来依据任务 元数据和执行元数据来确定第二任务需要的资源。例如步骤310中获取的任务 元数据为第二任务的任务类型为编译。第二任务依赖第一任务,该第一任务为 获取源代码。步骤320中获取的执行元数据为第一任务的执行结果为获取了10 万行的源代码。步骤330根据预定规则或者算法确定编译10万行源代码需要计 算密集型的资源分配。

与在构建过程开始或者之前静态分配资源相比,上述实施例提供的方法可 以实现动态的资源分配。例如,采用静态资源分配方案,在构建过程A开始之 前为该构建过程A分配8个CPU,8G内存,50M带宽以及20G硬盘。在执行获 取源代码的任务时,需要2个CPU,4G内存,100M带宽以及10G硬盘。可以看 到6个CPU的计算资源和4G内存资源都处于闲置状态,没有得到充分的利用, 同时由于这些资源已经被分配给构建过程A,它们也不能被其它的应用所利用。 同时,由于为构建过程A分配的带宽资源不足,获取源代码任务需要更长的时 间才能完成。如果采用上述实施例提供的方法,可以在执行获取源代码任务时 动态的分配2个CPU、4G内存、100M带宽和10G硬盘资源,并在之后进行编译、 运行测试例时动态调整资源分配。例如当构建过程执行编译阶段时,根据任务 类型和之前获得的执行结果如项目数量、代码数量、编译并行度等,为编译任 务分配8个CPU、8G内存、50M带宽以及20G硬盘。通过对比可以非常明显的 看出,上述实施例提供的方法能够提高资源的利用效率并且尽可能的提高构建 过程的效率。

本发明一实施例中,任务元数据包括所述多个任务之间的依赖关系,所述 多个任务之间的依赖关系用于指示所述多个任务中的某一任务依赖所述多个任 务中的其它一个或多个任务的执行结果。图3所示的实施例在步骤330之前还 可以包括步骤:根据刚执行完的任务以及所述多个任务之间的依赖关系确定需 要为所述第二任务分配资源。本领域技术人员可以理解,根据任务之间的依赖 关系,只要第二任务所依赖的任务都执行完毕,无论下一个执行的任务是否为 第二任务都可以为第二任务确定需要的资源。若下一个执行的任务不是第二任 务,则还可以把确定的第二任务所需要的资源记录下来,以备以后为第二任务 分配资源时使用。

本发明一实施例中,所述任务元数据进一步包括执行顺序数据,所述执行 顺序数据用于指示所述多个任务之间的执行顺序。如图3所示的实施例所提供 的方法还可以包括:获取资源元数据,所述资源元数据用于指示当前可用资源; 执行顺序数据确定下一个执行的任务为所述第二任务;根据所述资源元数据以 及确定的所述第二任务需要的资源为所述第二任务分配资源。当前任务执行完 毕以后,可以根据执行顺序确定下一个执行的任务,当下一个执行的任务为第 二任务时,由于之前已经确定了该第二任务所需要的资源,就可以根据当前可 用资源以及第二任务需要的资源为第二任务分配资源了。本领域技术人员可以 理解,可以采用各种技术手段来获取资源元数据,例如利用基础设施即服务 (Infrastructure as A Service,IaaS)监控服务获知物理资源或者虚拟资源 的使用信息,从而得知可用的资源。例如还可以获取可用资源的快照来获知某 一时刻或最新的可用资源。通过获知当前可用的资源,根据通过上述实施例确 定的第二任务需要的资源,可以实现为第二任务合理的分配资源。具体的资源 分配可以根据现有的算法实现,例如根据构建任务的权重或者期望交付的构建 能力,基于轮叫调度(Round Robin调度)算法进行资源的分配。获取资源元 数据的步骤在构建过程中例如可以重复执行。本领域技术人员可以理解,获取 资源元数据的步骤可以在确定第二任务需要的资源的步骤之后执行、之后执行 或者同时执行。例如,软件产品B包括组件1和组件2。对于软件产品B的构 建过程B包括了任务1至任务8。其中任务1为获取组件1的源代码;任务2 为编译组件1的源代码;任务3为运行组件1的测试例;任务4为上载组件1; 任务5为获取组件2的源代码;任务6为编译组件2的源代码;任务7为运行 组件2的测试例;任务8为上载组件2。构建过程B可以是按照顺序执行任务1、 2、3、4、5、6、7、8,或者可以是按照顺序执行任务1、5、2、4、3、7、4、 8。构建过程B还可以按照其它顺序执行上述任务,只要符合任务之间的依赖关 系即可。举例而言,若执行任务1之后执行任务5,则确认任务2需要的资源 可以在任务1刚刚执行完毕之后进行,也可以在任务5执行完毕之后进行。在 本发明一实施例中,可以将获得的任务元数据、执行元数据以及资源元数据聚 合为单个文件。将资源分配的具体算法、策略等运用到该单个文件可以实现具 体的资源分配。在本发明一实施例中,可以将上述任务元数据、执行元数据和 资源元数据的内容复制到单个文件中,并按照预定的规则组织这些元数据以形 成用于资源分配的单个文件。本发明实施例并不限制实施聚合的具体技术手段。 本领域技术人员可以理解,还可以将上述任务元数据、执行元数据和资源元数 据记录为内存中的一个记录的形式来完成资源分配。

本发明一实施例中,所述执行元数据进一步包括执行阶段数据,所述执行 阶段数据用于指示当前的某一任务执行完毕。根据刚执行完的任务以及所述多 个任务之间的依赖关系确定需要为所述第二任务分配资源的步骤可以包括:根 据执行阶段数据以及所述多个任务之间的依赖关系确定需要为所述第二任务分 配资源。

本发明一实施例中,多个任务之间的依赖关系不仅仅可以通过获取得到, 其也可以是预设的,或者还可以是默认的。执行阶段数据可以是直接指示当前 任务执行完毕,或者也可以是当前任务执行完毕的条件。在条件满足时可以确 定当前任务执行完毕。本领域技术人员可以理解,除了获取执行阶段数据,也 可以通过其它手段来获知当前任务执行完毕,例如在得到了当前任务执行结果 时就认为当前任务执行完毕。

本发明一实施例中,如图3所示的实施例提供的方法在步骤330之前还可 以包括:根据执行顺序数据确定下一个执行的任务为第二任务,并确认需要为 该第二任务分配资源。可以理解,确认需要为第二任务分配资源不但可以在第 二任务所依赖的所有任务都执行完毕时执行,或者在所有任务都执行完毕后一 段时间执行,也可以在确定将要执行第二任务时执行。

本发明一实施例中,根据所述执行顺序数据确定下一个执行的任务为所述 第二任务的步骤还可以包括:根据执行顺序数据以及执行阶段数据判断下一个 执行的任务为所述第二任务。

本发明一实施例中,任务元数据进一步包括第一任务的任务类型。图3所 示实施例进一步包括:根据所述第一任务的任务类型确定所述第一任务需要的 资源。在构建过程中,对于第一任务可以是采用现有技术静态为其分配资源, 也可以根据第一任务的任务类型确定其需要的资源。例如,每种任务类型对应 有默认的需要的资源,在获取了第一任务的任务类型后,可以得知第一任务需 要的资源。在本发明一实施例中,根据任务类型确定需要的资源例如是针对每 个组件最先执行的任务或者整个构建过程最先执行的任务。

在本发明一实施例中,执行元数据例如还可以包括执行异常信息。在捕获 到执行异常信息之后,可以停止资源分配。

本发明上述实施例之间可以彼此参照、结合,得到更多的实施例。例如, 图3所示的实施例可以同时包括获取资源元数据并分配资源的步骤以及确认第 一任务需要的资源的步骤。

参照图4,本发明实施例提供了一种用于为构建过程中的任务分配资源的 系统400。该构建过程包括多个任务。该系统400包括:第一捕获模块410被 配置为获取任务元数据,所述任务元数据包括该多个任务中第二任务的任务类 型;第二捕获模块420,被配置为获取执行元数据,所述执行元数据包括该多 个任务中第一任务的执行结果,其中所述第二任务依赖所述第一任务的执行结 果;资源需求确认模块430,被配置为根据所述第一捕获模块获取的任务元数 据和所述第二捕获模块获取的执行元数据确定所述第二任务需要的资源。

采用本实施例提供的系统,对于依赖于第一任务执行结果的第二任务,可 以根据第一任务的执行结果以及第二任务的任务类型来确定第二任务所需要的 资源,从而能够根据现有可用资源为第二任务合理的分配资源。进而使得在整 个的构建过程中,随着不同任务的执行,动态的进行资源分配。

在本发明一实施例中,任务元数据包括所述多个任务之间的依赖关系,所 述多个任务之间的依赖关系用于指示所述多个任务中的某一任务依赖所述多个 任务中的其它一个或多个任务的执行结果。系统400进一步包括:第一待分配 确认模块440,被配置为根据刚执行完的任务以及所述多个任务之间的依赖关 系确定需要为所述第二任务分配资源。本实施例中,资源需求确认模块430被 进一步配置为在所述第一待分配确认模块440确定需要为所述第二任务分配资 源后,根据所述第一捕获模块410获取的任务元数据和所述第二捕获模块420 获取的执行元数据确定所述第二任务需要的资源。

本发明一实施例中,所述任务元数据进一步包括执行顺序数据,所述执行 顺序数据用于指示所述多个任务之间的执行顺序。系统400进一步包括:第三 捕获模块450被配置为获取资源元数据,所述资源元数据用于指示当前可用资 源;待执行确认模块460,被配置为根据所述执行顺序数据确定下一个执行的 任务为所述第二任务;第一资源分配模块470,被配置为根据所述资源元数据 以及确定的所述第二任务需要的资源为所述第二任务分配资源。

本发明一实施例中,执行元数据进一步包括执行阶段数据,所述执行阶段 数据用于指示当前的某一任务执行完毕。第一待分配确认模块440进一步被配 置为根据所述执行阶段数据以及所述多个任务之间的依赖关系确定需要为所述 第二任务分配资源。

如图5所示,本发明一实施例中,系统500包括第一捕获模块510,第二 捕获模块520,需求确认模块530。上述模块的具体实现方式以及连接关系可以 参照图4所示实施例的相应部分。任务元数据进一步包括执行顺序数据,所述 执行顺序数据用于指示所述多个任务之间的执行顺序。系统500还包括第二待 分配确认模块540,被配置为根据所述执行顺序数据确定下一个执行的任务为 所述第二任务,并确认需要为所述第二任务分配资源。资源需求确认模块530 进一步被配置为在所述第二待分配确认模块540确定需要为所述第二任务分配 资源后,根据所述第一捕获模块510获取的任务元数据和所述第二捕获模块520 获取的执行元数据确定所述第二任务需要的资源。

本发明一实施例中,执行元数据进一步包括执行阶段数据,所述执行阶段 数据用于指示当前的某一任务执行完毕。第二待分配确认模块540进一步被配 置为根据所述执行顺序数据以及所述执行阶段数据判断下一个执行的任务为所 述第二任务。

本发明一实施例中,系统400和系统500均可包括第四捕获模块以及第二 资源分配模块。其中第四捕获模块被配置为获取资源元数据,所述资源元数据 用于指示当前可用资源;第二资源分配模块,被配置为根据确定的所述第二任 务需要的资源以及所述资源元数据为所述第二任务分配资源。

根据上述实施提供的系统400和500,可以实现构建过程中的动态资源分 配,以提高资源的利用效率,并保证构建过程的有效进行。

本发明上述装置实施例中的实现细节可以参照相应的方法实施例,此处不 再赘述。并且上述装置实施例之间可以彼此参照、结合,得到更多的实施例。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计 算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图 中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段 或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应 当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图 中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它 们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框 图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用 执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件 与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的, 并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的 情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。 本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场 中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露 的各实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号