分布式编译的方法及系统技术方案

技术编号:33922587 阅读:12 留言:0更新日期:2022-06-25 21:15
本公开披露了一种分布式编译方法及系统。该方法应用于服务端,该方法包括:接收客户端发送的待编译文件的编译任务,其中,所述编译任务包括第一子任务;获取编译集群中每台执行机的负载信息;根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。群中选择用于执行所述第一子任务的执行机。群中选择用于执行所述第一子任务的执行机。

【技术实现步骤摘要】
分布式编译的方法及系统


[0001]本公开涉及编译
,具体涉及一种分布式编译的方法及系统。

技术介绍

[0002]编译是指将某种语言的对象文件转化为使机器可识别且执行目标程序的过程。为了加快编译速度,可以采用分布式的编译方法,由多台执行机同时进行一个编译任务的不同子任务。然而,相关技术提供的分布式编译方法无法满足对编译效率的需求。

技术实现思路

[0003]有鉴于此,本公开提供一种分布式编译方法及系统,以提升分布式编译的编译效率。
[0004]第一方面,提供一种分布式编译方法,应用于服务端,所述方法包括:接收客户端发送的待编译文件的编译任务,其中,所述编译任务包括第一子任务;获取编译集群中每台执行机的负载信息;根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。
[0005]可选地,在一些实施例中,所述根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机由反向代理完成。
[0006]可选地,在一些实施例中,所述方向代理包括nginx。
[0007]可选地,在一些实施例中,所述nginx用于调用负载均衡组件,以完成所述根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。
[0008]可选地,在一些实施例中,所述nginx包括多个nginx入口。
[0009]可选地,在一些实施例中,所述编译集群包括第一执行机,所述获取编译集群中每台执行机的负载信息包括:上报所述第一执行机的负载信息。
[0010]可选地,在一些实施例中,所述上报所述第一执行机的负载信息由上报组件完成。
[0011]可选地,在一些实施例中,所述获取编译集群中每台执行机的负载信息还包括:收集和存储所述编译集群中每台执行机上报的所述负载信息。
[0012]可选地,在一些实施例中,所述收集和存储所述编译集群中每台执行机上报的所述负载信息由服务发现组件完成。
[0013]可选地,在一些实施例中,所述服务发现组件包括以下工具中的至少一种:etcd、redis以及zookeeper。
[0014]可选地,在一些实施例中,所述编译集群中的执行机包括容器。
[0015]可选地,在一些实施例中,所述根据所述负载信息从所述编译集群中选择用于执行每个子任务的执行机包括:利用所述负载信息得到所述编译集群中每个执行机的权重;根据所述每个执行机的权重选择用于执行所述第一子任务的执行机。
[0016]可选地,在一些实施例中,所述负载信息为所述执行机的实时负载信息。
[0017]可选地,在一些实施例中,所述客户端为distcc客户端。
[0018]第二方面,提供一种分布式编译的系统,应用于服务端,所述系统包括:接收组件,被配置为接收客户端发送的待编译文件的编译任务,其中,所述编译任务包括第一子任务;获取组件,被配置为获取编译集群中每台执行机的负载信息;选择组件,被配置为根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。
[0019]可选地,在一些实施例中,所述选择组件包括反向代理服务器。
[0020]可选地,在一些实施例中,所述反向代理服务器包括nginx。
[0021]可选地,在一些实施例中,所述选择组件还包括负载均衡组件,所述nginx用于调用所述负载均衡组件,以根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。
[0022]可选地,在一些实施例中,所述nginx包括多个nginx入口。
[0023]可选地,在一些实施例中,所述编译集群包括第一执行机,所述获取组件包括:上报组件,被配置为上报所述第一执行机的负载信息。
[0024]可选地,在一些实施例中,所述获取组件还包括:服务发现组件,被配置为收集和存储所述上报组件上报的所述负载信息。
[0025]可选地,在一些实施例中,所述服务发现组件包括以下工具中的至少一种:etcd、redis以及zookeeper。
[0026]可选地,在一些实施例中,所述根据所述负载信息从所述编译集群中选择用于执行每个子任务的执行机包括:利用所述负载信息得到所述编译集群中每个执行机的权重;根据所述每个执行机的权重选择用于执行所述第一子任务的执行机。
[0027]可选地,在一些实施例中,所述负载信息为所述执行机的实时负载信息。
[0028]可选地,在一些实施例中,所述客户端为distcc客户端。
[0029]第三方面,提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
[0030]第四方面,提供一种计算机程序产品,包括可执行代码,当所述可执行代码被执行时,能够实现如第一方面所述的方法。
[0031]本公开实施例提供的分布式编译方法,通过在服务端利用执行机的负载信息确定用于执行编译任务中子任务的执行机,可以简化分布式编译客户端的配置,提升分布式编译的效率。
附图说明
[0032]图1是相关技术提供的分布式编译系统的结构示意图。
[0033]图2是本公开一实施例提供的分布式编译方法的流程示意图。
[0034]图3是本公开一实施例提供的分布式编译系统的结构示意图。
[0035]图4是本公开又一实施例提供的分布式编译系统的结构示意图。
[0036]图5是本公开又一实施例提供分布式编译系统的结构示意。
[0037]图6是本公开一实施例提供的客户端视角的分布式编译系统的结构示意图。
具体实施方式
[0038]下面对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例
仅是本公开一部分实施例,而不是全部的实施例。
[0039]为了使方案更加清楚,首先对与本公开方案相关的概念进行简要介绍。
[0040]程序设计语言是用于书写计算机程序的语言。高级程序设计语言(或称高级语言)是程序设计语言的一种。高级语言在不同的平台上会被编译成不同的机器语言,而不是直接被机器执行。因此,高级语言使得计算机程序设计语言不再过度地倚赖某种特定的机器或环境。高级语言例如可以指java、c、c++等。
[0041]计算机程序(或称计算机软件或软件),是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。
[0042]计算机程序通常包括两种表现形式:目标代码和源代码。目标代码(或称目标程序),指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。源代码(或称源程序)可以由高级语言编写。通过编译可以将源代码转换为目标代码。编译可以指将高级语言(例如源代码)变成计算机可以识别的二进制语言(例如目标代码)的过程。
[0043]随着程序中源代码的体量增加,单机编译(或称本地编译)逐渐无法满足程序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式编译方法,应用于服务端,所述方法包括:接收客户端发送的待编译文件的编译任务,其中,所述编译任务包括第一子任务;获取编译集群中每台执行机的负载信息;根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。2.根据权利要求1所述的方法,所述根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机由反向代理完成。3.根据权利要求2所述的方法,所述方向代理包括nginx。4.根据权利要求3所述的方法,所述nginx用于调用负载均衡组件,以完成所述根据所述负载信息从所述编译集群中选择用于执行所述第一子任务的执行机。5.根据权利要求3所述的方法,所述nginx包括多个nginx入口。6.根据权利要求2所述的方法,所述编译集群包括第一执行机,所述获取编译集群中每台执行机的负载信息包括:上报所述第一执行机的负载信息。7.根据权利要求6所述的方法,所述上报所述第一执行机的负载信息由上报组件完成。8.根据权利要求6所述的方法,所述获取编译集群中每台执行机的负载信息还包括:收集和存储所述编译集群中每台执行机上报的所述负载信息。9.根据权利要求8所述的方法,所述收集和存储所述编译集群中每台执行机上报的所述负载信息由服务发现组件完成。10.根据权利要求9所述的方法,所述服务发现组件包括以下工具中的至少一种:etcd、redis以及zookeeper。11.根据权利要求1所述的方法,所述编译集群中的执行机包括容器。12.根据权利要求1所述的方法,所述根据所述负载信息从所述编译集群中选择用于执行每个子任务的执行机包括:利用所述负载信息得到所述编译集群中每个执行机的权重;根据所述每个执行机的权重选择用于执行所述第一子任务的执行机。13.根据权利要求1所述的方法,所述负载信息为所述执行机的实...

【专利技术属性】
技术研发人员:温兴森侯宇轩
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1