CN105975276A - 分布式构建系统及方法 - Google Patents
分布式构建系统及方法 Download PDFInfo
- Publication number
- CN105975276A CN105975276A CN201610302191.6A CN201610302191A CN105975276A CN 105975276 A CN105975276 A CN 105975276A CN 201610302191 A CN201610302191 A CN 201610302191A CN 105975276 A CN105975276 A CN 105975276A
- Authority
- CN
- China
- Prior art keywords
- center
- type
- source code
- entity
- distributed
- 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/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种分布式构建系统及方法,分布式构建系统包括构建中心、代码中心、构建实体以及分布式文件系统,构建中心用于接收应用程序的ID号,并从代码中心获取源代码,根据源代码的类型将构建任务分配至构建实体;构建实体用于将构建任务分配至构建子单元;构建子单元用于在接收到所述构建任务时对源代码进行编译,将生成的产品包发送至产品包中心,并将生成的日志发送至日志中心,以及将所述产品包的地址信息和所述日志的地址信息发送至构建中心。与现有技术相比,本发明通过设置多个不同类型的构建实体,提高了构建任务的执行效率;通过将编译生成的产品包和日志存放至分布式文件系统,充分保证了构建系统的高可用性。
Description
技术领域
本发明涉及应用程序领域,特别涉及一种分布式构建系统及方法。
背景技术
众所周知,应用程序在发布之前需要先将编写完成的源代码进行编译,才能继续执行后续的发布过程。目前,一般采用构建系统来完成应用程序源代码的编译过程,但是,现有的构建系统存在编译效率低和资源浪费等问题,同时,也无法保证构建系统的高可用性。
发明内容
本发明要解决的技术问题是为了克服现有技术中构建系统编译效率低、资源浪费以及无法保证高可用性的缺陷,提供一种资源利用率高同时能够保证高可用性的分布式构建系统及方法。
本发明是通过下述技术方案来解决上述技术问题的:
一种分布式构建系统,其特点在于,包括一构建中心、一代码中心、多个不同类型的构建实体以及一分布式文件系统,每种类型的构建实体均包括多个构建子单元,所述分布式文件系统包括一产品包中心和一日志中心;
所述构建中心用于接收一应用程序的ID号,并根据所述ID号从所述代码中心获取与所述应用程序对应的源代码,以及根据所述源代码的类型将所述应用程序的一构建任务分配至与所述源代码的类型相同的一构建实体;
所述构建实体用于将所述构建任务分配至处于空闲状态的任一构建子单元;
所述构建子单元用于在接收到所述构建任务时对所述源代码进行编译,将生成的产品包发送至所述产品包中心,并将生成的日志发送至所述日志中心,以及将所述产品包的地址信息和所述日志的地址信息发送至所述构建中心。
本方案中,代码中心中存储有预先编写好的应用程序的源代码,构建中心根据接收到的应用程序的ID号可以从代码中心中获取到相应的应用程序的源代码。
本方案中,通过设置多个不同类型的构建实体,能够使得与应用程序对应的源代码的类型相同的构建实体执行所述应用程序的构建任务。与现有技术中无论与应用程序对应的源代码为何种类型均采用同一构建实体执行构建任务相比,本发明将不同类型的构建任务分配至相应类型的构建实体,有效地提高了构建任务的执行效率。
本方案中,每种类型的构建实体均包括多个构建子单元,构建实体将所述构建任务分配至处于空闲状态的任一构建子单元。举个例子,酒店类型的构建实体A包括4个构建子单元,编号分别为A1、A2、A3、A4,当构建实体A接收到构建任务后,先分别判断这4个构建子单元的状态,其中,A1和A4处于忙碌状态,A2和A3处于空闲状态,判断完成后构建实体A可以将构建任务分配至构建子单元A2,也可以将构建任务分配至构建子单元A3。
本方案的分布式构建系统还包括分布式文件系统,其中,分布式文件系统包括产品包中心和日志中心,执行构建任务的构建子单元用于将编译过程中生成的产品包发送至所述产品包中心,并将编译过程中生成的日志发送至所述日志中心,同时还分别将产品包和日志的地址信息发送至构建中心。之后,可以在构建中心中通过查看产品包和日志的地址信息得到产品包和日志的具体地址,并从分布式文件系统中获取产品包和日志。本方案通过将编译生成的产品包和日志存放至分布式文件系统,使得产品包和日志都得到了多重备份,充分保证了构建系统的高可用性。
较佳地,所述构建中心还用于接收所述应用程序的构建参数,并将所述构建参数集成至所述构建任务中;所述构建子单元还用于根据所述构建参数对所述源代码进行编译。
较佳地,每种类型的构建实体的数量至少为两个,所述构建中心还用于对与所述源代码的类型相同的构建实体进行故障判断,并将所述构建任务分配至与所述源代码的类型相同且无故障的任一构建实体。
本方案中,为了进一步提高构建系统的高可用性,将每种类型的构建实体的数量设置为至少两个,避免了构建中心将构建任务分配至存在故障的构建实体中。其中,构建中心对构建实体进行故障判断的具体做法可以为:构建中心先发送一请求指令至构建实体,若构建实体向构建中心反馈一正确的应答指令,则判断所述构建实体无故障;若构建实体未向构建中心反馈任何指令或者反馈的应答指令有误,则判断所述构建实体有故障。
较佳地,所述源代码的类型包括语言类型和业务类型。
较佳地,所述语言类型包括.NET(一种编程语言)和JAVA(一种编程语言),和/或,
所述业务类型包括机票、酒店、旅游、火车票,和/或,
所述构建参数包括构建环境。
其中,语言类型、业务类型以及构建参数不限于本方案中的上述类型,还可以根据应用程序的源代码的类型进行设置。
本发明还提供一种分布式构建方法,其特点在于,利用如上所述的分布式构建系统实现,所述分布式构建方法包括以下步骤:
S1、所述构建中心接收一应用程序的ID号,并根据所述ID号从所述代码中心获取与所述应用程序对应的源代码,以及根据所述源代码的类型将所述应用程序的一构建任务分配至与所述源代码的类型相同的一构建实体;
S2、所述构建实体将所述构建任务分配至处于空闲状态的任一构建子单元;
S3、所述构建子单元在接收到所述构建任务时对所述源代码进行编译,将生成的产品包发送至所述产品包中心,并将生成的日志发送至所述日志中心,以及将所述产品包的地址信息和所述日志的地址信息发送至所述构建中心。
较佳地,步骤S1中还包括:所述构建中心接收所述应用程序的构建参数,并将所述构建参数集成至所述构建任务中;
步骤S3中还包括:所述构建子单元根据所述构建参数对所述源代码进行编译。
较佳地,每种类型的构建实体的数量至少为两个,步骤S1中还包括:所述构建中心对与所述源代码的类型相同的构建实体进行故障判断,并将所述构建任务分配至与所述源代码的类型相同且无故障的任一构建实体。
较佳地,所述源代码的类型包括语言类型和业务类型。
较佳地,所述语言类型包括.NET和JAVA,和/或,
所述业务类型包括机票、酒店、旅游、火车票,和/或,
所述构建参数包括构建环境。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:与现有技术相比,本发明通过设置多个不同类型的构建实体,能够使得与应用程序对应的源代码的类型相同的构建实体执行所述应用程序的构建任务,提高了构建任务的执行效率;本发明还通过将编译生成的产品包和日志存放至分布式文件系统,使得产品包和日志都得到了多重备份,充分保证了构建系统的高可用性。
附图说明
图1为本发明实施例的分布式构建系统的结构框图。
图2为本发明实施例的分布式构建方法的流程图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
本实施例提供一种分布式构建系统20,如图1所示,包括构建中心21、代码中心22、不同类型的构建实体23以及分布式文件系统24,分布式文件系统24包括产品包中心42和日志中心41。
本实施例中构建实体的类型为业务类型,具体包括机票、酒店以及旅游,其中,机票类型的构建实体包括6个构建子单元30,酒店类型的构建实体包括4个构建子单元30,旅游类型的构建实体包括2个构建子单元30。
构建中心21采用Ruby on Rails(一种可使得开发、部署和维护web应用程序变得简单的框架),用于接收一应用程序的ID号,并根据所述ID号从代码中心22获取与所述应用程序对应的源代码,以及根据所述源代码的类型将所述应用程序的一构建任务分配至与所述源代码的类型相同的一构建实体23。其中,Ruby on Rails中提供的RESTFul(一种软件架构风格)API(应用程序编程接口)用于接收外部的构建请求和Jenkins(一种开源软件)集群管理等功能。
其中,当每种类型的构建实体的数量为两个以上时,构建中心21还用于对与所述源代码的类型相同的构建实体23进行故障判断,并将所述构建任务分配至与所述源代码的类型相同且无故障的任一构建实体23。
构建实体23采用Jenkins,具体采用Docker(开源的应用容器引擎)部署,并使用Mesos(一种框架)与Marrathon(一种框架)管理,能够提升资源利用率,搭建弹性高可用的持续集成环境,用于将所述构建任务分配至处于空闲状态的任一构建子单元30。
构建子单元30用于在接收到所述构建任务时对所述源代码进行编译,将生成的产品包发送至产品包中心42,并将生成的日志发送至日志中心41,以及将所述产品包的地址信息和所述日志的地址信息发送至构建中心21。
本实施例还提供一种分布式构建方法,利用上述的分布式构建系统实现,如图2所示,包括以下步骤:
步骤101、构建中心接收一应用程序的ID号,并根据所述ID号从所述代码中心获取与所述应用程序对应的源代码,以及根据所述源代码的类型将所述应用程序的一构建任务分配至与所述源代码的类型相同的一构建实体;
步骤102、构建实体将所述构建任务分配至处于空闲状态的任一构建子单元;
步骤103、构建子单元在接收到所述构建任务时对所述源代码进行编译,将生成的产品包发送至所述产品包中心,并将生成的日志发送至所述日志中心,以及将所述产品包的地址信息和所述日志的地址信息发送至所述构建中心。
步骤101中,当每种类型的构建实体的数量为两个以上时,所述构建中心对与所述源代码的类型相同的构建实体进行故障判断,并将所述构建任务分配至与所述源代码的类型相同且无故障的任一构建实体。
另外,在步骤101中,构建中心除了接收应用程序的ID号以外,还可以接收所述应用程序的构建环境,并将所述构建环境集成至所述构建任务中。相应地,在步骤103中,构建子单元根据所述构建环境对所述源代码进行编译。
本实施例中,通过设置机票、酒店和旅游三种类型的构建实体,能够使得与应用程序对应的源代码的类型相同的构建实体执行所述应用程序的构建任务,提高了构建任务的执行效率。同时,本实施例还通过将编译生成的产品包和日志存放至分布式文件系统,使得产品包和日志都得到了多重备份,充分保证了构建系统的高可用性。
本发明分布式构建系统中构建实体的类型不限于上述实施例中的业务类型,还可以为语言类型,例如.NET或JAVA等。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (10)
1.一种分布式构建系统,其特征在于,包括一构建中心、一代码中心、多个不同类型的构建实体以及一分布式文件系统,每种类型的构建实体均包括多个构建子单元,所述分布式文件系统包括一产品包中心和一日志中心;
所述构建中心用于接收一应用程序的ID号,并根据所述ID号从所述代码中心获取与所述应用程序对应的源代码,以及根据所述源代码的类型将所述应用程序的一构建任务分配至与所述源代码的类型相同的一构建实体;
所述构建实体用于将所述构建任务分配至处于空闲状态的任一构建子单元;
所述构建子单元用于在接收到所述构建任务时对所述源代码进行编译,将生成的产品包发送至所述产品包中心,并将生成的日志发送至所述日志中心,以及将所述产品包的地址信息和所述日志的地址信息发送至所述构建中心。
2.如权利要求1所述的分布式构建系统,其特征在于,所述构建中心还用于接收所述应用程序的构建参数,并将所述构建参数集成至所述构建任务中;所述构建子单元还用于根据所述构建参数对所述源代码进行编译。
3.如权利要求1所述的分布式构建系统,其特征在于,每种类型的构建实体的数量至少为两个,所述构建中心还用于对与所述源代码的类型相同的构建实体进行故障判断,并将所述构建任务分配至与所述源代码的类型相同且无故障的任一构建实体。
4.如权利要求1所述的分布式构建系统,其特征在于,所述源代码的类型包括语言类型和业务类型。
5.如权利要求4所述的分布式构建系统,其特征在于,
所述语言类型包括.NET和JAVA,和/或,
所述业务类型包括机票、酒店、旅游、火车票,和/或,
所述构建参数包括构建环境。
6.一种分布式构建方法,其特征在于,利用如权利要求1所述的分布式构建系统实现,所述分布式构建方法包括以下步骤:
S1、所述构建中心接收一应用程序的ID号,并根据所述ID号从所述代码中心获取与所述应用程序对应的源代码,以及根据所述源代码的类型将所述应用程序的一构建任务分配至与所述源代码的类型相同的一构建实体;
S2、所述构建实体将所述构建任务分配至处于空闲状态的任一构建子单元;
S3、所述构建子单元在接收到所述构建任务时对所述源代码进行编译,将生成的产品包发送至所述产品包中心,并将生成的日志发送至所述日志中心,以及将所述产品包的地址信息和所述日志的地址信息发送至所述构建中心。
7.如权利要求6所述的分布式构建方法,其特征在于,
步骤S1中还包括:所述构建中心接收所述应用程序的构建参数,并将所述构建参数集成至所述构建任务中;
步骤S3中还包括:所述构建子单元根据所述构建参数对所述源代码进行编译。
8.如权利要求6所述的分布式构建方法,其特征在于,每种类型的构建实体的数量至少为两个,步骤S1中还包括:所述构建中心对与所述源代码的类型相同的构建实体进行故障判断,并将所述构建任务分配至与所述源代码的类型相同且无故障的任一构建实体。
9.如权利要求6所述的分布式构建方法,其特征在于,所述源代码的类型包括语言类型和业务类型。
10.如权利要求9所述的分布式构建方法,其特征在于,
所述语言类型包括.NET和JAVA,和/或,
所述业务类型包括机票、酒店、旅游、火车票,和/或,
所述构建参数包括构建环境。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610302191.6A CN105975276B (zh) | 2016-05-09 | 2016-05-09 | 分布式构建系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610302191.6A CN105975276B (zh) | 2016-05-09 | 2016-05-09 | 分布式构建系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975276A true CN105975276A (zh) | 2016-09-28 |
CN105975276B CN105975276B (zh) | 2019-04-09 |
Family
ID=56991465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610302191.6A Active CN105975276B (zh) | 2016-05-09 | 2016-05-09 | 分布式构建系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105975276B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229520A (zh) * | 2017-04-27 | 2017-10-03 | 北京数人科技有限公司 | 一种数据中心操作系统 |
CN109032784A (zh) * | 2018-08-07 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种多任务并行构建方法及装置 |
CN112114816A (zh) * | 2020-09-25 | 2020-12-22 | 统信软件技术有限公司 | 一种分布式编译系统和方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119125A (en) * | 1998-04-03 | 2000-09-12 | Johnson Controls Technology Company | Software components for a building automation system based on a standard object superclass |
CN102135877A (zh) * | 2010-01-27 | 2011-07-27 | 金蝶软件(中国)有限公司 | 自动化构建方法及装置 |
CN102968298A (zh) * | 2012-10-31 | 2013-03-13 | 山东浪潮齐鲁软件产业股份有限公司 | 一种软件产品构建方法 |
CN103577170A (zh) * | 2012-07-27 | 2014-02-12 | 中兴通讯股份有限公司 | 网络应用的构建方法及装置 |
US20140325521A1 (en) * | 2013-04-28 | 2014-10-30 | International Business Machines Corporation | Method and System for Allocating Resources to Tasks in a Build Process |
CN104239114A (zh) * | 2013-11-12 | 2014-12-24 | 新华瑞德(北京)网络科技有限公司 | 应用程序的编译处理方法及装置 |
CN104536744A (zh) * | 2014-12-19 | 2015-04-22 | 微梦创科网络科技(中国)有限公司 | 一种自动化构建与部署代码的方法及服务器 |
US20160019056A1 (en) * | 2014-07-15 | 2016-01-21 | Vmware, Inc. | Techniques for Automatically Identifying Input Files Used to Generate Output Files in a Software Build Process |
-
2016
- 2016-05-09 CN CN201610302191.6A patent/CN105975276B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119125A (en) * | 1998-04-03 | 2000-09-12 | Johnson Controls Technology Company | Software components for a building automation system based on a standard object superclass |
CN102135877A (zh) * | 2010-01-27 | 2011-07-27 | 金蝶软件(中国)有限公司 | 自动化构建方法及装置 |
CN103577170A (zh) * | 2012-07-27 | 2014-02-12 | 中兴通讯股份有限公司 | 网络应用的构建方法及装置 |
CN102968298A (zh) * | 2012-10-31 | 2013-03-13 | 山东浪潮齐鲁软件产业股份有限公司 | 一种软件产品构建方法 |
US20140325521A1 (en) * | 2013-04-28 | 2014-10-30 | International Business Machines Corporation | Method and System for Allocating Resources to Tasks in a Build Process |
CN104239114A (zh) * | 2013-11-12 | 2014-12-24 | 新华瑞德(北京)网络科技有限公司 | 应用程序的编译处理方法及装置 |
US20160019056A1 (en) * | 2014-07-15 | 2016-01-21 | Vmware, Inc. | Techniques for Automatically Identifying Input Files Used to Generate Output Files in a Software Build Process |
CN104536744A (zh) * | 2014-12-19 | 2015-04-22 | 微梦创科网络科技(中国)有限公司 | 一种自动化构建与部署代码的方法及服务器 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229520A (zh) * | 2017-04-27 | 2017-10-03 | 北京数人科技有限公司 | 一种数据中心操作系统 |
CN107229520B (zh) * | 2017-04-27 | 2019-10-18 | 北京数人科技有限公司 | 一种数据中心操作系统 |
CN109032784A (zh) * | 2018-08-07 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种多任务并行构建方法及装置 |
CN112114816A (zh) * | 2020-09-25 | 2020-12-22 | 统信软件技术有限公司 | 一种分布式编译系统和方法 |
CN112114816B (zh) * | 2020-09-25 | 2024-05-31 | 统信软件技术有限公司 | 一种分布式编译系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105975276B (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105100259B (zh) | 一种分布式定时任务执行方法和系统 | |
CN102880503B (zh) | 数据分析系统及数据分析方法 | |
CN103078941B (zh) | 一种分布式计算系统的任务调度方法 | |
CN104050029B (zh) | 一种任务调度系统 | |
US20120297056A1 (en) | Extensible centralized dynamic resource distribution in a clustered data grid | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
US20090063664A1 (en) | Systems and/or methods for location transparent routing and execution of processes | |
CN110308983A (zh) | 资源负载均衡方法及系统、服务节点和客户端 | |
CN109992354A (zh) | 容器处理方法、装置、主体服务器、系统和存储介质 | |
CN103034541B (zh) | 一种分布式消息系统及其中的设备和方法 | |
CN110058940B (zh) | 一种多线程环境下的数据处理方法及装置 | |
CN104503832B (zh) | 一种公平和效率均衡的虚拟机调度系统及方法 | |
CN105072211B (zh) | 基于dns的域名部署系统及方法 | |
CN105975276A (zh) | 分布式构建系统及方法 | |
CN109739640A (zh) | 一种基于申威架构的容器资源管理系统 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN105827678B (zh) | 一种基于高可用架构下的通信方法和节点 | |
CN103176892A (zh) | 一种页面监控方法及系统 | |
CN109062681A (zh) | 一种周期性循环任务的执行方法、系统、装置及存储介质 | |
CN110288104A (zh) | 运维流程系统、运维流程管理的方法及装置 | |
CN109361777A (zh) | 分布式集群节点状态的同步方法、同步系统及相关装置 | |
CN108021431A (zh) | 基于Web数据交互管理Hive的方法及其系统 | |
CN107357529B (zh) | 一种存储集群在线升级方法及系统 | |
CN106254452A (zh) | 云平台下的医疗大数据访问方法 | |
CN105354319B (zh) | 针对sn架构的mpp数据库集群的数据库连接池管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |