CN107391221A - 调度服务器、编译服务器及分布式编译方法 - Google Patents
调度服务器、编译服务器及分布式编译方法 Download PDFInfo
- Publication number
- CN107391221A CN107391221A CN201710630023.4A CN201710630023A CN107391221A CN 107391221 A CN107391221 A CN 107391221A CN 201710630023 A CN201710630023 A CN 201710630023A CN 107391221 A CN107391221 A CN 107391221A
- Authority
- CN
- China
- Prior art keywords
- compiler
- server
- compiling
- compiled
- machine
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种调度服务器、编译服务器及分布式编译方法,调度服务器与多个编译服务器通信,调度服务器包括:主编译机选择模块,用于根据多个编译服务器的工作情况选取主编译机,向该主编译机下发编译任务;协助请求接收模块,用于接收主编译机的协助请求;任务分配模块,用于根据所述多个编译服务器的工作情况从编译机,并在为从编译机分配待编译工程模块后下发协助编译通知。通过调度服务器根据编译服务器的工作情况动态决定主编译机及从编译机,并分配编译任务,使得编译服务器可以作为不同编译任务的主编译机或从编译机被多个编译任务复用。如此,大大提高的编译服务器的利用率,减少了编译中的空闲等待时间,提高了分布式编译的效率。
Description
技术领域
本发明涉及分布式数据处理技术领域,具体而言,涉及一种调度服务器、编译服务器及分布式编译方法。
背景技术
软件编译是将源代码编译成机器代码的一种转换计算过程,为了加快编译速度,可以采用分布式的编译方法,由多台编译机同时进行一个任务不同部分的编译。
传统的分布式编译方法中,由一台确定的主编译机下载代码并分配编译任务,多台从编译机独立完成各自的编译任务后,由主编译机完成编译链接的任务。但是,主编译机在执行源代码下载和模块编译工作准备时所有从编译机都是空闲状态,因此编译机资源没有充分利用。另外每台编译机都是串行编译工程模块,没有充分利用每台编译机的多核优势。
发明内容
为了克服现有技术中的上述不足,本发明的目的在于提供一种调度服务器,所述调度服务器与多个编译服务器通信,所述调度服务器包括:
主编译机选择模块,用于接收编译任务,根据所述多个编译服务器的工作情况,选取其中一个编译服务器作为该编译任务的主编译机,向该主编译机下发编译任务;
协助请求接收模块,用于接收所述主编译机根据所述编译任务生成的协助请求,所述协助请求中包括待编译工程模块的数量;
任务分配模块,用于根据所述待编译工程模块的数量及所有编译服务器的工作情况选取至少一个编译服务器作为该编译任务的从编译机,并在为所述从编译机分配待编译工程模块后下发协助编译通知。
本发明的另一目的在于提供一种编译服务器,所述编译服务器与本发明提供的所述调度服务器通信,所述编译服务器包括:
编译任务接收模块,用于接收所述调度服务器下发的编译任务,根据所述编译任务获取相应的源代码;
协助请求生成模块,用于根据所述源代码进行编译准备后,获得所述源代码对应的待编译工程模块的数量,并向所述调度服务器发送该编译任务的协助请求,以使所述调度服务器将所述待编译工程模块分配给至少一个所述编译服务器进行编译;
编译链接模块,用于接收所述调度服务器发送的编译链接通知,对所述至少一个编译服务器编译完成的工程模块进行编译链接。
本发明的另一目的在于提供一种编译服务器,所述编译服务器与本发明提供的所述调度服务器通信,所述编译服务器包括:
协助通知接收模块,用于接收所述调度服务器下发的协助编译通知,所述协助编译通知中包括待编译工程模块的名称、数量及代码路径;
协助编译模块,用于根据所述协助编译通知获取所述待编译工程模块的代码并进行编译;
完成通知模块,用于在编译完成后向所述调度服务器发送协助完成通知。
本发明的另一目的在于提供一种分布式编译方法,应用于包括调度服务器及多个编译服务器的分布式系统,所述方法包括:
所述调度服务器接收编译任务,根据所述多个编译服务器的工作情况,选取其中一个编译服务器作为该编译任务的主编译机,向该主编译机下发编译任务;
被选中主编译机接收所述调度服务器下发的编译任务,根据所述编译任务获取相应的源代码;
根据所述源代码进行编译准备后,获得所述源代码对应的待编译工程模块的数量,并向所述调度服务器发送该编译任务的协助请求;
所述调度服务器接收所述主编译机根据所述编译任务生成的协助请求,根据所述待编译工程模块的数量及所有编译服务器的工作情况选取至少一个编译服务器作为该编译任务的从编译机,并在为所述从编译机分配待编译工程模块后下发协助编译通知;
所述从编译机根据所述协助编译通知获取所述待编译工程模块的代码并进行编译;
所述主编译机对所述从编译机编译完成的工程模块进行编译链接。
相对于现有技术而言,本发明具有以下有益效果:
本发明提供的调度服务器、编译服务器及分布式编译方法,通过所述调度服务器根据编译服务器的工作情况动态决定主编译机及从编译机,并分配编译任务,使得编译服务器可以作为不同编译任务的主编译机或从编译机被多个编译任务复用。如此,大大提高的编译服务器的利用率,减少了编译中的空闲等待时间,提高了分布式编译的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明第一实施例提供的分布式编译系统的示意图;
图2为本发明第一实施例提供的调度服务器的功能模块示意图之一;
图3为本发明第一实施例提供的调度服务器的功能模块示意图之二;
图4为本发明第一实施例提供的编译服务器的编译任务复用示意图;
图5为本发明第二实施例提供的编译服务器的功能模块示意图之一;
图6为本发明第二实施例提供的分布式编译系统的示意图;
图7为本发明第二实施例提供的编译服务器的功能模块示意图之二;
图8为本发明第三实施例提供的编译服务器的功能模块示意图之一;
图9为本发明第三实施例提供的编译服务器的功能模块示意图之二;
图10为本发明第四实施例提供的分布式编译方法的步骤流程示意图。
图标:10-分布式编译系统;100-调度服务器;111-主编译机选择模块;1111-第一参数获取子模块;1112-第一选取子模块;112-协助请求接收模块;113-任务分配模块;1131-第二参数获取子模块;1132-第二选取子模块;1133-编译分配子模块;114-链接通知下发模块;200-编译服务器;211-编译任务接收模块;2111-第一挂载子模块;2112-任务下载子模块;212-协助请求生成模块;2121-编译准备子模块;2122-请求发送子模块;213-编译链接模块;221-协助通知接收模块;222-协助编译模块;2221-第二挂载子模块;2222-代码编译子模块;223-完成通知模块;300-代码服务器;400-数据服务器;500-网络。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例
请参照图1,图1是本实施例提供的一种分布式编译系统10的示意图,所述分布式编译系统10包括调度服务器100及多个编译服务器200。所述调度服务器100用于分配和调度编译任务,所述编译服务器200用于对分配到的编译任务中源代码进行编译。
本实施例提供一种应用于图1所示分布式编译系统10的调度服务器100,以下对所述调度服务器100的功能进行详细阐述,请参照图2,所述调度服务器100包括主编译机选择模块111、协助请求接收模块112及任务分配模块113。
所述主编译机选择模块111,用于接收编译任务,根据所述多个编译服务器200的工作情况,选取其中一个编译服务器200作为该编译任务的主编译机,向该主编译机下发编译任务。
在本实施例中,所述调度服务器100在接收到编译任务后,需要通过所述主编译机选择模块111在所述多个编译服务器200中选取一个作为该编译任务的主编译机。可选地,请参照图3,在本实施例中,所述主编译机选择模块111可以包括所述第一参数获取子模块1111及第一选取子模块1112。
所述第一参数获取子模块1111,用于接收编译任务,获取所述多个编译服务器200的CPU核数及正在执行的编译任务数。
可选地,在本实施例中,所述编译服务器200可以预先向所述调度服务器100发送注册请求,所述注册请求可以包括编译服务器200配置,例如,操作系统、CPU核数、内存大小等。
由于编译服务器200的CPU核数可以表征该编译服务器200可以同时进行的最大编译任务的数量,故在本实施例中,所述第一参数获取子模块1111在接收到编译任务后,遍历每台编译服务器200,获取各个编译服务器200的CPU核数及正在执行的编译任务数以作为选取主编译机的判断参数。
所述第一选取子模块1112,用于根据所述多个编译服务器200的CPU核数及正在执行的编译任务数,计算获得各个编译服务器200的可新增任务数;选取可新增任务数最多的编译服务器200作为所述主编译机。
在本实施例中,所述第一选取子模块1112先根据各个编译服务器200的CPU核数及正在执行的编译任务数,计算获得各个编译服务器200的可新增任务数。若记编译服务器200的CPU核数为T,该编译服务器200正在执行的编译任务数为X,则该服务器可新增任务数R=T-X。
然后,所述第一选取子模块1112选取可新增任务数最多的编译服务器200作为所述主编译机。
在本实施例中,由于所述主编译机需要占用的硬件资源较大,故所述第一选取子模块1112选取当前所述可新增任务数最大的编译服务器200作为所述主编译机。
进一步地,在本实施例中,若所有编译服务器200的可新增任务数都为0时,判定为所有编译服务器200的编译任务均已满载,则所述调度服务器100需要等待一段时间后重新遍历所有编译服务器200。
所述协助请求接收模块112,用于接收所述主编译机根据所述编译任务生成的协助请求,所述协助请求中包括待编译工程模块的数量。
在本实施例中,被选中的主编译机在收到所述调度服务器100下发的编译任务后,进行相应的编译前准备后,根据待编译工程模块的数量发送协助请求给所述调度服务器100,所述调度服务器100的协助请求接收模块112接收所述协助请求。
所述任务分配模块113,用于根据所述待编译工程模块的数量及所有编译服务器200的工作情况选取至少一个编译服务器200作为该编译任务的从编译机,并在为所述从编译机分配待编译工程模块后下发协助编译通知。
在本实施例中,所述调度服务器100在接收到所述协助请求后,需要通所述任务分配模块113在所有编译服务器200中选取至少一个编译服务器200作为该编译任务的从编译机。可选地,请再次参照图3,在本实施例中,所述任务分配模块113可以包括第二参数获取子模块1131、第二选取子模块1132及编译分配子模块1133。
所述第二参数获取子模块1131,用于获取包括所述主编译机在内的所有编译服务器200的CPU核数及正在执行的编译任务数。
为了有效利用所述编译服务器200的编译资源,在本实施例中,所述第二参数获取子模块1131在接收到所述协助请求后,遍历所有编译服务器200,获取包括所述主编译机在内的所有编译服务器200的CPU核数及正在执行的编译任务数以作为选取从编译机的判断参数。
所述第二选取子模块1132,用于根据所述所有编译服务器200的CPU核数及正在执行的编译任务数,计算各个编译服务器200的可新增任务数;选取可新增任务数不为0的至少一个编译服务器200作为所述从编译机。
在本实施例中,所述第二选取子模块1132先根据所有编译服务器200的CPU核数及正在执行的编译任务数,计算各个编译服务器200的可新增任务数。
然后,所述第二选取子模块1132选取所述可新增任务数不为0的编译服务器200作为所述从编译机。
在本实施例中,若编译服务器200的可新增任务数不为0则表示该编译服务器200有能力承担新的编译任务,所述第二选取子模块1132选取所有可新增任务数不为0的编译服务器200作为所述从编译机。
所述编译分配子模块1133,用于根据所述从编译机的CPU核数及正在执行的编译任务数为所述从编译机分配待编译工程模块后下发协助编译通知。
所述编译分配子模块1133根据每个从编译机的可新增任务数及所有从编译机的可新增任务数的总和,计算得到每个从编译机的分配比例。
例如,若某从编译机的可新增任务数为r,所有从编译机的可新增任务数的总和为R,则该从编译机的分配比例为r/R。
所述编译分配子模块1133基于所述从编译机的分配比例及所述待编译工程模块的总数量为所述从编译机分配待编译工程模块后下发协助编译通知。
例如,所述待编译工程模块的总数量为N,某从编译机的分配比例为r/R,则该从编译机分配到的待编译工程模块的数量为N*r/R。所述编译分配子模块1133向该从编译机下发对应数量的协助编译通知。如此,实现从编译机的负载均衡。
基于上述设计,所述调度服务器100在接收到编译任务时,根据当前所述多个编译服务器200的工作情况动态的选取主编译机或从编译机,同一台编译服务器200可以同时参与多个不同的编译任务。
例如,请参照图4,编译服务器200A即可以作为编译任务X的主编译机,在满足条件的情况下也可以作为编译任务X的从机,同时还可以作为另一个编译任务Y的从编译机。
编译服务器200A作为编译任务X的主编译机,在完成编译准备后,也可以作为编译任务X的从机进行待编译模块的编译工作做。同时,还可以作为编译任务Y的从编译机,进行编译任务Y的待编译工程模块的编译工作。
如此,大大提高了各个编译服务器200的利用率,减少的了空闲等待时间,通过动态分配任务的方式,提高了分布式编译的效率。
进一步地,请再次参照图2,在本实施例中,所述调度服务器100还可以包括链接通知下发模块114。
所述链接通知下发模块114,用于接收所述从编译机在对分配的工程模块编译完成后发送的协助完成通知,并在接收到所有从编译机发送的协助完成通知后,向所述主编译机发送编译链接通知,使所述主编译机对所述从编译机编译完成的工程模块进行编译链接。
在本实施例中,所述从编译机在完成分配到的待编译工程模块的编译工作后,向所述调度服务器100发送协助完成通知。所述调度服务器100在接收到编译任务的所有从编译机发送的协助完成通知后,向该编译任务的主编译机发送编译链接通知,使所述主编译机对所述从编译机编译完成的工程模块进行编译链接,完成编译任务。
第二实施例
本实施例提供一种应用于图1所示分布式编译系统10的编译服务器200,以下对所述编译服务器200的功能进行详细阐述,请参照图5,所述编译服务器200包括编译任务接收模块211、协助请求生成模块212及编译链接模块213。
所述编译任务接收模块211,用于接收所述调度服务器100下发的编译任务,根据所述编译任务获取相应的源代码。
在本实施例中,编译服务器200在接收所述调度服务器100下发的编译任务时,即编译服务器200作为第一实施例中该编译任务的主编译机。所述主编译机根据接收到的编译任务获取相应的源代码。
可选地,请参照图6,在本实施例中,所述分布式编译系统10还包括代码服务器300及数据服务器400,所述编译服务器200还与所述代码服务器300及数据服务器400通信。所述代码服务器300用于提供所述编译任务的源代码,所述数据服务器400用于为多个编译服务器200提供共享存储空间。请参照图7,所述编译任务接收模块211包括第一挂载子模块2111及任务下载子模块2112。
所述第一挂载子模块2111,用于在所述数据服务器400中挂载一个共享存储区域。
在本实施例中,所述共享存储区域用于集中存放所述编译任务的源代码及编译结果,对所有编译服务器200开放。可选的,所述第一挂载子模块2111可以通过NFS(NetworkFile System,网络文件系统)协议在所述数据服务器400中挂载一个共享存储区域。类似在Windows系统中在本机操作另外一台机器上的存储数据的磁盘映射方式,。
所述任务下载子模块2112,用于根据接收到的所述编译任务从所述代码服务器300下载对应的源代码至所述共享存储区域。
可选地,所述任务下载子模块2112根据所述编译任务中的源代码路径(如URL路径)从所述数据服务器400下载源代码。
在本实施例中,所述任务下载子模块2112在将所述源代码下载至共享存储区域前,先根据所述编译任务检测所述数据服务器400中是否存在该编译任务历史版本的代码。
当不存在时,即表示该编译任务之前尚未被编译过,则从所述代码服务器300下载该编译任务的所有源代码至所述共享存储区域。
当存在时,即表示该编译任务之前有较早的版本已经执行过编译,则从所述代码服务器300下载该编译任务的更新部分的源代码至所述共享存储区域。如此,可以减少源代码的下载量,节约了下载时间。
不同的编译任务在所述数据服务器400上拥有不同的共享存储区域。
所述协助请求生成模块212,用于根据所述源代码进行编译准备后,获得所述源代码对应的待编译工程模块的数量,并向所述调度服务器100发送该编译任务的协助请求,以使所述调度服务器100将所述待编译工程模块分配给至少一个编译服务器200进行编译。
请再次参照图7,在本实施例中,所述协助请求生成模块212可以包括编译准备子模块2121及请求发送子模块2122。
所述编译准备子模块2121,用于根据下载的所述源代码进行编译准备后,获得所述源代码中待编译工程模块的名称、数量及代码路径,所述代码路径为该工程模块的代码在所述数据服务器400中的存储路径。
可选地,在本实施例中,所述编译准备子模块2121针对更新下载的源代码部分进行编译准备,例如,编译生成动态的公共头文件。然后获得下载更新部分源代码中待编译工程模块名称、数量及代码路径。如此,仅针对有更新的部分进行编译准备,使从编译机只编译更新的代码部分,缩短了编译时间,提高了编译效率。
所述请求发送子模块2122,用于向所述调度服务器100发送协助请求,所述协助请求中包括所述待编译工程模块名称、数量及代码路径,以使所述调度服务器100将通知所述至少一个编译服务器200获取所述待编译工程模块并进行编译。
在本实施例中,所述请求发送子模块2122向所述调度服务器100发送协助请求后,开始等待从编译机完成所述待编译工程模块的编译工作。可以理解的是,请求协助编译的部分不包括所述编译任务的总工程模块。
所述编译链接模块213,用于接收所述调度服务器100发送的编译链接通知,对所述至少一个编译服务器200编译完成的工程模块进行编译链接。
所述编译链接模块213在接收到所述调度服务器100发送的编译链接通知后,先进行所有工程模块的编译结果检查,然后进行总工程模块的编译和链接动作。
第三实施例
本实施例提供一种应用于图1所示分布式编译系统10的编译服务器200,以下对所述编译服务器200的功能进行详细阐述,请参照图8,所述编译服务器200包括协助通知接收模块221、协助编译模块222及完成通知模块223。
所述协助通知接收模块221,用于接收所述调度服务器100下发的协助编译通知,所述协助编译通知中包括待编译工程模块的名称、数量及代码路径。
在本实施例中,编译服务器200在接收所述调度服务器100针对某编译任务下发的协助编译通知时,即作为第一实施例中该编译任务的从编译机。所述主编译机根据接收到的编译任务获取相应的源代码。
所述协助编译模块222,用于根据所述协助编译通知获取所述待编译工程模块的代码并进行编译。
可选地,请再次参照图6,在本实施例中,所述从编译机同样与第二实施例中的所述代码服务器300及数据服务器400通信。请参照图9,所述协助编译模块222包括第二挂载子模块2221及代码编译子模块2222。
所述第二挂载子模块2221,用于根据所述待编译工程模块的代码路径挂载到所述数据服务器400相应的共享存储区域。
所述代码编译子模块2222,用于对所述共享存储区域中所述待编译工程模块的代码进行编译。
在本实施例中,所述代码编译子模块2222依次对分配到的待编译工程模块进行逐个编译,其中,针对每个待编译工程模块进行并行编译,例如,使用make工具提供的并行编译功能对每个待编译工程模块的代码进行并行编译。
然后,所述从编译机在将编译结果存储至挂载的所述共享存储区域后,卸载挂载的所述共享存储区域。
所述完成通知模块223,用于在编译完成后向所述调度服务器100发送协助完成通知。
第四实施例
请参照图10,本实施例提供一种应用于图1所示分布式编译系统10的分布式编译方法,下面对所述方法的各个步骤进行解释。
步骤S110,所述调度服务器100接收编译任务,根据所述多个编译服务器200的工作情况,选取其中一个编译服务器200作为该编译任务的主编译机,向该主编译机下发编译任务。
在本实施例中,所述步骤S110可以由第一实施例中所述调度服务器100的主编译机选择模块111执行,关于步骤S110的详细阐述可以参见对所述主编译机选择模块111的描述。
步骤S120,被选中主编译机接收所述调度服务器100下发的编译任务,根据所述编译任务获取相应的源代码。
在本实施例中,所述步骤S120可以由第二实施例中所述编译服务器200的编译任务接收模块211执行,关于步骤S120的详细阐述可以参见对所述编译任务接收模块211的描述。
步骤S130,根据所述源代码进行编译准备,获得所述源代码对应的待编译工程模块的数量,并向所述调度服务器100发送该编译任务的协助请求。
在本实施例中,所述步骤S130可以由第二实施例中所述编译服务器200的协助请求生成模块212执行,关于步骤S130的详细阐述可以参见对所述协助请求生成模块212的描述。
步骤S140,所述调度服务器100接收所述主编译机根据所述编译任务生成的协助请求,根据所述待编译工程模块的数量及所述编译服务器200的工作情况选取至少一个编译服务器200作为该编译任务的从编译机,并在为所述从编译机分配待编译工程模块后下发协助编译通知。
在本实施例中,所述步骤S140可以由第一实施例中所述调度服务器100的协助请求接收模块112及任务分配模块113执行,关于步骤S140的详细阐述可以参见对所述协助请求接收模块112及任务分配模块113的描述。
步骤S150,所述从编译机根据所述协助编译通知获取所述待编译工程模块的代码并进行编译。
在本实施例中,所述步骤S150可以由第三实施例中所述编译服务器200的协助编译模块222执行,关于步骤S150的详细阐述可以参见对所述协助编译模块222的描述。
步骤S160,所述主编译机对所述从编译机编译完成的工程模块进行编译链接。
在本实施例中,所述步骤S160可以由第二实施例中所述编译服务器200的编译链接模块213执行,关于步骤S160的详细阐述可以参见对所述编译链接模块213的描述。
综上所述,本发明提供的调度服务器100、编译服务器200及分布式编译方法,通过所述调度服务器100根据编译服务器200的工作情况动态决定主编译机及从编译机,并分配编译任务,使得编译服务器200可以作为不同编译任务的主编译机或从编译机被多个编译任务复用。如此,大大提高的编译服务器200的利用率,减少了编译中的空闲等待时间,提高了分布式编译的效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种调度服务器,其特征在于,所述调度服务器与多个编译服务器通信,所述调度服务器包括:
主编译机选择模块,用于接收编译任务,根据所述多个编译服务器的工作情况,选取其中一个编译服务器作为该编译任务的主编译机,向该主编译机下发编译任务;
协助请求接收模块,用于接收所述主编译机根据所述编译任务生成的协助请求,所述协助请求中包括待编译工程模块的数量;
任务分配模块,用于根据所述待编译工程模块的数量及所有编译服务器的工作情况选取至少一个编译服务器作为该编译任务的从编译机,并在为所述从编译机分配待编译工程模块后下发协助编译通知。
2.根据权利要求1所述的调度服务器,其特征在于,所述调度服务器还包括:
链接通知下发模块,用于接收所述从编译机在对分配的工程模块编译完成后发送的协助完成通知,并在接收到所有从编译机发送的协助完成通知后,向所述主编译机发送编译链接通知,使所述主编译机对所述从编译机编译完成的工程模块进行编译链接。
3.根据权利要求1所述的调度服务器,其特征在于,所述主编译机选择模块包括:
第一参数获取子模块,用于接收编译任务,获取所述多个编译服务器的CPU核数及正在执行的编译任务数;
第一选取子模块,用于根据所述多个编译服务器的CPU核数及正在执行的编译任务数,计算获得各个编译服务器的可新增任务数;选取可新增任务数最多的编译服务器作为所述主编译机。
4.根据权利要求1所述的调度服务器,其特征在于,所述任务分配模块包括:
第二参数获取子模块,用于获取包括所述主编译机在内的所有编译服务器的CPU核数及正在执行的编译任务数;
第二选取子模块,用于根据所述所有编译服务器的CPU核数及正在执行的编译任务数,计算各个编译服务器的可新增任务数;选取可新增任务数不为0的至少一个编译服务器作为所述从编译机;
编译分配子模块,用于为所述从编译机分配待编译工程模块后下发协助编译通知。
5.根据权利要求4所述的调度服务器,其特征在于,所述编译分配子模块为所述从编译机分配待编译工程模块的方式,包括:
根据每个从编译机的可新增任务数及所有从编译机的可新增任务数的总和,计算得到每个从编译机的分配比例;
基于所述从编译机的分配比例及所述待编译工程模块的总数量为所述从编译机分配待编译工程模块。
6.一种编译服务器,其特征在于,所述编译服务器与权利要求1-5中任意一项所述的调度服务器通信,所述编译服务器包括:
编译任务接收模块,用于接收所述调度服务器下发的编译任务,根据所述编译任务获取相应的源代码;
协助请求生成模块,用于根据所述源代码进行编译准备,获得所述源代码对应的待编译工程模块的数量,并向所述调度服务器发送该编译任务的协助请求,以使所述调度服务器将所述待编译工程模块分配给至少一个编译服务器进行编译;
编译链接模块,用于接收所述调度服务器发送的编译链接通知,对所述至少一个编译服务器编译完成的工程模块进行编译链接。
7.根据权利要求6所述的编译服务器,其特征在于,所述编译服务器还与代码服务器及数据服务器通信;所述编译任务接收模块包括:
第一挂载子模块,用于在所述数据服务器中挂载一个共享存储区域;
任务下载子模块,用于根据接收到的所述编译任务从所述代码服务器下载对应的源代码至所述共享存储区域。
8.根据权利要求7所述的编译服务器,其特征在于,所述任务下载子模块从所述代码服务器下载对应的源代码至所述共享存储区域的方式,包括:
根据所述编译任务检测所述数据服务器中是否存在该编译任务历史版本的代码;
当不存在时,从所述代码服务器下载该编译任务的所有源代码至所述共享存储区域;
当存在时,从所述代码服务器下载该编译任务的更新部分的源代码至所述共享存储区域。
9.根据权利要求6-8任一项所述的编译服务器,其特征在于,所述协助请求生成模块包括:
编译准备子模块,用于根据下载的所述源代码进行编译准备后,获得所述源代码中待编译工程模块的名称、数量及代码路径,所述代码路径为该工程模块的代码在所述数据服务器中的存储路径;
请求发送子模块,用于向所述调度服务器发送协助请求,所述协助请求中包括所述待编译工程模块名称、数量及代码路径,以使所述调度服务器将通知所述至少一个编译服务器获取所述待编译工程模块并进行编译。
10.一种编译服务器,应用于与权利要求1-5中任意一项所述的调度服务器通信,其特征在于,所述编译服务器包括:
协助通知接收模块,用于接收所述调度服务器下发的协助编译通知,所述协助编译通知中包括待编译工程模块的名称、数量及代码路径;
协助编译模块,用于根据所述协助编译通知获取所述待编译工程模块的代码并进行编译;
完成通知模块,用于在编译完成后向所述调度服务器发送协助完成通知。
11.根据权利要求10所述的编译服务器,其特征在于,所述编译服务器还与数据服务器通信,所述待编译工程模块的代码路径包括该待编译工程模块的代码在所述数据服务器中所在的共享存储区域;所述协助编译模块包括:
第二挂载子模块,用于根据所述待编译工程模块的代码路径挂载到所述数据服务器相应的共享存储区域;
代码编译子模块,用于对所述共享存储区域中所述待编译工程模块的代码进行编译。
12.一种分布式编译方法,应用于包括调度服务器及多个编译服务器的分布式系统,其特征在于,所述方法包括:
所述调度服务器接收编译任务,根据所述多个编译服务器的工作情况,选取其中一个编译服务器作为该编译任务的主编译机,向该主编译机下发编译任务;
被选中主编译机接收所述调度服务器下发的编译任务,根据所述编译任务获取相应的源代码;
根据所述源代码进行编译准备,获得所述源代码对应的待编译工程模块的数量,并向所述调度服务器发送该编译任务的协助请求;
所述调度服务器接收所述主编译机根据所述编译任务生成的协助请求,根据所述待编译工程模块的数量及所有编译服务器的工作情况选取至少一个编译服务器作为该编译任务的从编译机,并在为所述从编译机分配待编译工程模块后下发协助编译通知;
所述从编译机根据所述协助编译通知获取所述待编译工程模块的代码并进行编译;
所述主编译机对所述从编译机编译完成的工程模块进行编译链接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710630023.4A CN107391221B (zh) | 2017-07-28 | 2017-07-28 | 调度服务器、编译服务器及分布式编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710630023.4A CN107391221B (zh) | 2017-07-28 | 2017-07-28 | 调度服务器、编译服务器及分布式编译方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391221A true CN107391221A (zh) | 2017-11-24 |
CN107391221B CN107391221B (zh) | 2020-08-07 |
Family
ID=60342773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710630023.4A Active CN107391221B (zh) | 2017-07-28 | 2017-07-28 | 调度服务器、编译服务器及分布式编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391221B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334325A (zh) * | 2017-12-26 | 2018-07-27 | 努比亚技术有限公司 | 一种编译方法、计算机及计算机可读存储介质 |
CN110018830A (zh) * | 2019-04-04 | 2019-07-16 | 航天云网科技发展有限责任公司 | 一种基于分布式集群的大型软件编译装置 |
CN111580802A (zh) * | 2020-04-30 | 2020-08-25 | 完美世界(北京)软件科技发展有限公司 | 持续集成方法、基于分布式编译的持续集成方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130125099A1 (en) * | 2011-11-14 | 2013-05-16 | Microsoft Corporation | Modular compilation using partial compilers |
CN103440136A (zh) * | 2013-09-05 | 2013-12-11 | 迈普通信技术股份有限公司 | 分布式编译的方法及系统 |
CN106095522A (zh) * | 2016-06-03 | 2016-11-09 | 北京奇虎科技有限公司 | 一种实现分布式编译的方法和分布式编译系统 |
CN106325966A (zh) * | 2015-06-29 | 2017-01-11 | 中兴通讯股份有限公司 | 软件编译方法及装置 |
CN106445681A (zh) * | 2016-08-31 | 2017-02-22 | 东方网力科技股份有限公司 | 分布式任务调度系统及方法 |
-
2017
- 2017-07-28 CN CN201710630023.4A patent/CN107391221B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130125099A1 (en) * | 2011-11-14 | 2013-05-16 | Microsoft Corporation | Modular compilation using partial compilers |
CN103440136A (zh) * | 2013-09-05 | 2013-12-11 | 迈普通信技术股份有限公司 | 分布式编译的方法及系统 |
CN106325966A (zh) * | 2015-06-29 | 2017-01-11 | 中兴通讯股份有限公司 | 软件编译方法及装置 |
CN106095522A (zh) * | 2016-06-03 | 2016-11-09 | 北京奇虎科技有限公司 | 一种实现分布式编译的方法和分布式编译系统 |
CN106445681A (zh) * | 2016-08-31 | 2017-02-22 | 东方网力科技股份有限公司 | 分布式任务调度系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334325A (zh) * | 2017-12-26 | 2018-07-27 | 努比亚技术有限公司 | 一种编译方法、计算机及计算机可读存储介质 |
CN110018830A (zh) * | 2019-04-04 | 2019-07-16 | 航天云网科技发展有限责任公司 | 一种基于分布式集群的大型软件编译装置 |
CN111580802A (zh) * | 2020-04-30 | 2020-08-25 | 完美世界(北京)软件科技发展有限公司 | 持续集成方法、基于分布式编译的持续集成方法及系统 |
CN111580802B (zh) * | 2020-04-30 | 2024-03-22 | 完美世界(北京)软件科技发展有限公司 | 持续集成方法、基于分布式编译的持续集成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107391221B (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101267452B (zh) | 一种web服务合成方案转换方法及应用服务器 | |
CN107391221A (zh) | 调度服务器、编译服务器及分布式编译方法 | |
CN105446799A (zh) | 一种计算机系统中进行规则管理的方法及系统 | |
CN110716975B (zh) | 一种数据接口生成方法以及数据接口共享平台 | |
CN107807815A (zh) | 分布式处理任务的方法和装置 | |
CN106874189A (zh) | 一种电网实时数据库系统的自动化测试系统的实现方法 | |
CN105743946A (zh) | 模板部署方法及装置 | |
CN111399814A (zh) | 一种构建任务可视化编排方法及装置 | |
CN107193609A (zh) | 应用中功能模块调用方法及装置、电子设备 | |
CN107092981A (zh) | 紧密衔接工序组优先加工的二车间综合调度方法 | |
CN106648900A (zh) | 基于智能电视的超算方法及系统 | |
CN109710263A (zh) | 代码的编译方法、装置、存储介质及电子设备 | |
CN110069278A (zh) | 一种自动化分布式多任务打包方法及系统 | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN110225082B (zh) | 任务处理方法、装置、电子设备和计算机可读介质 | |
CN107707661B (zh) | 一种负载均衡资源管理方法和装置 | |
CN104793928A (zh) | 一种基于Java的开发与运行平台实现方法及系统 | |
CN109783141A (zh) | 异构调度方法 | |
CN110377367A (zh) | 组件配置方法、装置、电子终端及计算机可读存储介质 | |
CN103188089B (zh) | 多产品业务开通资源配置方法和系统 | |
CN103812873B (zh) | 业务服务请求处理方法和装置 | |
CN112035439B (zh) | 数据迁移方法及装置、计算机设备及计算机可读存储介质 | |
CN112579470B (zh) | 一种软件动态库调试的编译链接方法及系统 | |
CN109005067B (zh) | 一种用于监控服务器集群的硬件资源的方法和装置 | |
US7159012B2 (en) | Computational data processing system and computational process implemented by means of such a system |
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 |