CN110489126A - 编译任务的执行方法和装置、存储介质及电子装置 - Google Patents

编译任务的执行方法和装置、存储介质及电子装置 Download PDF

Info

Publication number
CN110489126A
CN110489126A CN201910731337.2A CN201910731337A CN110489126A CN 110489126 A CN110489126 A CN 110489126A CN 201910731337 A CN201910731337 A CN 201910731337A CN 110489126 A CN110489126 A CN 110489126A
Authority
CN
China
Prior art keywords
group
docker container
task
compiled
container
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.)
Granted
Application number
CN201910731337.2A
Other languages
English (en)
Other versions
CN110489126B (zh
Inventor
蒋艳军
潘金赤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910731337.2A priority Critical patent/CN110489126B/zh
Publication of CN110489126A publication Critical patent/CN110489126A/zh
Application granted granted Critical
Publication of CN110489126B publication Critical patent/CN110489126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种编译任务的执行方法和装置、存储介质及电子装置。其中,该方法包括:获取一组待编译任务;确定待编译任务所处的编译环境以及待编译任务的并发数量;通过服务质量分类标识QCI分布式编译服务器获取与编译环境以及并发数量对应的一组应用容器引擎docker容器的一组镜像文件;将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,一组待编译任务被划分到一组docker容器中的各个docker容器中;获取一组docker容器分布式执行待编译任务中对应的待编译任务所得到的编译结果。本发明解决了相关技术中对任务的编译耗时的技术问题。

Description

编译任务的执行方法和装置、存储介质及电子装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种编译任务的执行方法和装置、存储介质及电子装置。
背景技术
持续集成(Continuous Integration,简称为CI)和持续交付(Continuousdelivery,简称为CD)的是敏捷开发的基础。在持续集成和持续交付过程中管线pipeline流水线的各个环节的耗时非常重要,特别是编译耗时。有些项目编译时间很长,几十分钟甚至几个小时,严重影响了敏捷开发的效率。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种编译任务的执行方法和装置、存储介质及电子装置,以至少解决相关技术中对任务的编译耗时的技术问题。
根据本发明实施例的一个方面,提供了一种编译任务的执行方法,包括:获取一组待编译任务;将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,上述待编译任务被划分到上述一组docker容器中的各个docker容器中;获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果。
根据本发明实施例的另一方面,还提供了一种编译任务的执行装置,包括:第一获取模块,用于获取一组待编译任务;第一确定模块,用于在上述将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,确定上述待编译任务所处的编译环境以及上述待编译任务的并发数量;第二获取模块,用于通过服务质量分类标识QCI分布式编译服务器获取与上述编译环境以及上述并发数量对应的上述一组docker容器的一组镜像文件,其中,上述一组镜像文件与上述一组docker容器中的docker容器一一对应;第一发送模块,用于将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,上述待编译任务被划分到上述一组docker容器中的各个docker容器中;第三获取模块,用于获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果。
可选地,上述装置还包括:第一启动模块,用于在上述通过服务质量分类标识QCI分布式编译服务器获取与上述编译环境以及上述并发数量对应的上述一组docker容器的一组镜像文件之后,使用上述一组镜像文件对处于空闲状态的上述一组docker容器进行实例化操作,以启动上述一组docker容器。
可选地,上述装置还包括:第四获取模块,用于在上述将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,获取处于启动状态的分布式编译进程中的白名单参数,其中,上述白名单参数用于为主机配置对应的IP地址,上述IP地址用于允许上述主机将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器;
第一发送模块包括:
第一发送单元,用于在上述主机上基于上述IP地址将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器。
可选地,上述装置还包括:
第二确定模块,用于在将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之后,通过QCI分布式编译服务器返回分配至上述一组docker容器的IP地址;
第一设置模块,用于将上述一组docker容器的IP地址设置在分布式主机的环境变量distcc_hosts中,以确定上述distcc_hosts的环境变量值,其中,上述distcc_hosts的环境变量值用于关联上述分布式主机和上述一组docker容器的IP地址。
可选地,上述装置还包括:
第三确定模块,用于在上述将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,确定上述docker容器集合所使用的编译工具;
第四确定模块,用于利用上述编译工具确定出上述一组docker容器的一组应用容器引擎文件,其中,上述一组应用容器引擎文件与上述一组docker容器中的docker容器一一对应,每个上述应用容器引擎文件用于触发上述一组docker容器中对应的docker容器执行上述待编译任务中对应的待编译任务;
第五确定模块,用于确定出上述一组docker容器的一组脚本文件,其中,上述一组脚本文件与上述一组docker容器中的docker容器一一对应,每个上述脚本文件用于运行上述一组docker容器中对应的docker容器。
可选地,上述装置还包括:第四获取模块,用于在上述获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果之前,获取一组编译命令,其中,上述一组编译命令与上述一组docker容器中的docker容器一一对应,每个上述编译命令用于被对应的上述docker容器使用以执行上述待编译任务中对应的待编译任务;向上述一组docker容器中的各个docker容器发送上述一组编译命令中对应的编译命令;第三获取模块包括:第二获取单元,用于从编译器缓存中获取上述编译结果,其中,上述编译结果是上述一组docker容器中的各个docker容器使用对应的上述编译命令执行对应的上述待编译任务得到的结果、且存储在上述编译器缓存中。
可选地,上述装置还包括:第二启动模块,用于在从编译器缓存中获取上述编译结果之前,通过修改脚本文件启动上述编译器缓存,其中,上述脚本文件用于确定出上述编译器缓存所适用的分布式工具版本;或,第三启动模块,用于通过软链接启动上述编译器缓存,其中,上述软链接用于标记上述编译器缓存的地址。
可选地,上述第一获取模块包括:第一确定单元,用于确定构建命令,其中,上述构建命令用于指示上述待编译任务的并发数量;第二确定单元,用于确定上述一组docker容器中的各个docker容器所使用的编译套件版本;第三确定单元,用于确定上述各个docker容器所使用的镜像文件;第四确定单元,用于将上述构建命令、编译套件版本以及上述镜像文件确定为上述一组编译命令。
可选地,上述装置还包括:释放模块,用于在获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果之后,释放上述一组docker容器中的各个docker容器。
可选地,上述一组docker容器中的各个docker容器位于区块链节点上。
根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述编译任务的执行方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的编译任务的执行方法。
在本发明实施例中,采用获取一组待编译任务;将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,待编译任务被划分到一组docker容器中的各个docker容器中;获取一组docker容器分布式执行待编译任务中对应的待编译任务所得到的编译结果的方式,通过一组docker容器对待编译任务进行分布式编译,达到了对编译任务分布式编译,并使用docker容器对编译任务进行负载均衡的目的,从而实现了对编译任务快速编译的技术效果,进而解决了相关技术中对任务的编译耗时的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的编译任务的执行方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的编译任务的执行方法的流程示意图;
图3是根据本发明实施例的一种可选的编译任务的执行方法的整体架构示意图;
图4是根据本发明实施例的一种可选的使用docker容器作为编译从机的示意图;
图4a是根据本发明实施例的一种可选的docker容器在区块链上的分布示意图;
图5是根据本发明实施例的一种可选的QCI pipeline的运行效果示意图;
图6是根据本发明实施例的一种可选的编译任务的执行方法的整体流程图;
图7是根据本发明实施例的一种可选的编译任务的执行装置示意图;
图8是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种编译任务的执行方法,可选地,作为一种可选的实施方式,上述编译任务的执行方法可以但不限于应用于如图1所示的环境中。
可选地,在本实施例中,上述编译任务的执行方法可以但不限于应用于服务器102中,用于协助应用客户端对编译任务的执行编译处理。其中,上述应用客户端可以但不限于运行在用户设备108中,该用户设备108可以但不限于为手机、平板电脑、笔记本电脑、PC机等支持运行应用客户端的终端设备。用户设备108中包含有存储器114,用于存储待编译任务、处理器112,用于处理待编译任务。用户设备108将待编译任务发送至服务器102。服务器102中包含有数据库104,用于存储待编译任务、处理引擎106,用于处理待编译任务。如图1所示,服务器102与一组docker容器连接,一组docker容器上运行有多个一组docker容器,服务器102将待编译任务发送至独立工作的一组docker容器中。一组docker容器将编译好的编译结果发送至服务器102中。
可选地,上述编译任务的执行方法可以但不限于应用于可以计算数据的服务器中,上述服务器与一组docker容器可以通过网络连接,网络可以包括但不限于无线网络或有线网络。其中,该无线网络包括:WIFI及其他实现无线通信的网络。上述有线网络可以包括但不限于:广域网、城域网、局域网。上述服务器102可以包括但不限于任何可以进行计算的硬件设备。
可选地,作为一种可选的实施方式,如图2所示,上述编译任务的执行方法包括:
S202:获取一组待编译任务;
S204:确定待编译任务所处的编译环境以及待编译任务的并发数量;
S206:通过服务质量分类标识QCI分布式编译服务器获取与编译环境以及并发数量对应的一组应用容器引擎docker容器的一组镜像文件,其中,一组镜像文件与一组docker容器中的docker容器一一对应;
S208:将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,待编译任务被划分到一组docker容器中的各个docker容器中;
S210:获取一组docker容器分布式执行待编译任务中对应的待编译任务所得到的编译结果。
可选地,在本实施例中,上述编译任务的执行方法可以但不限于应用于编译任务的场景中。其中,待编译任务可以但不限于为各种源程序。上述仅是一种示例,本实施例中对此不做任何限定。
可选地,在本实施例中,待编译任务包括但不限于是多个源程序、一个源程序中的多个子程序。例如,将M个待编译任务分给N个容器,其中,M,N均是大于1的自然数。
可选地,在本实施例中的编译工具包括但不限于分布式C/C++编译工具distcc。distcc可组织一个网络内的多台计算机同时进行某个编译任务。主要工作原理是:将原本需要使用本机中央处理器(Central Processing Unit,简称为CPU)来编译的一些文件,分发到其他的多台机器上,让多台机器执行编译过程,编译完成之后,再将编译信息发回到本机上执行链接,最终得到编译结果。简单来说,就是通过将主要耗费资源的编译过程分发到远程编译机上执行的方式,使得原来的单台编译过程被转化为了多台编译,整体编译时间减少。
可选地,在本实施例中,可以利用编译器缓存ccache工具缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息,节省了编译时间。第一次编译时ccache缓存了编译输出,把头文件展开信息保存在缓存中,当第二次编译时优先使用缓存,有改动时再更新缓存。
可选地,在本实施例中使用distcc作为分布式编译工具,使用主服务程序dmucs作为distcc分布式编译的负载均衡工具,使用ccache作为编译缓存工具。如图3所示,是本实施例中的整体架构示意图,其中,包括以下步骤:
S1,主机distcc ccache获取待编译任务。
S2,主机将待编译任务下发至编译集群中的各个编译从机中进行待编辑任务的编辑。
S3,ccache缓存编译从机对待编译任务的编译信息,并将编译信息发送至主机中。
可选地,上述分布式编译集群中的编译从机使用docker容器。使用docker容器作为编译从机的示意图如图4所示。
可选地,在本实施例中,镜像文件包括但不限于是docker镜像,可以根据待编译任务所依赖的编译环境的不同,制作多个docker编译环境镜像。其中,docker镜像中需要安装对应版本的编译工具,编译工具包括但不限于包括以下至少之一:分布式编译工具distcc、GNU编译器套件gcc、编译器缓存ccache、主服务程序dmucs。
通过本实施例,通过distcc、ccache和dmuc搭建了一套分布式编译集群,能够方便对C/C++类项目进行编译加速,可以更加高效的对分布式编译集群资源有效利用,并且方便进行任务间编译资源的相互隔离,易于动态调整distcc编译配置参数;简化了distcc/ccache使用方案,用户不用关注distcc和ccache环境搭建和参数配置问题;平均可以将任务的编译时间降低,大大提升了编译的效率。
在一个可选的实施例中,在通过服务质量分类标识QCI分布式编译服务器获取与编译环境以及并发数量对应的一组docker容器的一组镜像文件之后,方法还包括:
S2,使用一组镜像文件对处于空闲状态的一组docker容器进行实例化操作,以启动一组docker容器。
可选地,在启动编译构建任务后,由持续集成CI/持续交付CD平台QCI-distccserver根据待编译任务的并发数量以及编译环境要求,选择合适的镜像,分配并实例化一批空闲的docker容器作为构建从机,实例化docker容器时需要启动distcc daemon服务。
通过本实施例,通过使用docker镜像文件对docker容器的实例化,以启动docker容器,使用多个docker容器对待编译任务进行编译,使得在多个待编译任务同时编译时,使用不同的编译从机,对各个待编译任务的负载均衡进行控制,各个待编译任务之间不会相互影响,提高编译的速度。
在一个可选的实施例中,在将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,方法还包括:
S1,获取处于启动状态的分布式编译进程中的白名单参数,其中,白名单参数用于为主机配置对应的IP地址,IP地址用于允许主机将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器;
将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器包括:
S2,在主机上基于IP地址将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器。
可选地,在本实施例中,实例化docker容器时需要指定distccd的allow白名单参数,启动后的docker容器成为本次distcc分布式编译的distcc daemon。
可选地,qci-distcc server确定主机的IP地址以及分配好编译集群中的docker容器,并启动docker容器后,向主机返回本次编译任务分配的docker容器的IP地址。主机向与各个IP地址对应的docker容器分发待编译任务。
通过本实施例,通过主机的IP地址将fail编译任务分发至各个docker容器中进行分布式编译,不仅提高了编译的速度,而且各个docker执行分布式编译可以对各个待编译任务的负载均衡进行控制,各个待编译任务之间不会相互影响,提高编译的速度。
在一个可选的实施例中,在将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之后,方法还包括:
S1,通过QCI分布式编译服务器返回分配至一组docker容器的IP地址;
S2,将一组docker容器的IP设置在分布式主机的环境变量distcc_hosts中,以确定distcc_hosts的环境变量值,其中,distcc_hosts的环境变量值用于关联分布式主机和一组docker容器的IP地址。
可选地,在本实施例中,编译主机将本次编译分配的docker容器的IP地址加入到编译主机的环境变量distcc_hosts中;docker容器的IP地址存储在容器IP列表中。
通过本实施例,通过将docker容器的IP地址返回至主机中,主机可以根据docker容器的IP地址分发待编译任务,提高了分布式编译的效率。
在一个可选的实施例中,在将待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,方法还包括:
S1,确定docker容器集合所使用的编译工具;
S2,利用编译工具确定出一组docker容器的一组应用容器引擎文件,其中,一组应用容器引擎文件与一组docker容器中的docker容器一一对应,每个应用容器引擎文件用于触发一组docker容器中对应的docker容器执行待编译任务中对应的待编译任务;
S3,确定出一组docker容器的一组脚本文件,其中,一组脚本文件与一组docker容器中的docker容器一一对应,每个脚本文件用于运行一组docker容器中对应的docker容器。
可选地,在本实施例中,docker容器集合所使用的编译工具包括但不限于分布式编译工具distcc、GNU编译器套件gcc、编译器缓存ccache、主服务程序dmucs。
可选地,应用容器引擎文件Dockerfile包括但不限于是以下内容:
可选地,脚本文件包括但不限于以下内容:
#!/bin/bash-e
if[-n"$JOBS"];then
append_params="$append_params--jobs$JOBS"
fi
distccd--allow=$net--daemon--verbose--no-detach$append_params
通过本实施,通过对编译工具以及脚本文件的确定,加快了docker容器的启动运行,提高了分布式编译的效率。
在一个可选的实施例中,在获取一组docker容器分布式执行待编译任务中对应的待编译任务所得到的编译结果之前,方法还包括:
S1,获取一组编译命令,其中,一组编译命令与一组docker容器中的docker容器一一对应,每个编译命令用于被对应的docker容器使用以执行待编译任务中对应的待编译任务;向一组docker容器中的各个docker容器发送一组编译命令中对应的编译命令;
S2,获取一组docker容器分布式执行待编译任务中对应的待编译任务所得到的编译结果包括:从编译器缓存中获取编译结果,其中,编译结果是一组docker容器中的各个docker容器使用对应的编译命令执行对应的待编译任务得到的结果、且存储在编译器缓存中。
可选地,在本实施例中,例如,编译命令可以是以下命令:
usage:qci_distcc.py[--build_cmd BUILD_CMD][--gcc_version GCC_VERSION][--custom_image CUSTOM_IMAGE]。
可选地,build_cmd:编译构建命令,如:make all-j80。其中,-j指定同时并发待编译编译的任务数,参数根据业务实际情况指定。
--gcc_version:构建依赖的gcc版本,如果不指定,则默认为gcc4.8.5版本。
--custom_image:是否使用业务自有的docker镜像进行分布式编译,0:不使用业务自有镜像进行分布式编译构建,1:使用业务自有镜像进行分布式编译构建。默认不使用业务自有镜像进行编译构建。如果业务编译构建依赖特殊的***库并且已经制作好docker镜像,可以使用自有的镜像作为编译集群的构建环境(使用业务自有镜像进行编译构建时,qcifile worker需要指定业务自有镜像的名称)。
通过本实施例,通过获取的编译命令,实现了docker容器对待编译任务的分布式编译,加快了docker容器的编译执行,提高了分布式编译的效率。
在一个可选的实施例中,在从编译器缓存中获取编译结果之前,方法还包括:
S1,通过修改脚本文件启动编译器缓存,其中,脚本文件用于确定出编译器缓存所适用的分布式工具版本;或
S2,通过软链接启动编译器缓存,其中,软链接用于标记编译器缓存的地址。
可选地,在本实施例中,修改脚本文件包括以下内容:
将CC=gcc改为:CC=ccache gcc
CXX=g++改为:CXX=ccache g++
可选地,通过软链接启动编译器缓存包括以下内容:
ln-s/usr/bin/ccache/usr/local/bin/gcc
ln-s/usr/bin/ccache/usr/local/bin/g++
通过本实施例,通过启动编译器缓存,对编译结果进行快速的缓存,提高了编译的效率。
在一个可选的实施例中,获取一组编译命令包括:
S1,确定构建命令,其中,构建命令用于指示待编译任务的并发数量;
S2,确定一组docker容器中的各个docker容器所使用的编译套件版本;
S3,确定各个docker容器所使用的镜像文件;
S4,将构建命令、编译套件版本以及镜像文件确定为一组编译命令。
可选地,在本实施例中,例如,编译命令可以是以下命令:
usage:qci_distcc.py[--build_cmd BUILD_CMD][--gcc_version GCC_VERSION][--custom_image CUSTOM_IMAGE]。
可选地,build_cmd:编译构建命令,如:make all-j80。其中,-j指定同时并发待编译编译的任务数,参数根据业务实际情况指定。
--gcc_version:构建依赖的gcc版本,如果不指定,则默认为gcc4.8.5版本。
--custom_image:是否使用业务自有的docker镜像进行分布式编译,0:不使用业务自有镜像进行分布式编译构建,1:使用业务自有镜像进行分布式编译构建。默认不使用业务自有镜像进行编译构建。如果业务编译构建依赖特殊的***库并且已经制作好docker镜像,可以使用自有的镜像作为编译集群的构建环境(使用业务自有镜像进行编译构建时,qcifile worker需要指定业务自有镜像的名称)。
通过本实施例,通过获取的编译命令,实现了docker容器对待编译任务的分布式编译,加快了docker容器的编译执行,提高了分布式编译的效率。
在一个可选的实施例中,获取一组docker容器分布式执行待编译任务中对应的待编译任务所得到的编译结果之后,方法还包括:
S1,释放一组docker容器中的各个docker容器。
可选地。在待编译任务编译完成后,通知qci-distcc server释放编译从机docker容器资源。
通过本实施例,通过对docker容器资源的释放,有利于后续的使用,提高了整体编译的效率。
在一个可选的实施例中,一组docker容器中的各个docker容器位于区块链节点上。
可选地,如图4a所述,可以将各个docker容器应用在区块链的场景中,各个docker容器分布在区块链上的各个节点上。
下面结合具体实施例对本发明进行说明:
本实施例结合QCI pipeline进行说明,在QCI任务的qcifile配置文件中调用qci-distcc client工具进行分布式编译,qcifile文件中调用方式包括先不限于:python3./qci_plugin_scripts/distcc/qci_distcc.py--build_cmd'make clean;make all'。QCIpipeline的运行效果图如图5所示。
可选地,本实施例包括但不限于3个部分:分布式编译doker容器集群,docker容器编译集群管理服务qci-distcc server以及分布式编译客户端工具qci-distcc client。如图6所示,包括以下步骤:
S601:确定编译的机器资源,初始化并部署好后加入编译集群;
S602:制作编译环境docker镜像,可以根据项目依赖的编译环境的不同,制作多个docker编译环境镜像。docker镜像中需要安装对应版本的gcc、ccache、dmucs。
S603:启动编译构建任务后,由qci-distcc server根据编译任务的并发数以及编译环境要求,选择合适的镜像,分配并实例化一批空闲的docker容器作为构建从机。
S604:实例化docker容器时启动distcc daemon服务,并指定distccd的allow白名单参数,启动后的docker容器成为本次distcc分布式编译的distcc daemon。
S605:qci-distcc server分配好编译集群中的容器,并启动容器后,返回本次编译任务分配的docker容器的IP地址。编译主机将本次编译分配的docker容器的IP地址加入到构建主机的环境变量DISTCC_HOSTS中。
S606:启动编译任务。
S607:使用distcc.py–build_cmd“make-jN”命令进行构建(N为并行构建的数量)。
可选地,docker容器集群依赖的工具:对应版本的gcc,distcc,ccache和dmucs。
可选地,docker容器编译集群管理服务qci-distcc server负责根据任务的并发情况以及依赖的环境信息,选择合适的镜像,分配并实例化docker容器进行分布式编译。实例化docker编译容器时启动distcc daemon服务。分配好编译从机资源后,返回分配的容器ip列表。
可选地,分布式编译客户端工具qci-distcc client工具主要实现以下功能:
1)获取编译任务要求的环境信息,如gcc版本,编译主机的ip信息,并向qci-distcc server请求分配分布式编译docker容器资源;
2)将qci-distcc server返回的distcc daemon容器ip信息加入到编译主机DISTCC_HOSTS环境变量中;
3)调用make-j命令进行编译;
4)编译完成后,通知qci-distcc server释放编译从机docker容器资源。
综上所述,本实施例基于distcc、ccache和dmucs搭建了一套通用且易用的分布式编译集群,能够方便对C/C++类项目进行编译加速;基于docker容器的分布式编译机器方案,可以更加高效的对分布式编译集群资源有效利用,并且方便进行任务间编译资源的相互隔离,易于动态调整distcc编译配置参数;使用本发明中的分布式编译集群方案,简化了distcc/ccache使用方案,用户不用关注distcc和ccache环境搭建和参数配置问题;本实施例中的分布式编译集群方案,平均可以将任务的编译时间降低一半左右,大大提升了编译构建效率。
可选地,在本实施例中,上述图片的协作处理方法可以但不限于应用于图片处理的场景中。在该场景中,第一帐号并不参与对第一图片的协作处理,而是将协作处理请求发送至第一图片中存在的待处理对象对应的帐号进行处理。
在本实施例中,其他帐号协作处理图片的方式与上述实施例的方式相同,在此不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的一个方面,还提供了一种编译任务的执行装置。如图7所示,该装置包括:
第一获取模块72,用于获取一组待编译任务;
第一确定模块74,用于在上述将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,确定上述待编译任务所处的编译环境以及上述待编译任务的并发数量;
第二获取模块76,用于通过服务质量分类标识QCI分布式编译服务器获取与上述编译环境以及上述并发数量对应的上述一组docker容器的一组镜像文件,其中,上述一组镜像文件与上述一组docker容器中的docker容器一一对应;
第一发送模块78,用于将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,上述待编译任务被划分到上述一组docker容器中的各个docker容器中;
第三获取模块710,用于获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果。
可选地,上述装置还包括:
第一启动模块,用于在上述通过服务质量分类标识QCI分布式编译服务器获取与上述编译环境以及上述并发数量对应的上述一组docker容器的一组镜像文件之后,使用上述一组镜像文件对处于空闲状态的上述一组docker容器进行实例化操作,以启动上述一组docker容器。
可选地,上述装置还包括:
第四获取模块,用于在上述将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,获取处于启动状态的分布式编译进程中的白名单参数,其中,上述白名单参数用于为主机配置对应的IP地址,上述IP地址用于允许上述主机将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器;
第一发送模块包括:
第一发送单元,用于在上述主机上基于上述IP地址将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器。
可选地,上述装置还包括:
第二确定模块,用于在将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之后,通过QCI分布式编译服务器返回分配至上述一组docker容器的IP地址;
第一设置模块,用于将上述一组docker容器的IP地址设置在分布式主机的环境变量distcc_hosts中,以确定上述distcc_hosts的环境变量值,其中,上述distcc_hosts的环境变量值用于关联上述分布式主机和上述一组docker容器的IP地址。
可选地,上述装置还包括:
第三确定模块,用于在上述将上述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,确定上述docker容器集合所使用的编译工具;
第四确定模块,用于利用上述编译工具确定出上述一组docker容器的一组应用容器引擎文件,其中,上述一组应用容器引擎文件与上述一组docker容器中的docker容器一一对应,每个上述应用容器引擎文件用于触发上述一组docker容器中对应的docker容器执行上述待编译任务中对应的待编译任务;
第五确定模块,用于确定出上述一组docker容器的一组脚本文件,其中,上述一组脚本文件与上述一组docker容器中的docker容器一一对应,每个上述脚本文件用于运行上述一组docker容器中对应的docker容器。
可选地,上述装置还包括:
第四获取模块,用于在上述获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果之前,获取一组编译命令,其中,上述一组编译命令与上述一组docker容器中的docker容器一一对应,每个上述编译命令用于被对应的上述docker容器使用以执行上述待编译任务中对应的待编译任务;向上述一组docker容器中的各个docker容器发送上述一组编译命令中对应的编译命令;
第三获取模块包括:第二获取单元,用于从编译器缓存中获取上述编译结果,其中,上述编译结果是上述一组docker容器中的各个docker容器使用对应的上述编译命令执行对应的上述待编译任务得到的结果、且存储在上述编译器缓存中。
可选地,上述装置还包括:
第二启动模块,用于在从编译器缓存中获取上述编译结果之前,通过修改脚本文件启动上述编译器缓存,其中,上述脚本文件用于确定出上述编译器缓存所适用的分布式工具版本;或
第三启动模块,用于通过软链接启动上述编译器缓存,其中,上述软链接用于标记上述编译器缓存的地址。
可选地,上述第一获取模块包括:
第一确定单元,用于确定构建命令,其中,上述构建命令用于指示上述待编译任务的并发数量;
第二确定单元,用于确定上述一组docker容器中的各个docker容器所使用的编译套件版本;
第三确定单元,用于确定上述各个docker容器所使用的镜像文件;
第四确定单元,用于将上述构建命令、编译套件版本以及上述镜像文件确定为上述一组编译命令。
可选地,上述装置还包括:
释放模块,用于在获取上述一组docker容器分布式执行上述待编译任务中对应的待编译任务所得到的编译结果之后,释放上述一组docker容器中的各个docker容器。
可选地,上述一组docker容器中的各个docker容器位于区块链节点上。
根据本发明实施例的又一个方面,还提供了一种用于实施上述编译任务的执行方法的电子装置,如图8所示,该电子装置包括存储器802和处理器804,该存储器802中存储有计算机程序,该处理器804被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取待编译任务;
S2:确定待编译任务所处的编译环境以及待编译任务的并发数量;
S3:通过服务质量分类标识QCI分布式编译服务器获取与编译环境以及并发数量对应的一组应用容器引擎docker容器的一组镜像文件,其中,一组镜像文件与一组docker容器中的docker容器一一对应;
S4,将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,所述待编译任务被划分到所述一组docker容器中的各个docker容器中;
S5,获取所述一组docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果。
可选地,本领域普通技术人员可以理解,图8所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图8其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图8中所示更多或者更少的组件(如网络接口等),或者具有与图8所示不同的配置。
其中,存储器802可用于存储软件程序以及模块,如本发明实施例中的。编译任务的执行方法和装置对应的程序指令/模块,处理器804通过运行存储在存储器802内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的编译任务的执行方法方法。存储器802可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器802可进一步包括相对于处理器804远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器802具体可以但不限于用于待编译任务等信息。作为一种示例,如图8所示,上述存储器802中可以但不限于包括上述编译任务的执行方法装置中的第一获取模块72、第一确定模块74、第二获取模块76、第一发送模块78以及第三获取模块710。此外,还可以包括但不限于上述编译任务的执行装置装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置806用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置806包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置806为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子装置还包括:显示器808,用于显示上述待编译任务;和连接总线810,用于连接上述电子装置中的各个模块部件。
根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取待编译任务;
S2:确定待编译任务所处的编译环境以及待编译任务的并发数量;
S3:通过服务质量分类标识QCI分布式编译服务器获取与编译环境以及并发数量对应的一组应用容器引擎docker容器的一组镜像文件,其中,一组镜像文件与一组docker容器中的docker容器一一对应;
S4,将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,所述待编译任务被划分到所述一组docker容器中的各个docker容器中;
S5,获取所述一组docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种编译任务的执行方法,其特征在于,包括:
获取一组待编译任务;
确定所述待编译任务所处的编译环境以及所述待编译任务的并发数量;
通过服务质量分类标识QCI分布式编译服务器获取与所述编译环境以及所述并发数量对应的一组应用容器引擎docker容器的一组镜像文件,其中,所述一组镜像文件与所述一组docker容器中的docker容器一一对应;
将所述待编译任务发送到分布式独立工作的所述一组docker容器,其中,所述待编译任务被划分到所述一组docker容器中的各个docker容器中;
获取所述一组docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果。
2.根据权利要求1所述的方法,其特征在于,在所述通过服务质量分类标识QCI分布式编译服务器获取与所述编译环境以及所述并发数量对应的所述一组docker容器的一组镜像文件之后,所述方法还包括:
使用所述一组镜像文件对处于空闲状态的所述一组docker容器进行实例化操作,以启动所述一组docker容器。
3.根据权利要求1所述的方法,其特征在于,
在所述将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,所述方法还包括:获取处于启动状态的分布式编译进程中的白名单参数,其中,所述白名单参数用于为主机配置对应的IP地址,所述IP地址用于允许所述主机将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器;
所述将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器包括:在所述主机上基于所述IP地址将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器。
4.根据权利要求1所述的方法,其特征在于,在将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之后,所述方法还包括:
通过QCI分布式编译服务器返回分配至所述一组docker容器的IP地址;
将所述一组docker容器的IP地址设置在分布式主机的环境变量distcc_hosts中,以确定所述distcc_hosts的环境变量值,其中,所述distcc_hosts的环境变量值用于关联所述分布式主机和所述一组docker容器的IP地址。
5.根据权利要求1所述的方法,其特征在于,在所述将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器之前,所述方法还包括:
确定所述docker容器集合所使用的编译工具;
利用所述编译工具确定出所述一组docker容器的一组应用容器引擎文件,其中,所述一组应用容器引擎文件与所述一组docker容器中的docker容器一一对应,每个所述应用容器引擎文件用于触发所述一组docker容器中对应的docker容器执行所述待编译任务中对应的待编译任务;
确定出所述一组docker容器的一组脚本文件,其中,所述一组脚本文件与所述一组docker容器中的docker容器一一对应,每个所述脚本文件用于运行所述一组docker容器中对应的docker容器。
6.根据权利要求1所述的方法,其特征在于,
在所述获取所述一组docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果之前,所述方法还包括:获取一组编译命令,其中,所述一组编译命令与所述一组docker容器中的docker容器一一对应,每个所述编译命令用于被对应的所述docker容器使用以执行所述待编译任务中对应的待编译任务;向所述一组docker容器中的各个docker容器发送所述一组编译命令中对应的编译命令;
所述获取所述一组docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果包括:从编译器缓存中获取所述编译结果,其中,所述编译结果是所述一组docker容器中的各个docker容器使用对应的所述编译命令执行对应的所述待编译任务得到的结果、且存储在所述编译器缓存中。
7.根据权利要求6所述的方法,其特征在于,在从编译器缓存中获取所述编译结果之前,所述方法还包括:
通过修改脚本文件启动所述编译器缓存,其中,所述脚本文件用于确定出所述编译器缓存所适用的分布式工具版本;或
通过软链接启动所述编译器缓存,其中,所述软链接用于标记所述编译器缓存的地址。
8.根据权利要求6所述的方法,其特征在于,所述获取一组编译命令包括:
确定构建命令,其中,所述构建命令用于指示所述待编译任务的并发数量;
确定所述一组docker容器中的各个docker容器所使用的编译套件版本;
确定所述各个docker容器所使用的镜像文件;
将所述构建命令、编译套件版本以及所述镜像文件确定为所述一组编译命令。
9.根据权利要求1所述的方法,其特征在于,获取所述一组docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果之后,所述方法还包括:
释放所述一组docker容器中的各个docker容器。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述一组docker容器中的各个docker容器位于区块链节点上。
11.一种编译任务的执行装置,其特征在于,包括:
第一获取模块,用于获取一组待编译任务;
第一确定模块,用于确定所述待编译任务所处的编译环境以及所述待编译任务的并发数量;
第二获取模块,用于通过服务质量分类标识QCI分布式编译服务器获取与所述编译环境以及所述并发数量对应的一组应用容器引擎docker容器的一组镜像文件,其中,所述一组镜像文件与所述一组docker容器中的docker容器一一对应;
第一发送模块,用于将所述待编译任务发送到分布式独立工作的一组应用容器引擎docker容器,其中,所述待编译任务被划分到所述一组docker容器中的各个docker容器中;
第三获取模块,用于获取所述docker容器分布式执行所述待编译任务中对应的待编译任务所得到的编译结果。
12.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至10任一项中所述的方法。
CN201910731337.2A 2019-08-08 2019-08-08 编译任务的执行方法和装置、存储介质及电子装置 Active CN110489126B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910731337.2A CN110489126B (zh) 2019-08-08 2019-08-08 编译任务的执行方法和装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910731337.2A CN110489126B (zh) 2019-08-08 2019-08-08 编译任务的执行方法和装置、存储介质及电子装置

Publications (2)

Publication Number Publication Date
CN110489126A true CN110489126A (zh) 2019-11-22
CN110489126B CN110489126B (zh) 2021-09-10

Family

ID=68550341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910731337.2A Active CN110489126B (zh) 2019-08-08 2019-08-08 编译任务的执行方法和装置、存储介质及电子装置

Country Status (1)

Country Link
CN (1) CN110489126B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008016A (zh) * 2019-11-29 2020-04-14 宝付网络科技(上海)有限公司 一种基于docker容器多环境编译***及方法
CN111061487A (zh) * 2019-12-16 2020-04-24 厦门市美亚柏科信息股份有限公司 一种基于容器的负载均衡分布式编译***和方法
CN111090436A (zh) * 2019-12-22 2020-05-01 苏州浪潮智能科技有限公司 一种Jenkins编译结果汇总方法、装置及设备
CN111814415A (zh) * 2020-07-09 2020-10-23 长沙海格北斗信息技术有限公司 用于芯片验证的高效回归测试方法
CN111813412A (zh) * 2020-06-28 2020-10-23 中国科学院计算机网络信息中心 构建评测二进制代码比对工具的测试数据集的方法及***
CN112463123A (zh) * 2020-11-25 2021-03-09 北京字跳网络技术有限公司 任务编译方法、装置、网络节点、***及存储介质
CN113127203A (zh) * 2021-04-25 2021-07-16 华南理工大学 面向云边计算的深度学习分布式编译器及构造方法
CN113986239A (zh) * 2021-10-22 2022-01-28 烽火通信科技股份有限公司 分布式编译方法、装置、设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170053231A1 (en) * 2015-04-21 2017-02-23 Somil Desai Automated electronic management system for international trade, logistics and pre-shipment inspection
CN107343000A (zh) * 2017-07-04 2017-11-10 北京百度网讯科技有限公司 用于处理任务的方法和装置
CN107590033A (zh) * 2017-09-07 2018-01-16 网宿科技股份有限公司 一种创建docker容器的方法、装置和***
CN108984179A (zh) * 2018-06-28 2018-12-11 北京奇安信科技有限公司 一种Linux下编译处理方法及装置
CN109936540A (zh) * 2017-12-18 2019-06-25 厦门本能管家科技有限公司 一种基于钱包账本的区块链节点创建方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170053231A1 (en) * 2015-04-21 2017-02-23 Somil Desai Automated electronic management system for international trade, logistics and pre-shipment inspection
CN107343000A (zh) * 2017-07-04 2017-11-10 北京百度网讯科技有限公司 用于处理任务的方法和装置
CN107590033A (zh) * 2017-09-07 2018-01-16 网宿科技股份有限公司 一种创建docker容器的方法、装置和***
CN109936540A (zh) * 2017-12-18 2019-06-25 厦门本能管家科技有限公司 一种基于钱包账本的区块链节点创建方法
CN108984179A (zh) * 2018-06-28 2018-12-11 北京奇安信科技有限公司 一种Linux下编译处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MARKQIAN86: "《使用distcc进行分布式编译来提高编译速度 - markqian86 - C++博客》", 8 June 2018 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008016A (zh) * 2019-11-29 2020-04-14 宝付网络科技(上海)有限公司 一种基于docker容器多环境编译***及方法
CN111008016B (zh) * 2019-11-29 2024-05-14 宝付网络科技(上海)有限公司 一种基于docker容器多环境编译***及方法
CN111061487A (zh) * 2019-12-16 2020-04-24 厦门市美亚柏科信息股份有限公司 一种基于容器的负载均衡分布式编译***和方法
CN111090436A (zh) * 2019-12-22 2020-05-01 苏州浪潮智能科技有限公司 一种Jenkins编译结果汇总方法、装置及设备
CN111813412A (zh) * 2020-06-28 2020-10-23 中国科学院计算机网络信息中心 构建评测二进制代码比对工具的测试数据集的方法及***
CN111814415A (zh) * 2020-07-09 2020-10-23 长沙海格北斗信息技术有限公司 用于芯片验证的高效回归测试方法
CN112463123A (zh) * 2020-11-25 2021-03-09 北京字跳网络技术有限公司 任务编译方法、装置、网络节点、***及存储介质
CN113127203A (zh) * 2021-04-25 2021-07-16 华南理工大学 面向云边计算的深度学习分布式编译器及构造方法
CN113127203B (zh) * 2021-04-25 2022-06-14 华南理工大学 面向云边计算的深度学习分布式编译器及构造方法
CN113986239A (zh) * 2021-10-22 2022-01-28 烽火通信科技股份有限公司 分布式编译方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
CN110489126B (zh) 2021-09-10

Similar Documents

Publication Publication Date Title
CN110489126A (zh) 编译任务的执行方法和装置、存储介质及电子装置
CN108139935B (zh) 业务定义容器的资源约束的扩展
CN109976774B (zh) 区块链节点部署方法、装置、设备和存储介质
CN105117289B (zh) 基于云测试平台的任务分配方法、装置及***
US5996016A (en) Reinitiation of bind calls for IP applications concurrently executing with alternate address
CN107807815B (zh) 分布式处理任务的方法和装置
CN107370796B (zh) 一种基于Hyper TF的智能学习***
CN110391993A (zh) 一种数据处理方法及***
CN107423823B (zh) 一种基于r语言的机器学***台架构设计方法
CN103997544A (zh) 一种资源下载的方法和设备
CN111026634A (zh) 一种接口自动化测试***、方法、装置及存储介质
CN110109748A (zh) 一种混合语言任务执行方法、装置及集群
CN111459621B (zh) 云仿真集成与调度方法、装置、计算机设备和存储介质
CN113867600A (zh) 处理流式数据的开发方法、装置和计算机设备
CN111078516A (zh) 分布式性能测试方法、装置、电子设备
KR20210060203A (ko) 마이크로서비스 구조 재구성 방법 및 장치
CN105553684A (zh) 一种通信***及其应用的路由器升级方法
CN109614232A (zh) 任务处理方法、装置、存储介质和电子装置
CN110225082B (zh) 任务处理方法、装置、电子设备和计算机可读介质
Großmann et al. Continuous integration of applications for ONOS
CN111858041A (zh) 一种数据处理方法及服务器
CN111258675A (zh) 共享前端组件的渲染方法、装置、设备及存储介质
Brogi et al. Modelling the behaviour of management operations in cloud-based applications
CN109508193B (zh) 一种应用部署运行方法、装置、终端设备和介质
CN104821939B (zh) 一种用于实现计算机与移动设备间异步通信的方法和装置

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
GR01 Patent grant
GR01 Patent grant