CN115794384A - 代码编译任务分配方法、装置、设备及存储介质 - Google Patents
代码编译任务分配方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115794384A CN115794384A CN202211418941.8A CN202211418941A CN115794384A CN 115794384 A CN115794384 A CN 115794384A CN 202211418941 A CN202211418941 A CN 202211418941A CN 115794384 A CN115794384 A CN 115794384A
- Authority
- CN
- China
- Prior art keywords
- compiling
- slave server
- compiled
- target
- slave
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供一种代码编译任务分配方法、装置、设备及存储介质。该方法包括:获取历史编译记录、待编译任务以及各从服务器的可用资源量,待编译任务包括待编译代码库标识和编译需求信息;从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;从各第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器;根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。本申请的方案能够提高代码编译的效率。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种代码编译任务分配方法、装置、设备及存储介质。
背景技术
由高级语言组成的源代码需要编译为机器语言才可以被计算机执行,现目前,主要采用主从服务器方式分配代码编译任务并对代码库中的源代码进行编译。在多台从服务器上配置编译资源,并由主服务根据各从服务器上编译资源的占用情况,将代码编译任务分配至从服务器,由从服务器使用其编译资源对代码库中的源代码进行编译。
现有技术中,主服务器仅根据从服务器上的编译资源的占用情况分配代码编译任务。但在实际的编译过程中,对不同代码库中的源代码进行编译时,可能需要配置不同的编译环境,而不同的编译环境需要不同的依赖包,在从服务器上没有配置代码库的编译环境的依赖包时,从服务器需要下载依赖包并配置编译环境,降低了代码编译效率。
发明内容
本申请提供一种代码编译任务分配方法、装置、设备及存储介质,用以解决现有技术中代码编译效率低的问题。
根据本申请的第一方面,提供一种代码编译任务分配方法,应用于主服务器,主服务器与至少一个从服务器通信连接,包括:
获取历史编译记录、待编译任务以及各从服务器的可用资源量,所述待编译任务包括待编译代码库标识和编译需求信息;
根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;
根据所述待编译代码库标识和所述历史编译记录,从各所述第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器;
根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
作为一种可选的实施方式,所述编译需求信息包括编译资源需求量,所述根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器,包括:将可用资源量大于所述编译资源需求量的从服务器确定为第一类候选从服务器。
作为一种可选的实施方式,所述根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,包括:根据所述待编译代码库标识和所述编译需求信息确定预计编译时长;若确定所述预计编译时长小于或等于预设编译时长,则将各第二类候选从服务器中的一个确定为目标从服务器,并将待编译任务分配到所述目标从服务器上执行;若确定所述预计编译时长大于预设编译时长,则根据所述待编译代码库标识及所述编译需求信息,将各第二类候选从服务器中的至少一个确定为所述目标从服务器,并将待编译任务分配到各所述目标从服务器上执行。
作为一种可选的实施方式,所述编译需求信息包括测试需求信息和拆分需求信息,所述测试需求信息为无测试需求或有测试需求;所述根据所述待编译代码库标识及所述编译需求信息,将各第二类候选从服务器中的至少一个确定为所述目标从服务器,并将待编译任务分配到各所述目标从服务器上执行,包括:若确定所述测试需求信息为无测试需求,则确定所述待编译任务包括编译步骤;若确定所述测试需求信息为有测试需求,则将确定所述待编译任务包括编译步骤和至少一个测试步骤;根据所述待编译代码库标识和所述拆分需求信息确定执行所述编译步骤的至少一个目标编译从服务器,并将所述编译步骤分配到各目标编译从服务器上执行,其中,各所述目标编译从服务器中包括至少一个第二类候选从服务器;若确定存在至少一个测试步骤,则根据测试步骤的数量确定执行各所述测试步骤的至少一个目标测试从服务器,并将各测试步骤分配到各目标测试从服务器上执行。
作为一种可选的实施方式,所述根据测试步骤的数量确定执行各所述测试步骤的至少一个目标测试从服务器,包括:将除目标编译从服务器之外的其它从服务器确定为第三类候选从服务器;将至少一个且至多与测试步骤数量相同的第三类候选从服务器确定为所述目标测试从服务器;将各测试步骤分配至各目标测试从服务器上执行,并且各目标测试从服务器上被分配有至少一个测试步骤。
作为一种可选的实施方式,所述拆分需求信息为有拆分需求或无拆分需求;所述根据所述待编译代码库标识和所述拆分需求信息确定执行所述编译步骤的至少一个目标编译从服务器,并将所述编译步骤分配到各目标编译从服务器上执行,包括:若确定所述拆分需求信息为无拆分需求,则根据所述待编译代码库标识确定待编译编代码库中待编译源码的逻辑结构,并根据待编译源码的逻辑结构确定所述编译步骤包括的至少一个编译子步骤;根据所述编译子步骤的数量和所述第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行。
作为一种可选的实施方式,所述根据所述编译子步骤的数量和所述第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行,包括:若确定所述编译子步骤的数量M小于所述第二类候选从服务器的数量N,则将第一预设数量P1的第二类候选从服务器确定为目标编译从服务器,并将第二预设数量P2的第一类候选从服务器确定为目标编译从服务器;所述第一预设数量P1∈[1,M];所述第二预设数量P2∈[0,M-P1];若确定所述编译子步骤的数量M大于或等于所述第二类候选从服务器的数量N,则第三预设数量P3的第二类候选从服务器确定为目标编译从服务器,并将第四预设数量P4的第一类候选从服务器确定为目标编译从服务器;所述第三预设数量P3∈[1,N];所述第四预设数量P4∈[0,M-P1];将各编译子步骤分配到各目标编译从服务器上执行,并且各目标编译从服务器上被分配有至少一个编译子步骤。
作为一种可选的实施方式,所述根据所述编译子步骤的数量和所述第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行之前,还包括:若确定所述拆分需求信息为有拆分需求,则根据所述拆分需求信息确定所述编译步骤包括的至少两个编译子步骤。
根据本申请的第二方面,提供一种代码编译任务分配装置,应用于主服务器,主服务器与各从服务器通信连接,包括:
获取模块,用于获取待编译任务及其对应的待编译代码库标识和编译需求信息、历史编译记录以及各从服务器的可用资源量;
第一筛选模块,用于根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;
第二筛选模块,用于根据所述待编译代码库标识及其对应的历史编译记录,从各所述第一类候选从服务器中筛选出至少一个第二类候选从服务器,所述第二类候选从服务器执行过包括待编译代码库标识的历史编译任务;
分配模块,用于根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
根据本申请的第三方面,提供一种电子设备,包括:处理器以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面中所述的方法。
根据本申请的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面中所述的方法。
本申请提供的代码编译任务分配方法、装置、设备及存储介质,应用于主服务器,主服务器与至少一个从服务器通信连接,通过获取历史编译记录、待编译任务以及各从服务器的可用资源量,所述待编译任务包括待编译代码库标识和编译需求信息;根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;根据所述待编译代码库标识和所述历史编译记录,从各所述第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器;根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。由于第一类候选从服务器的可用资源量满足待编译任务的执行要求,第二类候选从服务器执行过包括与待编译代码库标识相同的历史编译任务,因此,第二类候选从服务器上已经下载过对待编译代码库中的待编译源代码进行编译所需要的依赖包,并且,满足待编译任务的执行要求。同时,由于根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,各目标从服务器中包括至少一个第二类候选从服务器,因此,再将待编译任务分配到各目标从服务器上执行,待编译任务在执行时,第二类目标从服务器不需要下载对待编译代码库中的待编译源代码进行编译所需要的依赖包。综上,本申请的方案能够提高代码编译的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据本申请实施例提供的应用场景对应的网络架构图;
图2是根据本申请实施例一提供的代码编译任务分配方法的流程示意图;
图3是根据本申请实施例二提供的代码编译任务分配方法的流程示意图;
图4是根据本申请实施例三提供的代码编译任务分配方法的流程示意图;
图5是根据本申请实施例四提供的代码编译任务分配方法的流程示意图;
图6是根据本申请实施例五提供的代码编译任务分配装置的结构示意图;
图7是根据本申请实施例六提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
以下对本申请所涉及的现有技术进行详细说明及分析。
现有技术中,采用主从编译方式,包括一台主服务器和多台从服务器,并且,多台从服务器上配置有编译资源。在需要在编译代码库中的源代码时,主服务器将编译任务随机分配至空闲的从服务器,由从服务器开展代码编译。从服务器在执行编译任务时,首先需要配置代码的编译环境,不同代码库中的源代码可能需要不同的编译环境,而不同的编译环境需要不同的依赖包。如果从服务器在执行编译任务时,没有预先下载好编译需要的依赖包,就需要从数据库或互联网下载依赖包,消耗时间,降低了代码编译效率。
综上,现有技术中存在代码编译效率低的问题。
所以,在面对现有技术中的问题时,发明人通过创造性研究,为了提高代码编译效率,就需要执行编译任务的从服务器提前下载好编译环境依赖包。因此,只需要主服务器在分配编译任务时,将编译任务分配至已经预先下载了编译环境所需依赖包的从服务器即可。由于同一代码库中的源代码在多次编译时,需要的编译环境可能不会发生变化或变化很小,因此,已经编译过待编译代码库中待编译源代码的从服务器上,就已经下载了编译环境所需的全部或大部分依赖包。因此,已编译过待编译代码库中待编译源代码的从服务器,在对待编译代码库中的待编译源代码进行编译时,能够节省全部或大部分下载依赖包的时间,提高编译效率。
所以发明人提出本申请方案,应用于主服务器,主服务器与至少一个从服务器通信连接,通过获取历史编译记录、待编译任务以及各从服务器的可用资源量,待编译任务包括待编译代码库标识和编译需求信息;根据编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;根据待编译代码库标识和历史编译记录,从各第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器;根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。由于第一类候选从服务器的可用资源量满足待编译任务的执行要求,第二类候选从服务器执行过包括与待编译代码库标识相同的历史编译任务,因此,第二类候选从服务器上已经下载过对待编译代码库中的待编译源代码进行编译所需要的依赖包,并且,满足待编译任务的执行要求。同时,由于根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,各目标从服务器中包括至少一个第二类候选从服务器,因此,再将待编译任务分配到各目标从服务器上执行,待编译任务在执行时,第二类目标从服务器不需要下载对待编译代码库中的待编译源代码进行编译所需要的依赖包。综上,本申请的方案能够提高代码编译的效率。
本申请提供的代码编译任务分配方法、装置、设备及存储介质,旨在解决现有技术的如上技术问题。下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
下面将对本申请实施例提供的代码编译任务分配方法的网络架构和应用场景进行介绍。下面的描述涉及附图时,除非另有表示,不同附图中的相同数据表示相同或相似的要素。
图1是本申请实施例提供的代码编译任务分配方法的应用场景对应的网络架构图。如图1所示,本申请实施例提供的一种应用场景对应的网络架构中包括:用户终端11、主服务器12、至少一个代码库13和至少一个从服务器14。代码库13中存储有未编译源代码。用户终端与主服务器12通信连接。主服务器12与各从服务器14通信连接。各代码库13与各从服务器14通信连接。
用户终端11上配置有代码编译任务分配应用软件的客户端,或用户终端11访问到代码编译任务分配方法的网址。用户通过客户端的操作界面或网址对应的网页页面选择待编译代码库标识或输入待编译代码库标识,选择或输入编译需求信息,并可以通过“确认”组件触发代码编译请求。用户终端11在接收到用户触发的代码编译请求之后,向主服务器12发送待编译任务,待编译任务包括待编译代码库标识和编译需求信息。
主服务器12配置有代码编译任务分配装置,并作为代码编译任务分配应用应用软件的服务端。主服务器12接收到待编译任务后,可以通过与各从服务器14的通信连接获取各从服务器的可用资源量。主服务器12上可以存储有历史编译记录。
主服务器12根据编译需求信息以及各从服务器14的可用资源量,从各从服务器14中筛选出可用资源量满足执行要求的至少一个第一类候选服务器;根据待编译代码库标识和历史编译记录,从各第一类候选从服务器中筛选出执行过包括带编译代码库相同标识的历史编译任务的第二类候选从服务器;根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
目标从服务器被分配执行待编译任务后,根据待编译代码库标识与待编译代码库通信,获取待编译代码库中的待编译源代码,对待编译源代码进行编译。
下面将结合附图,对本申请的实施例进行描述。以下实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
实施例一
图2是根据本申请实施例一提供的代码编译任务分配方法的流程示意图。如图2所示,本申请的执行主体为代码编译任务分配装置,该代码编译任务分配装置位于主服务器中,主服务器与至少一个从服务器通信连接。本实施例提供的代码编译任务分配方法包括步骤201至步骤204。
步骤201,获取历史编译记录、待编译任务以及各从服务器的可用资源量,待编译任务包括待编译代码库标识和编译需求信息。
本实施例中,历史编译记录是指历史编译任务的分配记录,历史编译任务是指待编译任务之间的编译任务。历史编译记录可以存储在主服务中。
从服务器的可用资源量可以包括从服务器上可用于执行编译任务的中央处理器(CPU)资源和存储资源。其中,存储资源可以包括内存资源和磁盘资源。主服务器可以与各从服务器通信,实时获取各从服务器的可用资源量。
编译需求信息中包括待编译代码库中的待编译源代码在编译时的需求,示例性地,可以包括,编译资源需求量。编译资源需求量是执行编译任务所需的最小资源量,在从服务器的可用资源量小于编译资源量时,从服务器可能无法完成编译任务。
步骤202,根据编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器。
作为一种可选的实施方式,编译需求信息包括编译资源需求量,步骤201包括步骤2021。
步骤2021,将可用资源量大于编译资源需求量的从服务器确定为第一类候选从服务器。
本实施例中,主服务器在获取到各从服务器的可用资源量之后,可以依次比较各从服务器的可用资源量与编译资源需求量之间的大小,将可用资源量大于编译资源需求量的从服务器确定为第一类候选从服务器。
由于将可用资源量大于编译资源需求量的从服务器确定为第一类候选从服务器,因此,能够从各从服务器中筛选出能够执行编译任务的第一类候选从服务器,为编译任务分配打下基础。
步骤203,根据待编译代码库标识和历史编译记录,从各第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器。
本实施例中,历史编译记录中包括历史编译任务以及被分配执行历史编译任务的至少一个历史从服务器。历史编译任务中包括历史编译代码库标识。这里,对于同一个代码库来说,在多次编译时,代码库标识为同一个。
本实施例,可以根据待编译代码库标识,以及历史编译任务中的历史编译代码库标识,从各从服务器中筛选出执行过的历史编译任务中,历史编译代码库表示与待编译代码库标识相同的从服务器。进而,可以根据各第一类候选从服务器以及是否执行过与待编译代码库标识相同的历史编译任务,筛选出第二类候选从服务器。
步骤204,根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
本实施例中,主服务器可以将任意一个或多个第二类候选从服务器确定为目标从服务器,并将待编译任务分配到各目标从服务器上执行。同时,如果第二类候选从服务器的数量较少,主服务器还可以将第一类候选从服务器中的零个、一个或多个也确定为目标从服务器。由多个目标从服务器共同完成待编译任务,提高代码编译效率。
目标从服务器在被分配执行待编译任务之后,从待编译代码库下载待编译源代码,并可以根据待编译源代码的类型,或者待编译源代码中的环境配置信息,确定待编译源代码编译所需的编译环境。由于目标从服务器曾对待编译代码库中的待编译源代码进行过编译,因此,目标从服务器在历史编译过程中,已经下载过配置待编译源代码的编译环境所需的依赖包,在执行待编译任务时,可以直接根据依赖包构建编译环境,进而对待编译源代码进行编译。
本实施例提供的代码编译任务分配方法,通过获取历史编译记录、待编译任务以及各从服务器的可用资源量,待编译任务包括待编译代码库标识和编译需求信息;根据编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;根据待编译代码库标识和历史编译记录,从各第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器;根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。由于第一类候选从服务器的可用资源量满足待编译任务的执行要求,第二类候选从服务器执行过包括与待编译代码库标识相同的历史编译任务,因此,第二类候选从服务器上已经下载过对待编译代码库中的待编译源代码进行编译所需要的依赖包,并且,满足待编译任务的执行要求。同时,由于根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,各目标从服务器中包括至少一个第二类候选从服务器,因此,再将待编译任务分配到各目标从服务器上执行,待编译任务在执行时,第二类目标从服务器不需要下载对待编译代码库中的待编译源代码进行编译所需要的依赖包。综上,本申请的方案能够提高代码编译的效率。
实施例二
图3是根据本申请实施例二提供的代码编译任务分配方法的流程示意图。如图3所示,本实施例提供的代码编译任务分配方法,在上述任意一个实施例的基础上,对步骤204进行细化,则步骤204细化包括步骤301至步骤303。
步骤301,根据待编译代码库标识和编译需求信息确定预计编译时长。
本实施例中,主服务器可以根据待编译代码库标识与待编译代码库通信,从待编译代码库获取到待编译代码库中待编译源代码的数据量和代码类型。其中,数据量可以是待编译源代码的行数或者字节量,示例性地,如3000行或1G等。代码类型可以是待编译源代码的编写语言的类型,示例性地,如java语音、C语言、C#语言或Python语言等。这里,编译源代码的编写语言的类型也就是在执行待编译任务时的编译语言。
主服务器可以根据待编译代码库中待编译源代码的数据量和代码类型,以及编译需求信息计算待编译任务的预计编译时长。
步骤302,若确定预计编译时长小于或等于预设编译时长,则将各第二类候选从服务器中的一个确定为目标从服务器,并将待编译任务分配到目标从服务器上执行。
本实施例中,预计编译时长可以反应待编译任务的复杂度,预计编译时长越长则待编译任务越复杂。如果预计编译时长小于或等于预设编译时长,则表示待编译任务的复杂度较低,可以在一个合理的时间内执行完成,代码编译效率较高。因此,可以从各第二类候选服务器中的任意一个确定为目标从服务器,将待编译任务分配到目标从服务器上执行即可。
步骤303,若确定预计编译时长大于预设编译时长,则根据待编译代码库标识及编译需求信息,将各第二类候选从服务器中的至少一个确定为目标从服务器,并将待编译任务分配到各目标从服务器上执行。
本实施例中,如果预计编译时长大于预设编译时长,则表示待编译任务的复杂度较高,代码编译任务无法在一个合理的时间内执行完成,代码编译效率较低。为进一步提高代码编译的效率,在能够将待编译任务分配到多个从服务器上并列执行的时候,可以从第二类候选服务器中确定出多个目标从服务器,并将待编译任务分配到多个目标从服务器上执行。当然,如果待编译任务无法分配到多个目标从服务器上执行,仅能由一个从服务器从头至尾完成编译任务,则可以将第二类候选从服务器中的任意一个确定为目标从服务器,将待编译任务分配至该目标从服务器上执行即可。
本实施例提供的代码编译任务分配方法,通过根据待编译代码库标识和编译需求信息确定预计编译时长;若确定预计编译时长小于或等于预设编译时长,则将各第二类候选从服务器中的一个确定为目标从服务器,并将待编译任务分配到目标从服务器上执行;若确定预计编译时长大于预设编译时长,则根据待编译代码库标识及编译需求信息,将各第二类候选从服务器中的至少一个确定为目标从服务器,并将待编译任务分配到各目标从服务器上执行。由于在待编译任务的预计编译时长小于预设编译时长时,将一个第二类候选从服务器确定为目标从服务器,因此,在保证代码编译效率的同时能够减少从服务器资源的使用。同时,在待编译任务的预计编译时长大于预设编译时长时,将各第二类候选从服务器中的至少一个确定为目标从服务器,由多个目标从服务器同时执行待编译任务,能够进一步提高代码编译效率。
实施例三
图4是根据本申请实施例三提供的代码编译任务分配方法的流程示意图。如图4所示,本实施例提供的代码编译任务分配方法,在实施例二的基础上,编译需求信息包括测试需求信息和拆分需求信息,测试需求信息为无测试需求或有测试需求,并对步骤303进行细化,则步骤303细化包括步骤401至步骤404。
步骤401,若确定测试需求信息为无测试需求,则确定待编译任务包括编译步骤。
本实施例中,测试需求信息是用户可以选择或者输入的信息,用于指示目标从服务器在执行待编译任务的过程中,执行测试步骤。其中,测试步骤用于对待编译代码进行检查,可以由一个预设应用程序完成,并且无需配置编译环境。
这里,如果测试需求信息为无测试需求,则目标从服务器在执行编译任务的过程中,可以仅执行编译步骤,而不需要对待编译代码进行测试。其中,编译步骤是将待编译源代码转换为计算机可以执行的机器语言,需要配置编译环境才可以执行。
步骤402,若确定测试需求信息为有测试需求,则将确定待编译任务包括编译步骤和至少一个测试步骤。
本实施例中,当测试需求信息为有测试需求时,可以包括质量检测、接口测试和单元测试中的至少一项。
这里,如果测试需求信息为有测试需求,则目标从服务器在执行待编译任务的过程中,除了执行编译步骤对待编译源代码进行编译之外,还需要执行测试步骤以对待编译源代码进行检查。因此,可以确定待编译任务包括编译步骤和至少一个测试步骤。
步骤403,根据待编译代码库标识和拆分需求信息确定执行编译步骤的至少一个目标编译从服务器,并将编译步骤分配到各目标编译从服务器上执行,其中,各目标编译从服务器中包括至少一个第二类候选从服务器。
本实施例中,拆分需求是用户可以选择或者输入的信息,用于指示主服务器在分配编译任务时,如何对待编译代码库中的待编译源代码进行拆分。
可以理解的是,拆分需求可以为有拆分需求或无拆分需求。当拆分需求为有拆分需求时,用户指定了对待编译源代码的拆分方式,主服务器只需按照用户指定到的拆分方式对待编译源代码进行拆分即可。
当拆分需求为无拆分需求时,用户未指定如何对待编译源代码进行拆分,主服务器可以对待编译源代码进行扫描,判断待编译源代码是否能够拆分以及可以如何拆分。
本实施例中,由于编译任务是对待编译代码库中的待编译源代码进行编译,因此,在主服务器对待编译代码库中的待编译源代码进行拆分之后,编译任务可以由一个或多个目标编译从服务器执行,并且只需要保证至少一个目标编译从服务器上配置有编译环境就能够提高代码编译效率。
步骤404,若确定存在至少一个测试步骤,则根据测试步骤的数量确定执行各测试步骤的至少一个目标测试从服务器,并将各测试步骤分配到各目标测试从服务器上执行。
作为一种可选的实施方式,步骤404包括步骤501至步骤503。
步骤501,将除目标编译从服务器之外的其它从服务器确定为第三类候选从服务器。
本实施例中,测试步骤可以由目标测试从服务器执行。由于测试步骤无需配置编译环境,而执行编译步骤的目标编译从服务器需要配置编译环境,因此,为保证目标编译从服务器执行编译步骤的效率,可以将除目标编译从服务器之外的其它从服务器确定为第三类候选从服务器,目标测试从服务器可以从第三类从服务器中选择。
步骤502,将至少一个且至多与测试步骤数量相同的第三类候选从服务器确定为目标测试从服务器。
步骤503,将各测试步骤分配至各目标测试从服务器上执行,并且各目标测试从服务器上被分配有至少一个测试步骤。
本实施例中,目标测试从服务器的数量可以为一个也可以为多个。目标测试从服务器的数量为一个时,各测试步骤均在这一个目标测试从服务器上执行。目标测试从服务器的数量为多个时,各测试步骤可以分配至各目标测试从服务器上执行,并且,目标测试从服务器的数量最多可以与测试步骤的数量相同,以保证每个目标测试从服务器上执行至少一个测试步骤。
本实施例提供的代码编译任务分配方法,通过将除目标编译从服务器之外的其它从服务器确定为第三类候选从服务器;将至少一个且至多与测试步骤数量相同的第三类候选从服务器确定为目标测试从服务器;将各测试步骤分配至各目标测试从服务器上执行,并且各目标测试从服务器上被分配有至少一个测试步骤。由于将无需编译环境的测试步骤分配至目标测试从服务器上执行,在目标编译从服务器执行编译步骤的同时,由目标测试从服务器执行测试步骤,提高待编译任务的执行效率,因此提高了代码编译的效率。
本实施例提供的代码编译任务分配方法,通过若确定测试需求信息为无测试需求,则确定待编译任务包括编译步骤;若确定测试需求信息为有测试需求,则将确定待编译任务包括编译步骤和至少一个测试步骤;根据待编译代码库标识和拆分需求信息确定执行编译步骤的至少一个目标编译从服务器,并将编译步骤分配到各目标编译从服务器上执行,其中,各目标编译从服务器中包括至少一个第二类候选从服务器;若确定存在至少一个测试步骤,则根据测试步骤的数量确定执行各测试步骤的至少一个目标测试从服务器,并将各测试步骤分配到各目标测试从服务器上执行。由于根据测试需求信息确定待编译任务包括的编译步骤和可能包括的测试步骤,并将编译步骤和测试步骤分离,由目标编译从服务器和目标测试从服务器分别执行编译步骤和测试步骤,提高了编译效率。同时,根据拆分信息确定执行编译步骤的至少一个目标编译从服务器,将编译步骤分配至各目标编译从服务器上执行,由各目标编译从服务器并行执行编译步骤,且目标编译从服务器中包括至少一个配置有编译环境的第二候选从服务器,因此,能够进一步提高编译效率。
实施例四
图5是根据本申请实施例四提供的代码编译任务分配方法的流程示意图。如图5所示,在上述任意一个实施例的基础上,拆分需求信息为有拆分需求或无拆分需求,并对步骤403进行细化,则步骤403细化包括步骤601至步骤602。
步骤601,若确定拆分需求信息为无拆分需求,则根据待编译代码库标识确定待编译编代码库中待编译源码的逻辑结构,并根据待编译源码的逻辑结构确定编译步骤包括的至少一个编译子步骤。
本实施例中,如果拆分需求信息为无拆分需求,则用户未指定如何对待编译源代码进行拆分,主服务器可以根据待编译代码库标识与待编译代码库通信,对待编译代码库中的待编译源代码进行扫描,获取到待编译代码库中待编译源代码的逻辑结构。示例性地,待编译源代码可以由多个代码模块构成,待编译源代码的逻辑结构可以是多个代码模块间的主子模块关系,主服务器可以根据多个代码模块间的主子模块关系对源代码进行拆分,同时,将编译步骤拆分为对多个代码模型进行编译的编译子步骤。
步骤602,根据编译子步骤的数量和第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行。
作为一种可选的实施方式,步骤602包括步骤701至步骤703。
步骤701,若确定编译子步骤的数量M小于第二类候选从服务器的数量N,则将第一预设数量P1的第二类候选从服务器确定为目标编译从服务器,并将第二预设数量P2的第一类候选从服务器确定为目标编译从服务器;第一预设数量P1∈[1,M];第二预设数量P2∈[0,M-P1]。
本实施例中,编译子步骤的数量至少为2个,即,M≥2。第二类候选从服务器的数量至少为1个,即N≥1。为提高代码编译效率,则需要将至少一个编译子步骤分配至第二类候选从服务器执行。
可以理解的是,一个第二类候选从服务器可以执行至少一个编译子步骤,因此,如果编译子步骤的数量M小于第二类候选从服务器的数量N,则可以将至少一个第二类候选从服务器中确定为目标编译从服务器,将至多与编译子步骤相同数量的第二类候选从服务器中确定为目标编译从服务器。因此,本实施例中,第一预设数量P1∈[1,M]。
在确保将至少一个编译子步骤分配至第二类候选从服务器执行后,剩余的编译子步骤可以继续分配至第二类候选从服务器执行,也可以分配至第一类候选从服务器中执行。同理,一个第一类候选从服务器也可以执行至少一个编译子步骤。因此,本实施例中,可以将第二预设数量P2的第一类候选从服务器确定为目标编译从服务器,且第二预设数量P2∈[0,M-P1]。
步骤702,若确定编译子步骤的数量M大于或等于第二类候选从服务器的数量N,则第三预设数量P3的第二类候选从服务器确定为目标编译从服务器,并将第四预设数量P4的第一类候选从服务器确定为目标编译从服务器;第三预设数量P3∈[1,N];第四预设数量P4∈[0,M-P1]。
本实施例中,如果编译子步骤的数量M大于或等于第二类候选从服务器的数量N,则可以将至少一个第二类候选从服务器确定为目标编译从服务器,将至多N个第二类候选从服务器确定为目标编译从服务器。因此,本实施例中,第一预设数量P1∈[1,M]。
同理,本实施例中,将至少一个编译子步骤分配至第二类候选从服务器执行后,剩余的编译子步骤也可以分配至第一类候选从服务器中执行。因此,本实施例中,第二预设数量P2∈[0,M-P1]。
步骤703,将各编译子步骤分配到各目标编译从服务器上执行,并且各目标编译从服务器上被分配有至少一个编译子步骤。
本实施例中,在确定出各目标编译从服务器后,将各编译子步骤分配到各目标编译从服务器上执行,并且是的各目标编译从服务器上被分配有至少一个编译子步骤即可。
本实施例提供的代码编译任务分配方法,通过若确定编译子步骤的数量M小于第二类候选从服务器的数量N,则将第一预设数量P1的第二类候选从服务器确定为目标编译从服务器,并将第二预设数量P2的第一类候选从服务器确定为目标编译从服务器;第一预设数量P1∈[1,M];第二预设数量P2∈[0,M-P1];若确定编译子步骤的数量M大于或等于第二类候选从服务器的数量N,则第三预设数量P3的第二类候选从服务器确定为目标编译从服务器,并将第四预设数量P4的第一类候选从服务器确定为目标编译从服务器;第三预设数量P3∈[1,N];第四预设数量P4∈[0,M-P1];将各编译子步骤分配到各目标编译从服务器上执行,并且各目标编译从服务器上被分配有至少一个编译子步骤。由于根据编译子步骤的数量和第二类候选从服务器的数量,将至少一个第二类候选从服务器确定为在目标编译从服务器,并且可以将第一类候选从服务器也确定为目标编译从服务器,因此,在提高代码编译效率的同时,也为代码编译任务的分配提供了多种可以选择的方式,使得主服务器能够更加灵活的利用各从服务器的编译资源。
本实施例提供的代码编译任务分配方法,通过若确定拆分需求信息为无拆分需求,则根据待编译代码库标识确定待编译编代码库中待编译源码的逻辑结构,并根据待编译源码的逻辑结构确定编译步骤包括的至少一个编译子步骤;根据编译子步骤的数量和第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行。由于根据待编译源代码的逻辑接确定编译步骤包括的至少一个编译子步骤,进而将各各编译子步骤分配到各目标编译从服务器上执行,因此,各目标编译从服务器可以并行执行编译步骤,提高代码编译效率。
作为一种可选的实施方式,在上述任意一个实施例的基础上,在步骤602之前,还包括步骤801。
步骤801,若确定拆分需求信息为有拆分需求,则根据拆分需求信息确定编译步骤包括的至少两个编译子步骤。
本实施例中,如果拆分需求信息为有拆分需求,则用户指定了如何对待编译源代码进行拆分,主服务器只需要根据拆分需求信息将待编译源代码拆分为至少两个代码子模块,并确定至少两个编译子步骤分别对至少两个代码子模块进行编译即可。这里,编译子步骤的数量与代码子模块的数量相同,且编译子步骤与代码子模块相互对应。
本实施例提供的代码编译任务分配方法,通过若确定拆分需求信息为有拆分需求,则根据拆分需求信息确定编译步骤包括的至少两个编译子步骤,由于根据拆分需求信息确定编译步骤包括的至少两个编译子步骤,在确定出至少两个编译子步骤之后,可以将各编译子步骤分配至少一个目标编译从服务上执行,由各目标编译从服务器并行执行各编译子步骤,由于各目标编译从服务器中包括至少一个第二类候选从服务器,因此能够提高代码编译效率。
作为一种可选的实施方式,在上述任意一个实施例的基础上,还包括以下步骤:向各目标从服务器发送汇总指令,汇总指令包括目标汇总从服务器标识,目标汇总从服务器为目标从服务器中的一个;汇总指令用于指示除目标汇总从服务器之外的其它目标从服务器,在执行完待编译任务后,将编译结果发送至目标汇总从服务器,且用于指示目标汇总从服务器接收编译结果,并将各目标从服务器的编译结果汇总后发送给用户终端。
本实施例提供的代码编译方法,通过标汇总从服务器将各目标从服务器执行编译任务的编译结果汇总后发送给用户终端,实现由多个各目标从服务器执行编译任务时,用户也只需与一个目标从服务器通信,提高用户体验。
实施例五
图6是根据本申请实施例五提供的代码编译任务分配装置的结构示意图。如图6所示,本实施例提供的代码编译任务分配装置60包括:获取模块61、第一筛选模块62、第二筛选模块63和分配模块64。
获取模块61,用于获取待编译任务及其对应的待编译代码库标识和编译需求信息、历史编译记录以及各从服务器的可用资源量;
第一筛选模块62,用于根据编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;
第二筛选模块63,用于根据待编译代码库标识及其对应的历史编译记录,从各第一类候选从服务器中筛选出至少一个第二类候选从服务器,第二类候选从服务器执行过包括待编译代码库标识的历史编译任务;
分配模块64,用于根据待编译代码库标识和编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
本实施例提供的代码编译任务分配装置可以执行上述实施例一提供的代码编译任务分配方法,具体的实现方式与原理类似,此处不再赘述。
作为一种可选的实施方式,编译需求信息包括编译资源需求量,第一筛选模块62具体用于,将可用资源量大于编译资源需求量的从服务器确定为第一类候选从服务器。
作为一种可选的实施方式,分配模块64具体用于,根据待编译代码库标识和编译需求信息确定预计编译时长;若确定预计编译时长小于或等于预设编译时长,则将各第二类候选从服务器中的一个确定为目标从服务器,并将待编译任务分配到目标从服务器上执行;若确定预计编译时长大于预设编译时长,则根据待编译代码库标识及编译需求信息,将各第二类候选从服务器中的至少一个确定为目标从服务器,并将待编译任务分配到各目标从服务器上执行。
作为一种可选的实施方式,编译需求信息包括测试需求信息和拆分需求信息,测试需求信息为无测试需求或有测试需求,分配模块64具体还用于,若确定测试需求信息为无测试需求,则确定待编译任务包括编译步骤;若确定测试需求信息为有测试需求,则将确定待编译任务包括编译步骤和至少一个测试步骤;根据待编译代码库标识和拆分需求信息确定执行编译步骤的至少一个目标编译从服务器,并将编译步骤分配到各目标编译从服务器上执行,其中,各目标编译从服务器中包括至少一个第二类候选从服务器;若确定存在至少一个测试步骤,则根据测试步骤的数量确定执行各测试步骤的至少一个目标测试从服务器,并将各测试步骤分配到各目标测试从服务器上执行。
作为一种可选的实施方式,分配模块64具体还用于,将除目标编译从服务器之外的其它从服务器确定为第三类候选从服务器;将至少一个且至多与测试步骤数量相同的第三类候选从服务器确定为目标测试从服务器;将各测试步骤分配至各目标测试从服务器上执行,并且各目标测试从服务器上被分配有至少一个测试步骤。
作为一种可选的实施方式,拆分需求信息为有拆分需求或无拆分需求,分配模块64具体还用于,若确定拆分需求信息为无拆分需求,则根据待编译代码库标识确定待编译编代码库中待编译源码的逻辑结构,并根据待编译源码的逻辑结构确定编译步骤包括的至少一个编译子步骤;
根据编译子步骤的数量和第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行。
作为一种可选的实施方式,分配模块64具体还用于,若确定编译子步骤的数量M小于第二类候选从服务器的数量N,则将第一预设数量P1的第二类候选从服务器确定为目标编译从服务器,并将第二预设数量P2的第一类候选从服务器确定为目标编译从服务器;第一预设数量P1∈[1,M];第二预设数量P2∈[0,M-P1];若确定编译子步骤的数量M大于或等于第二类候选从服务器的数量N,则第三预设数量P3的第二类候选从服务器确定为目标编译从服务器,并将第四预设数量P4的第一类候选从服务器确定为目标编译从服务器;第三预设数量P3∈[1,N];第四预设数量P4∈[0,M-P1];将各编译子步骤分配到各目标编译从服务器上执行,并且各目标编译从服务器上被分配有至少一个编译子步骤。
作为一种可选的实施方式,分配模块64具体还用于,若确定拆分需求信息为有拆分需求,则根据拆分需求信息确定编译步骤包括的至少两个编译子步骤。
本实施例提供的代码编译任务分配装置可以执行上述实施例二至四中任意一个实施例提供的代码编译任务分配方法,具体的实现方式与原理类似,此处不再赘述。
实施例六
图7是根据本申请实施例六提供的电子设备的结构示意图。如图7所示,本实施例提供的电子设备70包括处理器71,以及与处理器71通信连接的存储器72。
存储器72存储计算机执行指令。
处理器71执行存储器72存储的计算机执行指令,实现如实施例一至四中任意一个提供的用户行程识别信息确定方法,具体的实现方式与原理类似,此处不再赘述。
作为一种可选的实施方式,电子设备70还包括收发器。收发器用于收发数据。
处理器、存储器和收发器可以电路互连。
处理器71、存储器72和收发器之间可以通过总线实现通信互连。
存储器72可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘等。
在示例性实施例中,电子设备70可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
本申请的实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如上述任意一个实施例提供的代码编译任务分配方法。
示例性地,计算机可读存储介质可以为只读存储器(ROM)、随机存取存储器(RAM)、磁带、软盘和光数据存储设备等。
应该理解,上述的设备实施例仅是示意性的,本申请的设备还可通过其它的方式实现。例如,上述实施例中模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个模块可以结合,或者可以集成到另一个***,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能模块可以集成在一个模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一起。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
应该理解,上述的设备实施例仅是示意性的,本申请的设备还可通过其它的方式实现。例如,上述实施例中模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个模块或组件可以结合,或者可以集成到另一个***,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能模块可以集成在一个模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一起。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种代码编译任务分配方法,其特征在于,应用于主服务器,主服务器与至少一个从服务器通信连接,包括:
获取历史编译记录、待编译任务以及各从服务器的可用资源量,所述待编译任务包括待编译代码库标识和编译需求信息;
根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;
根据所述待编译代码库标识和所述历史编译记录,从各所述第一类候选从服务器中筛选出执行过包括与待编译代码库标识相同的历史编译任务的第二类候选从服务器;
根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
2.根据权利要求1所述的方法,其特征在于,所述编译需求信息包括编译资源需求量,所述根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器,包括:
将可用资源量大于所述编译资源需求量的从服务器确定为第一类候选从服务器。
3.根据权利要求1所述的方法,其特征在于,所述根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,包括:
根据所述待编译代码库标识和所述编译需求信息确定预计编译时长;
若确定所述预计编译时长小于或等于预设编译时长,则将各第二类候选从服务器中的一个确定为目标从服务器,并将待编译任务分配到所述目标从服务器上执行;
若确定所述预计编译时长大于预设编译时长,则根据所述待编译代码库标识及所述编译需求信息,将各第二类候选从服务器中的至少一个确定为所述目标从服务器,并将待编译任务分配到各所述目标从服务器上执行。
4.根据权利要求3所述的方法,其特征在于,所述编译需求信息包括测试需求信息和拆分需求信息,所述测试需求信息为无测试需求或有测试需求;
所述根据所述待编译代码库标识及所述编译需求信息,将各第二类候选从服务器中的至少一个确定为所述目标从服务器,并将待编译任务分配到各所述目标从服务器上执行,包括:
若确定所述测试需求信息为无测试需求,则确定所述待编译任务包括编译步骤;
若确定所述测试需求信息为有测试需求,则将确定所述待编译任务包括编译步骤和至少一个测试步骤;
根据所述待编译代码库标识和所述拆分需求信息确定执行所述编译步骤的至少一个目标编译从服务器,并将所述编译步骤分配到各目标编译从服务器上执行,其中,各所述目标编译从服务器中包括至少一个第二类候选从服务器;
若确定存在至少一个测试步骤,则根据测试步骤的数量确定执行各所述测试步骤的至少一个目标测试从服务器,并将各测试步骤分配到各目标测试从服务器上执行。
5.根据权利要求4所述的方法,其特征在于,所述根据测试步骤的数量确定执行各所述测试步骤的至少一个目标测试从服务器,包括:
将除目标编译从服务器之外的其它从服务器确定为第三类候选从服务器;
将至少一个且至多与测试步骤数量相同的第三类候选从服务器确定为所述目标测试从服务器;
将各测试步骤分配至各目标测试从服务器上执行,并且各目标测试从服务器上被分配有至少一个测试步骤。
6.根据权利要求4所述的方法,其特征在于,所述拆分需求信息为有拆分需求或无拆分需求;
所述根据所述待编译代码库标识和所述拆分需求信息确定执行所述编译步骤的至少一个目标编译从服务器,并将所述编译步骤分配到各目标编译从服务器上执行,包括:
若确定所述拆分需求信息为无拆分需求,则根据所述待编译代码库标识确定待编译编代码库中待编译源码的逻辑结构,并根据待编译源码的逻辑结构确定所述编译步骤包括的至少一个编译子步骤;
根据所述编译子步骤的数量和所述第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行。
7.根据权利要求6所述的方法,其特征在于,所述根据所述编译子步骤的数量和所述第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行,包括:
若确定所述编译子步骤的数量M小于所述第二类候选从服务器的数量N,则将第一预设数量P1的第二类候选从服务器确定为目标编译从服务器,并将第二预设数量P2的第一类候选从服务器确定为目标编译从服务器;所述第一预设数量P1∈[1,M];所述第二预设数量P2∈[0,M-P1];
若确定所述编译子步骤的数量M大于或等于所述第二类候选从服务器的数量N,则第三预设数量P3的第二类候选从服务器确定为目标编译从服务器,并将第四预设数量P4的第一类候选从服务器确定为目标编译从服务器;所述第三预设数量P3∈[1,N];所述第四预设数量P4∈[0,M-P1];
将各编译子步骤分配到各目标编译从服务器上执行,并且各目标编译从服务器上被分配有至少一个编译子步骤。
8.根据权利要求6所述的方法,其特征在于,所述根据所述编译子步骤的数量和所述第二类候选从服务器的数量确定各目标编译从服务器,并将各编译子步骤分配到各目标编译从服务器上执行之前,还包括:
若确定所述拆分需求信息为有拆分需求,则根据所述拆分需求信息确定所述编译步骤包括的至少两个编译子步骤。
9.一种代码编译任务分配装置,其特征在于,应用于主服务器,主服务器与各从服务器通信连接,包括:
获取模块,用于获取待编译任务及其对应的待编译代码库标识和编译需求信息、历史编译记录以及各从服务器的可用资源量;
第一筛选模块,用于根据所述编译需求信息及各从服务器的可用资源量,从各从服务器中筛选出可用资源量满足执行要求的至少一个第一类候选从服务器;
第二筛选模块,用于根据所述待编译代码库标识及其对应的历史编译记录,从各所述第一类候选从服务器中筛选出至少一个第二类候选从服务器,所述第二类候选从服务器执行过包括待编译代码库标识的历史编译任务;
分配模块,用于根据所述待编译代码库标识和所述编译需求信息确定至少一个目标从服务器,并将待编译任务分配到各目标从服务器上执行,其中,各目标从服务器中包括至少一个第二类候选从服务器。
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211418941.8A CN115794384A (zh) | 2022-11-14 | 2022-11-14 | 代码编译任务分配方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211418941.8A CN115794384A (zh) | 2022-11-14 | 2022-11-14 | 代码编译任务分配方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794384A true CN115794384A (zh) | 2023-03-14 |
Family
ID=85437315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211418941.8A Pending CN115794384A (zh) | 2022-11-14 | 2022-11-14 | 代码编译任务分配方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794384A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116723225A (zh) * | 2023-06-16 | 2023-09-08 | 广州银汉科技有限公司 | 游戏任务的自动分配方法及*** |
-
2022
- 2022-11-14 CN CN202211418941.8A patent/CN115794384A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116723225A (zh) * | 2023-06-16 | 2023-09-08 | 广州银汉科技有限公司 | 游戏任务的自动分配方法及*** |
CN116723225B (zh) * | 2023-06-16 | 2024-05-17 | 广州银汉科技有限公司 | 游戏任务的自动分配方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10338956B2 (en) | Application profiling job management system, program, and method | |
US20190324772A1 (en) | Method and device for processing smart contracts | |
CN108829409B (zh) | 一种分布式***快速部署方法及*** | |
US10216509B2 (en) | Continuous and automatic application development and deployment | |
US20190138288A1 (en) | Automatic creation of delivery pipelines | |
US10430172B2 (en) | Re-configuration in cloud computing environments | |
CN107590075B (zh) | 一种软件测试方法及装置 | |
US10489281B2 (en) | Application monitoring with a decoupled monitoring tool | |
CN110389903B (zh) | 测试环境部署方法和装置、电子设备和可读存储介质 | |
CN114244717B (zh) | 虚拟网卡资源的配置方法、装置、计算机设备及介质 | |
CN111596927B (zh) | 服务部署方法、装置及电子设备 | |
US20230153158A1 (en) | Method, apparatus, system, and storage medium for performing eda task | |
CN112769706B (zh) | 组件化路由方法及*** | |
CN111176818A (zh) | 分布式预测的方法、装置、***、电子设备及存储介质 | |
CN111831567B (zh) | 应用的测试环境配置方法、装置、***和介质 | |
CN115794384A (zh) | 代码编译任务分配方法、装置、设备及存储介质 | |
US10530892B2 (en) | Processing request for multi-versioned service | |
US20210248056A1 (en) | Method for evaluating application deployment, apparatus, computer program product, and readable medium | |
CN114500268B (zh) | chart资源的部署方法、装置、服务器及存储介质 | |
CN115098105A (zh) | 容器云性能测试评估实现方法、装置、设备及介质 | |
US11269596B2 (en) | Automated microservice creation based on user interaction | |
Vani | Building, deploying and validating a home location register (HLR) using Jenkins under the docker and container environment | |
CN113791942B (zh) | 用于自动分发测试任务的方法和装置 | |
CN114942796B (zh) | 插件编译及调用方法、装置、设备及存储介质 | |
US20230409385A1 (en) | Debugging by predict accessing information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |