CN110661844A - 自动发布调度系统、方法和存储介质 - Google Patents
自动发布调度系统、方法和存储介质 Download PDFInfo
- Publication number
- CN110661844A CN110661844A CN201910758877.XA CN201910758877A CN110661844A CN 110661844 A CN110661844 A CN 110661844A CN 201910758877 A CN201910758877 A CN 201910758877A CN 110661844 A CN110661844 A CN 110661844A
- Authority
- CN
- China
- Prior art keywords
- processing
- sub
- processing node
- task
- node
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供了一种自动发布调度系统、方法和存储介质,该系统包括元信息集群以及两个以上处理节点,每个处理节点将其自身的状态信息同步到元信息集群,并从中读取所有处理节点的状态信息,每个处理节点包括任务调度模块和任务处理模块,其中,第一处理节点的任务调度模块用于:根据每个待处理的子流程的配置需要以及所有处理节点的状态信息,查找适于处理所述待处理的子流程的第二处理节点;以及将所述待处理的子流程调度到所述第二处理节点;所述第二处理节点的任务处理模块用于对接收到的所述待处理的子流程进行处理。本发明采用去中心化架构,其中每个处理节点既是调度节点,也是执行节点,从而提高了系统的程序并行发布效率及容错能力。
Description
技术领域
本发明涉及程序发布技术领域,更具体地涉及一种自动发布调度系统、方法和存储介质。
背景技术
程序发布通常包含多个步骤,例如触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排等。对于每个程序来说,发布的整个过程都是可定制化的,通过简单编排,生成各个子流程之间的拓扑关系以及数据流关系。目前一般通过编排生成各个子流程之间的拓扑关系,支持完整流程的分布式处理。
然而,现在没有专用的自动发布调度系统,现有的系统不支持将每个子流程分配到不同的处理单元处理;不支持维护每个子流程的输出结果以在出现异常后提高重试效率;不支持根据配置约束以及系统运行状态去调度处理子流程;不具有通用性;不支持完全分布式。
发明内容
下面简要描述本发明提出的自动发布调度方案,更多细节将在后续结合附图在具体实施方式中加以描述。
根据本发明实施例的一方面,提供了一种自动发布调度系统,所述系统包括元信息集群以及两个以上的处理节点,每个所述处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块,其中,所述任务调度模块用于:第一处理节点的任务调度模块用于:获取构建任务、所述构建任务中的流程,或者所述流程中的子流程,并确定待处理的子流程;根据每个待处理的所述子流程的配置需要以及所有处理节点的所述状态信息,查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;以及将所述待处理的子流程调度到所述第二处理节点;所述第二处理节点的任务处理模块用于对接收到的所述待处理的子流程进行处理。
在一个实施例中,所述第二处理节点的所述任务处理模块还用于:在处理结束之后,将处理结果返回给所述第一处理节点的所述任务调度模块。
在一个实施例中,所述第一处理节点的所述任务调度模块用于收集每个所述子流程的处理结果,并将所述处理结果保存到分布式存储系统;所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处理的子流程,或者,所述第一处理节点的任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点,以用于由所述第二处理节点作为输入来处理所述待处理的子流程。
在一个实施例中,所述第一处理节点还用于:若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束;以及若一个流程中存在子流程处理失败,则更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度。
在一个实施例中,每个所述任务处理模块包括至少一个处理单元,每个所述任务处理模块的不同处理节点并行处理不相关联的多个流程或不相关联的多个子流程。
在一个实施例中,所述状态信息包括所述处理节点的配置信息和所述处理节点的当前执行状态信息。
在一个实施例中,所述配置信息包括所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
在一个实施例中,根据所述待处理的子流程的配置、配置约束和每个所述处理节点的状态信息来确定合适的处理节点。
在一个实施例中,在所述构建任务被一个所述处理节点获取之后,则所述构建任务进入锁定状态,其他处理节点不再获取进入锁定状态的所述构建任务。
在一个实施例中,所述处理节点还用于:当从所述元信息集群中获知另一个所述处理节点失效时,剔除失效的处理节点。
在一个实施例中,所述构建任务的编排包括:根据定制化需求从触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。
本发明另一方面提供一种自动发布调度方法,所述方法包括:两个以上的处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块;第一处理节点的任务调度模块获取构建任务、所述构建任务中的流程、或者所述流程中的子流程,并确定待处理的子流程;所述第一处理节点的所述任务调度模块根据每个待处理的子流程的配置需要,根据所述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;以及所述第一处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二处理节点;所述第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。
在一个实施例中,所述方法还包括:在所述处理结束之后,所述第二处理节点的所述任务处理模块将处理结果返回给所述第一处理节点的所述任务调度模块。
在一个实施例中,所述方法还包括:所述第一处理节点的所述任务调度模块收集每个所述子流程的处理结果,并将所述处理结果存储到分布式存储系统;所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处理的子流程,或者,所述第一处理节点的所述任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点,以用于由所述第二处理节点作为输入来处理所述待处理的子流程。
在一个实施例中,所述方法还包括:若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束;若一个流程中存在子流程处理失败,则更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度。
在一个实施例中,所述状态信息包括所述处理节点的配置信息和当前执行状态信息。
在一个实施例中,所述配置信息包括所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
在一个实施例中,根据所述待处理的子流程的配置、配置约束和每个所述处理节点的状态信息来确定合适的处理节点。
在一个实施例中,所述方法还包括:在所述构建任务被一个所述处理节点获取之后,则将所述构建任务设置为锁定状态,其他处理节点不再获取进入锁定状态的所述构建任务。
在一个实施例中,所述方法还包括:当至少一个所述处理节点从所述元信息集群中获知另一个所述处理节点失效时,剔除失效的处理节点。
在一个实施例中,所述方法还包括:根据定制化需求从触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。
本发明又一方面一种自动发布调度系统,所述系统包括存储装置和处理器,所述存储装置上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时执行上述自动发布调度方法。
本发明再一方面提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行上述自动发布调度方法。
本发明提供的自动发布调度系统、方法和存储介质采用去中心化架构,其采用由两个以上处理节点构成的集群进行分布式任务调度和处理,其中每个处理节点既是调度节点,也是执行节点,从而提高了系统的程序并行发布效率及容错能力。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出根据本发明实施例的自动发布调度系统的示意性框图;
图2示出根据本发明实施例的自动发布调度系统进行任务调度处理的示意性流程图;
图3示出根据本发明实施例的自动发布调度方法的示意性流程图;
图4示出根据本发明另一实施例的自动发布调度系统的示意性框图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
根据本发明实施例的一方面,提供了一种自动发布调度系统。下面,将参考图1和图2结合具体实施例描述根据本发明一方面提供的自动发布调度系统100,图1中示出了根据本发明实施例的自动发布调度系统100的示意性结构框图,图2示出了自动发布调度系统100进行任务调度处理的示意性流程图。
如图1所示,自动发布调度系统100包括元信息集群110以及两个以上处理节点,每个所述处理节点包括任务调度模块和任务处理模块,图1中仅示出第一处理节点121和第二处理节点122,其中第一处理节点121包括任务调度模块121A和任务处理模块121B,第二处理节点122包括任务调度模块122A和任务处理模块122B。可以理解的是,虽然图1中仅示出了两个处理节点,但自动发布调度系统100可以包括两个以上的任意数目的处理节点;下文将第一处理节点121描述为调度节点,第二处理节点122描述为执行节点,但这并不意图构成限制,所述自动发布调度系统100中的每个处理节点即可以作为调度节点,也可以作为执行节点。
多个处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群110,并从所述元信息集群110读取所有处理节点的状态信息。其中,所述处理节点可以定期将其自身的状态信息同步到元信息集群110和读取其他处理节点的状态信息,也可以在每当其状态信息发生变化时将其状态信息同步到元信息集群。
所述第一处理节点121的任务调度模块121A用于:获取构建任务、所述构建任务中的流程或者所述流程中的子流程,并确定待处理的子流程;根据每个待处理的子流程的配置需要,根据所述所有节点的状态信息查找适于处理所述待处理的子流程的第二处理节点122;以及将每个所述待处理的子流程调度到所述第二处理节点122;所述第二处理节点的任务处理模块122B用于对接收到的所述待处理的子流程进行处理。
自动发布调度系统100采用去中心化架构,其采用由两个以上处理节点构成的集群进行分布式任务调度和处理,其中每个处理节点既是调度节点,也是执行节点,提高了系统的程序并行发布效率及容错能力。
在一个实施例中,每个处理节点对应一台服务器,每个处理节点需要配置一些配置信息,所述配置信息包括而不限于所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
在服务启动之后,每个处理节点自动注册到元信息集群110。元信息集群110用于保存所有处理节点的状态信息,包括所述配置信息及每个处理节点的执行状态信息等。作为示例,所述元信息集群可以采用zookeeper来实现。
在系统运行过程中,每个处理节点定期将处理节点自身的状态信息同步到元信息集群110,并从所述元信息集群110读取所有处理节点的状态信息,由此,每个处理节点都能够获知所有处理节点的状态,以便于进行任务的调度。
在此基础上,如图2所示,第一处理节点121的任务调度模块121A可以定期从数据库中获取待处理的构建任务,并为其分配处理节点。所述构建任务可以是未经处理的构建任务,也可以是处理失败或经部分处理的构建任务(例如,发布程序A的构建任务目前处理到了编译流程),获取了构建任务即获取了构建任务的处理状态,包括其当前处理到哪个子流程,以及上一个子流程的处理结果,具体将在下文进行描述。当构建任务被任意一个处理节点获取之后,该构建任务进入锁定状态,其他处理节点不能够再获取该构建任务。
在一个实施例中,自动发布调度系统100包括构建任务编排模块,用于编排所述构建任务,并将编排好的构建任务发送到数据库。所述构建任务编排模块设置在客户端上,例如,用户可以在web界面上编排构建任务,并将构建好的任务发送到数据库,第一处理节点121的任务调度模块121A从数据库获取构建好的构建任务。所述构建任务包括一个以上的流程,每个流程包括一个以上的子流程。
作为示例,整个构建任务的编排包括根据定制化从触发器、下载代码、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布等多个流程中的选择至少一个流程编排形成所述构建任务。在一个实施例中,依次填入每个流程的配置信息。例如,首先输入项目基本信息,源码地址、分支、版本等;其次配置编译环境,输入参数及输出路径;再次配置生成镜像文件的输入输出参数。接着,如果项目需要打包发布,则配置打包的输入输出参数、配置文件等,最后即可生成构建任务。如此,可以实现构建任务的定制化,使本发明的方法能够适用于不同的构建任务,具有良好通用性。
在一个实施例中,可以复制历史构建任务,并根据需要修改其中的极少数参数,即可生成新的构建任务,以提高构建任务的创建效率。
在构建任务中,每个流程均包含一个或多个子流程。例如,上述的编译流程可能需要同时编译多种语言的多个项目,即编译流程可以包含多个子流程,例如java编译子流程和/或python编译子流程等。
可以理解的是,根据实际需要,部分上述流程是可以省略的,例如打包流程、生成编排流程、发布流程等,并且,根据实际需要,除了上述列举的流程之外,构建任务还可以包括其他流程。即具体的流程可以根据实际需要定制,用户仅需要编排构建任务,之后,自动发布调度系统自动对其进行调度和处理,降低发布过程中人为干预带来的不确定性和风险。
如上所述,第一处理节点121的任务调度模块121A从数据库中获取到了构建任务、构建任务中的至少一个流程或者流程中的至少一个子流程。具体地,第一处理节点121可以获取整个构建任务以进行拆分和调度,或者,第一处理节点121可以获取未完成的一个或多个流程进行拆分和调度,或者,第一处理节点121可以获取未完成的子流程并直接进行调度。
在一个实施例中,参照图2,在获取构建任务后,第一处理节点121的任务调度模块121A首先查看该构建任务的状态,以判断其是否已处理完成,即是否存在未完成的流程。若该构建任务的状态为未处理完成,则第一处理节点121的任务调度模块121A将该构建任务的状态更新为处理中,使该构建任务不能被其他处理节点获取,并将未完成的流程拆分为多个子流程,以及查看未完成的流程进行到哪个子流程,其中有哪些未完成的子流程需要处理。
接着,第一处理节点121的任务调度模块121A根据从元信息集群110获取的所有节点的节点信息为每个未完成的子流程查找合适的处理节点。在一个实施例中,第一处理节点121获取的是构建任务,则其为该构建任务的每个未完成的流程中未完成的子流程查找合适的处理节点。在另一个实施例中,第一处理节点121获取的是构建任务中的一个流程,则其为该流程的每个未完成的子流程查找合适的处理节点。在又一实施例中,第一处理节点121获取的是子流程,则其直接为该子流程查找合适的处理节点。在本发明实施例中,将其中一个子流程的合适的处理节点例示为第二处理节点122,但可以理解的是,该合适的处理节点可以是第一处理节点121自身,也可以是其他处理节点。
在一个实施例中,查找过程根据子流程配置(例如编程语言)、配置约束(所需的CPU数量、内存数量)、以及集群运行状态(负载状态)来决定。例如,某个程序编译流程需要1个CPU、4G内存,则第一处理节点121的任务调度模块121A在元信息集群110中查找符合条件的处理节点,然后将任务调度给该处理节点。该处理节点在接收到该任务调度后,可根据自身情况选择是否回绝该任务。
例如,调度任务包含3个流程:S1、S2以及S3,其中S2可能对内存有要求。现有两个发布程序A、程序B,构建任务A包括A_S1、A_S2、A_S3,其中A_S2包括两个子流程A_S2_a和A_S2_b。构建任务B包括B_S1、B_S2(需4G内存)、B_S3,其中A_S1和B_S1、A_S2和B_S2、A_S3和B_S3分别对应同一个子流程。
分布式调度处理集群中至少有两个处理节点P和Q,其中P的任务处理模块包括两个处理单元,分别能够处理流程S1、S2(最大2G内存),Q有2个处理单元,分别能够处理流程S2(最大4G内存)、S3。
对于构建任务A,A_S1流程会被调度到处理节点P处理;A_S2_a和A_S2_b对内存没有要求,因而任务调度模块可以将其调度到处理节点P或者处理节点Q中任意一个处理;A_S3流程会被调度到处理节点Q处理。
对于构建任务B,B_S1流程会被调度到处理节点P处理;由于B_S2流程需要4G内存,所以只能调度到处理节点Q进行处理;B_S3流程会被调度到处理节点Q处理。
第二处理节点122的任务处理模块122B用于对接收到的子流程进行处理。
第二处理节点122在接收到被调度到该处理节点的子流程之后,可根据自身情况选择是否回绝该处理任务。在一个实施例中,若该处理节点回绝了该子流程的处理任务,则执行任务调度的第一处理节点121选择其他合适的处理节点来调度该子流程。
在一个实施例中,第二处理节点122的任务处理模块122B包括至少一个处理单元,处理单元可并行处理不相关联的多个流程或多个子流程,所述不相关联的多个流程为来自不同构建任务的多个流程,所述不相关联的多个子流程为来自不同构建任务的多个子流程。续举前例,假设处理节点P和处理节点Q都具有两个处理单元,处理节点P要处理A_S1,A_S2_b,B_S1,处理节点Q要处理A_S2_a,A_S3,B_S2,B_S3。A_S1和B_S1是不具有关联关系的流程,在资源允许情况下,处理节点P可并行处理A_S1和B_S1。但是,处理节点P不可能并行处理A_S1和A_S2_b,处理节点P和处理节点Q也不可能并行处理A_S1和A_S2_a。首先,因为A_S1、A_S2_a和A_S2_b是关联的流程,要想处理A_S2_b,需要获得来自A_S2_a的处理结果作为输入,而要想获得来自A_S2_a的处理结果,需要获得A_S1的处理结果作为输入。其次,调度节点也只在一个流程或子流程处理完毕时才进行下一个流程或子流程的调度,而不会出现同一个构建任务的不同的流程或同一个流程的不同子流程被并行处理的情况。
第二处理节点122的任务处理模块122B处理完成之后,将处理结果返回到执行调度任务的第一处理节点121的任务调度模块121A。
第一处理节点121的任务调度模块121A收集其调度的子流程的处理结果,每收集到一个处理结果,即将处理结果存储在分布式存储系统。将每个子流程的输出都使用分布式存储系统持久化存储,可以提高异常情况下的重试效率。
第二处理节点122以前一个子流程的处理结果作为输入来处理当前待处理的子流程,前一个子流程的处理结果可以存储于同一个服务器或不同的服务器上。在一个实施例中,第二处理节点122的任务处理模块122B直接从分布式存储系统获取前一个子流程的处理结果,作为当前处理的子流程的输入资源。在另一个实施例中,由第一处理节点121的任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点122。
在一个实施例中,所述异常情况包括某一个子流程处理失败。当第二处理节点122的任务处理模块122B对于某一个子流程处理失败时,向执行调度任务的第一处理节点121的任务调度模块121A返回处理失败的信息。若一个流程中存在子流程处理失败,则第一处理节点121的任务调度模块121A更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度,即重新查找适用于处理该子流程的处理节点,并调度该子流程到新的处理节点重新进行处理。当重试达到预设次数、而该子流程仍未处理成功时,任务调度模块121A标记整个构建任务为处理失败,并报告相应人员。
第一处理节点121还用于根据每个子流程的处理结果更新子流程、流程和/或构建任务的状态。具体地,根据子流程的处理结果直接更新该子流程的处理状态;当该第一处理节点负责一个流程的调度时,若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;当该第一处理节点负责一个构建任务的调度时,若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束。只要所有流程的所有子流程都成功处理,那么根据最终一致性可以保证整个发布流程的完整性。
在本发明实施例中,以子流程为单位进行任务调度处理,当存在子流程处理失败时,从失败的子流程处重试即可,提高了重试效率。
基于上面的描述,本发明实施例提供的自动发布调度系统采用去中心化架构,其采用由两个以上处理节点构成的集群进行分布式任务调度和处理,其中每个处理节点既是调度节点,也是执行节点,从而提高了系统的程序并行发布效率及容错能力。
下面结合图3描述本发明另一方面提供的自动发布调度方法。图3示出了根据本发明实施例的自动发布调度方法300的示意性流程图。自动发布调度方法300在上述自动发布调度系统100中实现,系统的具体结构参照上文。
在步骤S310,两个以上的处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块。
在一个实施例中,每个处理节点对应一台服务器,每个处理节点包括任务调度模块和任务处理模块,既可以执行任务调度,又可以执行任务处理。每个处理节点需要配置一些配置信息,所述配置信息包括而不限于所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
在服务启动之后,每个处理节点自动注册到元信息集群。元信息集群用于保存所有处理节点的状态信息,包括所述配置信息及每个处理节点的执行状态信息等。作为示例,所述元信息集群可以采用zookeeper来实现。
在系统运行过程中,每个处理节点定期或在状态发生变化时将处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,由此,任务调度模块可以获知所有处理节点的状态,以便于进行任务的调度。
在步骤S320,第一处理节点的任务调度模块获取构建任务、所述构建任务中的流程、或者所述流程中的子流程,并确定待处理的子流程。
其中,所述构建任务可以是未经处理的构建任务,也可以是处理失败或经部分处理的构建任务(例如,发布程序A的构建任务目前处理到了编译流程),具体将在下文进行描述。当构建任务被一个处理节点的任务调度模块获取之后,该构建任务进入锁定状态,其他处理节点不能够再获取该构建任务。
在一个实施例中,用户可以在web界面上编排构建任务,并将构建好的任务发送到数据库,任务调度模块从数据库获取构建好的构建任务。所述构建任务包括一个以上的流程,每个流程包括一个以上的子流程。
作为示例,可以根据定制化需求从触发器、下载代码、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布等多个流程中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。如此,可以实现构建任务的定制化,使本发明的方法能够适用于不同的构建任务,具有良好通用性。
在一个实施例中,可以复制历史构建任务,并根据需要修改其中的极少数参数,即可生成新的构建任务,以提高构建任务的创建效率。
可以理解的是,根据实际需要,部分上述流程是可以省略的,例如打包流程、生成编排流程、发布流程等,并且,根据实际需要,除了上述列举的流程之外,构建任务还可以包括其他流程。即具体的流程可以根据实际需要定制,用户仅需要编排构建任务,之后,自动发布调度系统自动对其进行调度和处理,降低发布过程中人为干预带来的不确定性和风险。
在步骤S330,所述第一处理节点的所述任务调度模块根据每个待处理的子流程的配置需要,根据所述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;在步骤S340,所述第一处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二处理节点。
如上所述,第一处理节点的任务调度模块从数据库中获取到了构建任务、构建任务中的未完成的流程或者流程中未完成的子流程。具体地,第一处理节点可以获取整个构建任务以进行拆分和调度,或者,第一处理节点可以获取未完成的一个或多个流程进行拆分和调度,或者,第一处理节点可以获取未完成的子流程并直接进行调度。
在一个实施例中,第一处理节点的任务调度模块获取构建任务后,并首先查看该构建任务的状态,以判断其是否已处理完成,即是否存在未完成的流程。若该构建任务的状态为未处理完成,则任务调度模块将该构建任务的状态更新为处理中,使该构建任务不能被其他处理节点获取,并将未完成的流程拆分为多个子流程。
接着,第一处理节点的任务调度模块根据从元信息集群获取的所有节点的节点信息查找该构建任务的未完成的流程的每个子流程的合适的第二处理节点。该合适的处理节点可以是当前第一处理节点自身,也可以是其他处理节点。
在一个实施例中,查找过程根据子流程配置(例如编程语言)、配置约束(所需的CPU数量、内存数量)、以及集群运行状态(负载状态)来决定。例如,某个程序编译流程需要1个CPU、4G内存,则任务调度模块在元信息集群中查找符合条件的处理节点,然后将任务调度给该处理节点。第二处理节点在接收到该任务调度后,可根据自身情况选择是否回绝该任务。
在步骤S350,所述第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。
所述第二处理节点在接收到被调度到该处理节点的子流程之后,可根据自身情况选择是否回绝该处理任务。在一个实施例中,若第二处理节点回绝了该子流程的处理任务,则执行任务调度的第一处理节点选择其他合适的处理节点来调度该子流程。
在一个实施例中,每个处理节点的任务处理模块包括至少一个处理单元,处理单元可并行处理不相关联的多个流程或多个子流程,所述不相关联的多个流程为来自不同构建任务的多个流程,所述不相关联的多个子流程为来自不同构建任务的多个子流程。第二处理节点的处理模块处理完成之后,将处理结果返回到执行调度任务的第一处理节点的任务调度模块。
第一处理节点的任务调度模块收集其调度的子流程的处理结果,每收集到一个处理结果,即将处理结果存储在分布式存储系统。将每个子流程的输出都使用分布式存储系统持久化存储,可以提高异常情况下的重试效率。
第二处理节点以前一个子流程的处理结果作为输入来处理当前待处理的子流程,前一个子流程的处理结果可以存储于同一个服务器或不同的服务器上。在一个实施例中,第二处理节点的任务处理模块直接从分布式存储系统获取前一个子流程的处理结果,作为当前处理的子流程的输入资源。在另一个实施例中,由第一处理节点的任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点。
在一个实施例中,所述异常情况包括某一个子流程处理失败。当第二处理节点的任务处理模块对于某一个子流程处理失败时,向执行调度任务的第一处理节点的任务调度模块返回处理失败的信息。若一个流程中存在子流程处理失败,则第一处理节点的任务调度模块更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度,即重新查找适用于处理该子流程的处理节点,并调度该子流程到新的处理节点重新进行处理。当重试达到预设次数、而该子流程仍未处理成功时,第一处理节点的任务调度模块标记整个构建任务为处理失败,并报告相应人员。
在本发明实施例中,以子流程为单位进行任务调度处理,当存在子流程处理失败时,从失败的子流程处重试即可,提高了重试效率。
基于上面的描述,本发明实施例提供的自动发布调度方法采用去中心化架构,其采用由两个以上处理节点构成的集群进行分布式任务调度和处理,其中每个处理节点既是调度节点,也是执行节点,从而提高了系统的程序并行发布效率及容错能力。
图4示出了根据本发明另一实施例的自动发布调度系统400的示意性框图。自动发布调度系统400包括存储装置410以及处理器420。
其中,存储装置410存储用于实现根据本发明实施例的自动发布调度方法中的相应步骤的程序代码。处理器420用于运行存储装置410中存储的程序代码,以执行根据本发明实施例的自动发布调度方法的相应步骤,并且用于实现根据本发明实施例的自动发布调度系统中的相应模块。
在一个实施例中,在所述程序代码被处理器420运行时使得自动发布调度系统400执行以下步骤:两个以上的处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块;第一处理节点的任务调度模块获取构建任务、所述构建任务中的流程、或者所述流程中的子流程,并确定待处理的子流程;所述第一处理节点的所述任务调度模块根据每个待处理的子流程的配置需要,根据所述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;以及所述第一处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二处理节点;所述第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:在所述处理结束之后,所述第二处理节点的所述任务处理模块将处理结果返回给所述第一处理节点的所述任务调度模块。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:所述第一处理节点的所述任务调度模块收集每个所述子流程的处理结果,并将所述处理结果存储到分布式存储系统;所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处理的子流程,或者,所述第一处理节点的所述任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点,以用于由所述第二处理节点作为输入来处理所述待处理的子流程。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束;若一个流程中存在子流程处理失败,则更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度。
在一个实施例中,所述状态信息包括所述处理节点的配置信息和当前执行状态信息。
在一个实施例中,所述配置信息包括所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
在一个实施例中,根据所述待处理的子流程的配置、配置约束和每个所述处理节点的状态信息来确定合适的处理节点。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:在所述构建任务被一个所述处理节点获取之后,则将所述构建任务设置为锁定状态,其他处理节点不再获取进入锁定状态的所述构建任务。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:当至少一个所述处理节点从所述元信息集群中获知另一个所述处理节点失效时,剔除失效的处理节点。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:根据定制化需求从触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的自动发布调度方法的相应步骤,并且用于实现根据本发明实施例的自动发布调度系统中的相应模块。所述存储介质例如可以包括存储卡、硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的自动发布调度系统的各个功能模块,并且/或者可以执行根据本发明实施例的自动发布调度方法。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:两个以上的处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块;第一处理节点的任务调度模块获取构建任务、所述构建任务中的流程、或者所述流程中的子流程,并确定待处理的子流程;所述第一处理节点的所述任务调度模块根据每个待处理的子流程的配置需要,根据所述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;以及所述第一处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二处理节点;所述第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。
在一个实施例中,在所述程序代码被处理器420运行时还使得自动发布调度系统400执行:在所述处理结束之后,所述第二处理节点的所述任务处理模块将处理结果返回给所述第一处理节点的所述任务调度模块。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行:所述第一处理节点的所述任务调度模块收集每个所述子流程的处理结果,并将所述处理结果存储到分布式存储系统;所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处理的子流程,或者,所述第一处理节点的所述任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点,以用于由所述第二处理节点作为输入来处理所述待处理的子流程。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行:若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束;若一个流程中存在子流程处理失败,则更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度。
在一个实施例中,所述状态信息包括所述处理节点的配置信息和当前执行状态信息。
在一个实施例中,所述配置信息包括所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
在一个实施例中,根据所述待处理的子流程的配置、配置约束和每个所述处理节点的状态信息来确定合适的处理节点。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行:在所述构建任务被一个所述处理节点获取之后,则将所述构建任务设置为锁定状态,其他处理节点不再获取进入锁定状态的所述构建任务。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行:当至少一个所述处理节点从所述元信息集群中获知另一个所述处理节点失效时,剔除失效的处理节点。
在一个实施例中,所述计算机程序指令在被计算机或处理器运行时还使计算机或处理器执行:根据定制化需求从触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。
根据本发明实施例的自动发布调度系统中的各模块可以通过根据本发明实施例的电子设备的处理器运行在存储器中存储的计算机程序指令来实现,或者可以在根据本发明实施例的计算机程序产品的计算机可读存储介质中存储的计算机指令被计算机运行时实现。
本发明提供的自动发布调度系统、方法和存储介质采用去中心化架构,其采用由两个以上处理节点构成的集群进行分布式任务调度和处理,其中每个处理节点既是调度节点,也是执行节点,从而提高了系统的程序并行发布效率及容错能力。
根据本发明实施例,还提供了一种计算机程序,该计算机程序可以存储在云端或本地的存储介质上。在该计算机程序被计算机或处理器运行时用于执行本发明实施例的自动发布调度方法的相应步骤,并且用于实现根据本发明实施例的自动发布调度系统中的相应模块。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (23)
1.一种自动发布调度系统,其特征在于,所述系统包括元信息集群以及两个以上的处理节点,每个所述处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块,其中,
第一处理节点的任务调度模块用于:
获取构建任务、所述构建任务中的流程、或者所述流程中的子流程,并确定待处理的子流程;
根据每个待处理的所述子流程的配置需要以及所有处理节点的所述状态信息,查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;以及
将所述待处理的子流程调度到所述第二处理节点;
所述第二处理节点的任务处理模块用于对接收到的所述待处理的子流程进行处理。
2.根据权利要求1所述的系统,其特征在于,所述第二处理节点的所述任务处理模块还用于:
在处理结束之后,将处理结果返回给所述第一处理节点的所述任务调度模块。
3.根据权利要求2所述的系统,其特征在于,所述第一处理节点的所述任务调度模块用于收集每个所述子流程的处理结果,并将所述处理结果保存到分布式存储系统;
所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处理的子流程,或者,所述第一处理节点的任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点,以用于由所述第二处理节点作为输入来处理所述待处理的子流程。
4.根据权利要求3所述的系统,其特征在于,所述第一处理节点还用于:
若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束;以及
若一个流程中存在子流程处理失败,则更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度。
5.根据权利要求1所述的系统,其特征在于,每个所述任务处理模块包括至少一个处理单元,每个所述任务处理模块的不同处理节点并行处理不相关联的多个流程或不相关联的多个子流程。
6.根据权利要求1所述的系统,其特征在于,所述状态信息包括所述处理节点的配置信息和所述处理节点的当前执行状态信息。
7.根据权利要求6所述的系统,其特征在于,所述配置信息包括所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
8.根据权利要求1所述的系统,其特征在于,根据所述待处理的子流程的配置、配置约束和每个所述处理节点的状态信息来确定合适的处理节点。
9.根据权利要求1所述的系统,其特征在于,在所述构建任务被一个所述处理节点获取之后,则所述构建任务进入锁定状态,其他处理节点不再获取进入锁定状态的所述构建任务。
10.根据权利要求1所述的系统,其特征在于,所述处理节点还用于:
当从所述元信息集群中获知另一个所述处理节点失效时,剔除失效的处理节点。
11.根据权利要求1所述的系统,其特征在于,所述构建任务的编排包括:根据定制化需求从触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。
12.一种自动发布调度方法,其特征在于,所述方法包括:
两个以上的处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群,并从所述元信息集群读取所有处理节点的状态信息,每个所述处理节点包括任务调度模块和任务处理模块;
第一处理节点的任务调度模块获取构建任务、所述构建任务中的流程、或者所述流程中的子流程,并确定待处理的子流程;
所述第一处理节点的所述任务调度模块根据每个待处理的子流程的配置需要,根据所述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处理节点,所述第二处理节点与所述第一处理节点相同或不同;以及
所述第一处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二处理节点;
所述第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。
13.根据权利要求12所述的方法,其特征在于,还包括:
在所述处理结束之后,所述第二处理节点的所述任务处理模块将处理结果返回给所述第一处理节点的所述任务调度模块。
14.根据权利要求13所述的方法,其特征在于,还包括:所述第一处理节点的所述任务调度模块收集每个所述子流程的处理结果,并将所述处理结果存储到分布式存储系统;
所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处理的子流程,或者,所述第一处理节点的所述任务调度模块从所述分布式存储系统获取前一个子流程的处理结果,并发送至所述第二处理节点,以用于由所述第二处理节点作为输入来处理所述待处理的子流程。
15.根据权利要求13所述的方法,其特征在于,还包括:
若一个流程的每个子流程都处理成功,则更新该流程的状态为阶段结束;若一个构建任务的所有流程都阶段结束,则更新该构建任务的状态为结束;
若一个流程中存在子流程处理失败,则更新该流程的状态为阶段异常,同时标记失败的子流程状态为失败,记录失败日志,并从处理失败的所述子流程处开始进行重新调度。
16.根据权利要求12所述的方法,其特征在于,所述状态信息包括所述处理节点的配置信息和当前执行状态信息。
17.根据权利要求16所述的方法,其特征在于,所述配置信息包括所述处理节点所支持的编译环境、每种编译环境对应的处理单元数量、可使用CPU数量、和/或可使用内存数量。
18.根据权利要求12所述的方法,其特征在于,根据所述待处理的子流程的配置、配置约束和每个所述处理节点的状态信息来确定合适的处理节点。
19.根据权利要求12所述的方法,其特征在于,还包括:
在所述构建任务被一个所述处理节点获取之后,则将所述构建任务设置为锁定状态,其他处理节点不再获取进入锁定状态的所述构建任务。
20.根据权利要求12所述的方法,其特征在于,还包括:
当至少一个所述处理节点从所述元信息集群中获知另一个所述处理节点失效时,剔除失效的处理节点。
21.根据权利要求12所述的方法,其特征在于,还包括:根据定制化需求从触发器、编译、处理依赖资源、生成docker镜像、打包、生成编排、发布中选择至少一个流程编排形成所述构建任务,每个所述流程包括至少一个子流程。
22.一种自动发布调度系统,其特征在于,所述系统包括存储装置和处理器,所述存储装置上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求12-21中的任一项所述的自动发布调度方法。
23.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序在运行时执行如权利要求12-21中的任一项所述的自动发布调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910758877.XA CN110661844A (zh) | 2019-08-16 | 2019-08-16 | 自动发布调度系统、方法和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910758877.XA CN110661844A (zh) | 2019-08-16 | 2019-08-16 | 自动发布调度系统、方法和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110661844A true CN110661844A (zh) | 2020-01-07 |
Family
ID=69037617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910758877.XA Pending CN110661844A (zh) | 2019-08-16 | 2019-08-16 | 自动发布调度系统、方法和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110661844A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506401A (zh) * | 2020-03-27 | 2020-08-07 | 北京百度网讯科技有限公司 | 自动驾驶仿真任务调度方法、装置、电子设备及存储介质 |
CN111813440A (zh) * | 2020-07-21 | 2020-10-23 | 北京千丁互联科技有限公司 | 一种多线程应用发布方法及装置 |
CN111866130A (zh) * | 2020-07-20 | 2020-10-30 | 平安科技(深圳)有限公司 | 基于zookeeper的日志处理方法、装置、计算机设备和存储介质 |
CN112256437A (zh) * | 2020-11-10 | 2021-01-22 | 网易(杭州)网络有限公司 | 一种任务分发方法及装置 |
CN113703929A (zh) * | 2020-05-20 | 2021-11-26 | 中国移动通信集团浙江有限公司 | 一种任务调度方法、系统、计算设备和存储介质 |
CN114416346A (zh) * | 2021-12-23 | 2022-04-29 | 广州市玄武无线科技股份有限公司 | 一种多节点任务调度方法、装置、设备及存储介质 |
CN114546623A (zh) * | 2022-03-01 | 2022-05-27 | 淮安市第二人民医院 | 一种基于大数据系统的任务调度方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746838A (zh) * | 2013-12-26 | 2014-04-23 | 华北计算技术研究所 | 一种无中心节点计算机网络的任务调度方法 |
CN107688496A (zh) * | 2017-07-24 | 2018-02-13 | 上海壹账通金融科技有限公司 | 任务分布式处理方法、装置、存储介质和服务器 |
CN108304255A (zh) * | 2017-12-29 | 2018-07-20 | 北京城市网邻信息技术有限公司 | 分布式任务调度方法及装置、电子设备及可读存储介质 |
CN109271243A (zh) * | 2018-08-31 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种集群任务管理系统 |
CN109933422A (zh) * | 2017-12-19 | 2019-06-25 | 北京京东尚科信息技术有限公司 | 处理任务的方法、装置、介质及电子设备 |
-
2019
- 2019-08-16 CN CN201910758877.XA patent/CN110661844A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746838A (zh) * | 2013-12-26 | 2014-04-23 | 华北计算技术研究所 | 一种无中心节点计算机网络的任务调度方法 |
CN107688496A (zh) * | 2017-07-24 | 2018-02-13 | 上海壹账通金融科技有限公司 | 任务分布式处理方法、装置、存储介质和服务器 |
WO2019019400A1 (zh) * | 2017-07-24 | 2019-01-31 | 上海壹账通金融科技有限公司 | 任务分布式处理方法、装置、存储介质和服务器 |
CN109933422A (zh) * | 2017-12-19 | 2019-06-25 | 北京京东尚科信息技术有限公司 | 处理任务的方法、装置、介质及电子设备 |
CN108304255A (zh) * | 2017-12-29 | 2018-07-20 | 北京城市网邻信息技术有限公司 | 分布式任务调度方法及装置、电子设备及可读存储介质 |
CN109271243A (zh) * | 2018-08-31 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种集群任务管理系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506401A (zh) * | 2020-03-27 | 2020-08-07 | 北京百度网讯科技有限公司 | 自动驾驶仿真任务调度方法、装置、电子设备及存储介质 |
CN111506401B (zh) * | 2020-03-27 | 2023-11-21 | 北京百度网讯科技有限公司 | 自动驾驶仿真任务调度方法、装置、电子设备及存储介质 |
CN113703929A (zh) * | 2020-05-20 | 2021-11-26 | 中国移动通信集团浙江有限公司 | 一种任务调度方法、系统、计算设备和存储介质 |
CN113703929B (zh) * | 2020-05-20 | 2023-08-01 | 中国移动通信集团浙江有限公司 | 一种任务调度方法、系统、计算设备和存储介质 |
CN111866130A (zh) * | 2020-07-20 | 2020-10-30 | 平安科技(深圳)有限公司 | 基于zookeeper的日志处理方法、装置、计算机设备和存储介质 |
CN111866130B (zh) * | 2020-07-20 | 2023-04-18 | 平安科技(深圳)有限公司 | 基于zookeeper的日志处理方法、装置、计算机设备和存储介质 |
CN111813440A (zh) * | 2020-07-21 | 2020-10-23 | 北京千丁互联科技有限公司 | 一种多线程应用发布方法及装置 |
CN112256437A (zh) * | 2020-11-10 | 2021-01-22 | 网易(杭州)网络有限公司 | 一种任务分发方法及装置 |
CN114416346A (zh) * | 2021-12-23 | 2022-04-29 | 广州市玄武无线科技股份有限公司 | 一种多节点任务调度方法、装置、设备及存储介质 |
CN114546623A (zh) * | 2022-03-01 | 2022-05-27 | 淮安市第二人民医院 | 一种基于大数据系统的任务调度方法和系统 |
CN114546623B (zh) * | 2022-03-01 | 2022-12-27 | 淮安市第二人民医院 | 一种基于大数据系统的任务调度方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110661844A (zh) | 自动发布调度系统、方法和存储介质 | |
CN109684053B (zh) | 大数据的任务调度方法和系统 | |
Adams et al. | Dynamic, extensible and context-aware exception handling for workflows | |
JP5970617B2 (ja) | 開発支援システム | |
CN111176697A (zh) | 服务实例部署方法、数据处理方法及集群联邦 | |
US10552296B2 (en) | Human-readable, language-independent stack trace summary generation | |
EP2031507A1 (en) | Systems and/or methods for location transparent routing and execution of processes | |
US9092278B2 (en) | Determining the processing order of a plurality of events | |
US20120317050A1 (en) | Method, computer program product and computer-readable storage medium for the generic creation of a structure tree for describing an it process | |
Burge | Software engineering using design RATionale | |
CN103377101A (zh) | 一种测试系统和测试方法 | |
US9466037B2 (en) | Versioning and effectivity dates for orchestration business process design | |
US20080172669A1 (en) | System capable of executing workflows on target applications and method thereof | |
Saboohi et al. | Failure recovery of composite semantic web services using subgraph replacement | |
CN116400950A (zh) | 一种基于版本控制的DevOps元流水线系统 | |
CN110765078A (zh) | 一种文件管理方法、装置及计算机可读存储介质 | |
KR100976420B1 (ko) | 형상관리 시스템 및 방법 | |
CN112363819A (zh) | 大数据任务动态编排调度方法、装置及计算设备 | |
CN110019144A (zh) | 一种大数据平台数据运维的方法和系统 | |
CN112181443B (zh) | 服务的自动化部署方法、装置及电子设备 | |
CN113762722A (zh) | 合作开发软件项目的方法和装置 | |
CN111078258A (zh) | 一种版本升级方法及装置 | |
Mateo et al. | A coloured Petri net approach to model and analyse stateful workflows based on WS-BPEL and WSRF | |
CN111078666B (zh) | 基于跨中心多数据库的自动化卸数供数的方法 | |
Eder et al. | Product Data Management for Continuously Consistent CAD Data in Wiring Harness Development |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200107 |
|
RJ01 | Rejection of invention patent application after publication |