自动发布调度系统、方法和存储介质.pdf
![自动发布调度系统、方法和存储介质.pdf_第1页](https://img.zhuanlichaxun.net/fileroot5/2021-8/5/d33501a5-1058-44bb-94fd-369483900903/d33501a5-1058-44bb-94fd-3694839009031.gif)
![自动发布调度系统、方法和存储介质.pdf_第2页](https://img.zhuanlichaxun.net/fileroot5/2021-8/5/d33501a5-1058-44bb-94fd-369483900903/d33501a5-1058-44bb-94fd-3694839009032.gif)
![自动发布调度系统、方法和存储介质.pdf_第3页](https://img.zhuanlichaxun.net/fileroot5/2021-8/5/d33501a5-1058-44bb-94fd-369483900903/d33501a5-1058-44bb-94fd-3694839009033.gif)
《自动发布调度系统、方法和存储介质.pdf》由会员分享,可在线阅读,更多相关《自动发布调度系统、方法和存储介质.pdf(21页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910758877.X (22)申请日 2019.08.16 (71)申请人 北京旷视科技有限公司 地址 100190 北京市海淀区科学院南路2号 A座313 (72)发明人 张典 (74)专利代理机构 北京市磐华律师事务所 11336 代理人 高伟李晴 (51)Int.Cl. H04L 29/08(2006.01) (54)发明名称 自动发布调度系统、 方法和存储介质 (57)摘要 本发明提供了一种自动发布调度系统、 方法 和存储介质, 该系统包括元信息集群以及两个以 上。
2、处理节点, 每个处理节点将其自身的状态信息 同步到元信息集群, 并从中读取所有处理节点的 状态信息, 每个处理节点包括任务调度模块和任 务处理模块, 其中, 第一处理节点的任务调度模 块用于: 根据每个待处理的子流程的配置需要以 及所有处理节点的状态信息, 查找适于处理所述 待处理的子流程的第二处理节点; 以及将所述待 处理的子流程调度到所述第二处理节点; 所述第 二处理节点的任务处理模块用于对接收到的所 述待处理的子流程进行处理。 本发明采用去中心 化架构, 其中每个处理节点既是调度节点, 也是 执行节点, 从而提高了系统的程序并行发布效率 及容错能力。 权利要求书3页 说明书13页 附图4。
3、页 CN 110661844 A 2020.01.07 CN 110661844 A 1.一种自动发布调度系统, 其特征在于, 所述系统包括元信息集群以及两个以上的处 理节点, 每个所述处理节点将所述处理节点自身的状态信息同步到元信息集群, 并从所述 元信息集群读取所有处理节点的状态信息, 每个所述处理节点包括任务调度模块和任务处 理模块, 其中, 第一处理节点的任务调度模块用于: 获取构建任务、 所述构建任务中的流程、 或者所述流程中的子流程, 并确定待处理的子 流程; 根据每个待处理的所述子流程的配置需要以及所有处理节点的所述状态信息, 查找适 于处理所述待处理的子流程的第二处理节点, 所。
4、述第二处理节点与所述第一处理节点相同 或不同; 以及 将所述待处理的子流程调度到所述第二处理节点; 所述第二处理节点的任务处理模块用于对接收到的所述待处理的子流程进行处理。 2.根据权利要求1所述的系统, 其特征在于, 所述第二处理节点的所述任务处理模块还 用于: 在处理结束之后, 将处理结果返回给所述第一处理节点的所述任务调度模块。 3.根据权利要求2所述的系统, 其特征在于, 所述第一处理节点的所述任务调度模块用 于收集每个所述子流程的处理结果, 并将所述处理结果保存到分布式存储系统; 所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的 处理结果作为输入来处理所述待处。
5、理的子流程, 或者, 所述第一处理节点的任务调度模块 从所述分布式存储系统获取前一个子流程的处理结果, 并发送至所述第二处理节点, 以用 于由所述第二处理节点作为输入来处理所述待处理的子流程。 4.根据权利要求3所述的系统, 其特征在于, 所述第一处理节点还用于: 若一个流程的每个子流程都处理成功, 则更新该流程的状态为阶段结束; 若一个构建 任务的所有流程都阶段结束, 则更新该构建任务的状态为结束; 以及 若一个流程中存在子流程处理失败, 则更新该流程的状态为阶段异常, 同时标记失败 的子流程状态为失败, 记录失败日志, 并从处理失败的所述子流程处开始进行重新调度。 5.根据权利要求1所述的。
6、系统, 其特征在于, 每个所述任务处理模块包括至少一个处理 单元, 每个所述任务处理模块的不同处理节点并行处理不相关联的多个流程或不相关联的 多个子流程。 6.根据权利要求1所述的系统, 其特征在于, 所述状态信息包括所述处理节点的配置信 息和所述处理节点的当前执行状态信息。 7.根据权利要求6所述的系统, 其特征在于, 所述配置信息包括所述处理节点所支持的 编译环境、 每种编译环境对应的处理单元数量、 可使用CPU数量、 和/或可使用内存数量。 8.根据权利要求1所述的系统, 其特征在于, 根据所述待处理的子流程的配置、 配置约 束和每个所述处理节点的状态信息来确定合适的处理节点。 9.根据。
7、权利要求1所述的系统, 其特征在于, 在所述构建任务被一个所述处理节点获取 之后, 则所述构建任务进入锁定状态, 其他处理节点不再获取进入锁定状态的所述构建任 务。 10.根据权利要求1所述的系统, 其特征在于, 所述处理节点还用于: 权利要求书 1/3 页 2 CN 110661844 A 2 当从所述元信息集群中获知另一个所述处理节点失效时, 剔除失效的处理节点。 11.根据权利要求1所述的系统, 其特征在于, 所述构建任务的编排包括: 根据定制化需 求从触发器、 编译、 处理依赖资源、 生成docker镜像、 打包、 生成编排、 发布中选择至少一个 流程编排形成所述构建任务, 每个所述流。
8、程包括至少一个子流程。 12.一种自动发布调度方法, 其特征在于, 所述方法包括: 两个以上的处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信 息集群, 并从所述元信息集群读取所有处理节点的状态信息, 每个所述处理节点包括任务 调度模块和任务处理模块; 第一处理节点的任务调度模块获取构建任务、 所述构建任务中的流程、 或者所述流程 中的子流程, 并确定待处理的子流程; 所述第一处理节点的所述任务调度模块根据每个待处理的子流程的配置需要, 根据所 述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处理节点, 所述第二 处理节点与所述第一处理节点相同或不同; 以及 所述第一。
9、处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二 处理节点; 所述第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。 13.根据权利要求12所述的方法, 其特征在于, 还包括: 在所述处理结束之后, 所述第二处理节点的所述任务处理模块将处理结果返回给所述 第一处理节点的所述任务调度模块。 14.根据权利要求13所述的方法, 其特征在于, 还包括: 所述第一处理节点的所述任务 调度模块收集每个所述子流程的处理结果, 并将所述处理结果存储到分布式存储系统; 所述第二处理节点的所述任务处理模块从所述分布式存储系统获取前一个子流程的 处理结果作为输入来处理所述待处理的子流。
10、程, 或者, 所述第一处理节点的所述任务调度 模块从所述分布式存储系统获取前一个子流程的处理结果, 并发送至所述第二处理节点, 以用于由所述第二处理节点作为输入来处理所述待处理的子流程。 15.根据权利要求13所述的方法, 其特征在于, 还包括: 若一个流程的每个子流程都处理成功, 则更新该流程的状态为阶段结束; 若一个构建 任务的所有流程都阶段结束, 则更新该构建任务的状态为结束; 若一个流程中存在子流程处理失败, 则更新该流程的状态为阶段异常, 同时标记失败 的子流程状态为失败, 记录失败日志, 并从处理失败的所述子流程处开始进行重新调度。 16.根据权利要求12所述的方法, 其特征在于,。
11、 所述状态信息包括所述处理节点的配置 信息和当前执行状态信息。 17.根据权利要求16所述的方法, 其特征在于, 所述配置信息包括所述处理节点所支持 的编译环境、 每种编译环境对应的处理单元数量、 可使用CPU数量、 和/或可使用内存数量。 18.根据权利要求12所述的方法, 其特征在于, 根据所述待处理的子流程的配置、 配置 约束和每个所述处理节点的状态信息来确定合适的处理节点。 19.根据权利要求12所述的方法, 其特征在于, 还包括: 在所述构建任务被一个所述处理节点获取之后, 则将所述构建任务设置为锁定状态, 其他处理节点不再获取进入锁定状态的所述构建任务。 权利要求书 2/3 页 3。
12、 CN 110661844 A 3 20.根据权利要求12所述的方法, 其特征在于, 还包括: 当至少一个所述处理节点从所述元信息集群中获知另一个所述处理节点失效时, 剔除 失效的处理节点。 21.根据权利要求12所述的方法, 其特征在于, 还包括: 根据定制化需求从触发器、 编 译、 处理依赖资源、 生成docker镜像、 打包、 生成编排、 发布中选择至少一个流程编排形成所 述构建任务, 每个所述流程包括至少一个子流程。 22.一种自动发布调度系统, 其特征在于, 所述系统包括存储装置和处理器, 所述存储 装置上存储有由所述处理器运行的计算机程序, 所述计算机程序在被所述处理器运行时执 行。
13、如权利要求12-21中的任一项所述的自动发布调度方法。 23.一种存储介质, 其特征在于, 所述存储介质上存储有计算机程序, 所述计算机程序 在运行时执行如权利要求12-21中的任一项所述的自动发布调度方法。 权利要求书 3/3 页 4 CN 110661844 A 4 自动发布调度系统、 方法和存储介质 技术领域 0001 本发明涉及程序发布技术领域, 更具体地涉及一种自动发布调度系统、 方法和存 储介质。 背景技术 0002 程序发布通常包含多个步骤, 例如触发器、 编译、 处理依赖资源、 生成docker镜像、 打包、 生成编排等。 对于每个程序来说, 发布的整个过程都是可定制化的, 通。
14、过简单编排, 生 成各个子流程之间的拓扑关系以及数据流关系。 目前一般通过编排生成各个子流程之间的 拓扑关系, 支持完整流程的分布式处理。 0003 然而, 现在没有专用的自动发布调度系统, 现有的系统不支持将每个子流程分配 到不同的处理单元处理; 不支持维护每个子流程的输出结果以在出现异常后提高重试效 率; 不支持根据配置约束以及系统运行状态去调度处理子流程; 不具有通用性; 不支持完全 分布式。 发明内容 0004 下面简要描述本发明提出的自动发布调度方案, 更多细节将在后续结合附图在具 体实施方式中加以描述。 0005 根据本发明实施例的一方面, 提供了一种自动发布调度系统, 所述系统包。
15、括元信 息集群以及两个以上的处理节点, 每个所述处理节点将所述处理节点自身的状态信息同步 到元信息集群, 并从所述元信息集群读取所有处理节点的状态信息, 每个所述处理节点包 括任务调度模块和任务处理模块, 其中, 所述任务调度模块用于: 第一处理节点的任务调度 模块用于: 获取构建任务、 所述构建任务中的流程, 或者所述流程中的子流程, 并确定待处 理的子流程; 根据每个待处理的所述子流程的配置需要以及所有处理节点的所述状态信 息, 查找适于处理所述待处理的子流程的第二处理节点, 所述第二处理节点与所述第一处 理节点相同或不同; 以及将所述待处理的子流程调度到所述第二处理节点; 所述第二处理 。
16、节点的任务处理模块用于对接收到的所述待处理的子流程进行处理。 0006 在一个实施例中, 所述第二处理节点的所述任务处理模块还用于: 在处理结束之 后, 将处理结果返回给所述第一处理节点的所述任务调度模块。 0007 在一个实施例中, 所述第一处理节点的所述任务调度模块用于收集每个所述子流 程的处理结果, 并将所述处理结果保存到分布式存储系统; 所述第二处理节点的所述任务 处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来处理所述待处 理的子流程, 或者, 所述第一处理节点的任务调度模块从所述分布式存储系统获取前一个 子流程的处理结果, 并发送至所述第二处理节点, 以用于由所述第。
17、二处理节点作为输入来 处理所述待处理的子流程。 0008 在一个实施例中, 所述第一处理节点还用于: 若一个流程的每个子流程都处理成 功, 则更新该流程的状态为阶段结束; 若一个构建任务的所有流程都阶段结束, 则更新该构 说明书 1/13 页 5 CN 110661844 A 5 建任务的状态为结束; 以及若一个流程中存在子流程处理失败, 则更新该流程的状态为阶 段异常, 同时标记失败的子流程状态为失败, 记录失败日志, 并从处理失败的所述子流程处 开始进行重新调度。 0009 在一个实施例中, 每个所述任务处理模块包括至少一个处理单元, 每个所述任务 处理模块的不同处理节点并行处理不相关联的。
18、多个流程或不相关联的多个子流程。 0010 在一个实施例中, 所述状态信息包括所述处理节点的配置信息和所述处理节点的 当前执行状态信息。 0011 在一个实施例中, 所述配置信息包括所述处理节点所支持的编译环境、 每种编译 环境对应的处理单元数量、 可使用CPU数量、 和/或可使用内存数量。 0012 在一个实施例中, 根据所述待处理的子流程的配置、 配置约束和每个所述处理节 点的状态信息来确定合适的处理节点。 0013 在一个实施例中, 在所述构建任务被一个所述处理节点获取之后, 则所述构建任 务进入锁定状态, 其他处理节点不再获取进入锁定状态的所述构建任务。 0014 在一个实施例中, 所。
19、述处理节点还用于: 当从所述元信息集群中获知另一个所述 处理节点失效时, 剔除失效的处理节点。 0015 在一个实施例中, 所述构建任务的编排包括: 根据定制化需求从触发器、 编译、 处 理依赖资源、 生成docker镜像、 打包、 生成编排、 发布中选择至少一个流程编排形成所述构 建任务, 每个所述流程包括至少一个子流程。 0016 本发明另一方面提供一种自动发布调度方法, 所述方法包括: 两个以上的处理节 点中的每个处理节点将所述处理节点自身的状态信息同步到元信息集群, 并从所述元信息 集群读取所有处理节点的状态信息, 每个所述处理节点包括任务调度模块和任务处理模 块; 第一处理节点的任务。
20、调度模块获取构建任务、 所述构建任务中的流程、 或者所述流程中 的子流程, 并确定待处理的子流程; 所述第一处理节点的所述任务调度模块根据每个待处 理的子流程的配置需要, 根据所述所有处理节点的状态信息查找适于处理所述待处理的子 流程的第二处理节点, 所述第二处理节点与所述第一处理节点相同或不同; 以及所述第一 处理节点的所述任务调度模块将每个所述待处理的子流程调度到所述第二处理节点; 所述 第二处理节点的任务处理模块对接收到的所述待处理的子流程进行处理。 0017 在一个实施例中, 所述方法还包括: 在所述处理结束之后, 所述第二处理节点的所 述任务处理模块将处理结果返回给所述第一处理节点的。
21、所述任务调度模块。 0018 在一个实施例中, 所述方法还包括: 所述第一处理节点的所述任务调度模块收集 每个所述子流程的处理结果, 并将所述处理结果存储到分布式存储系统; 所述第二处理节 点的所述任务处理模块从所述分布式存储系统获取前一个子流程的处理结果作为输入来 处理所述待处理的子流程, 或者, 所述第一处理节点的所述任务调度模块从所述分布式存 储系统获取前一个子流程的处理结果, 并发送至所述第二处理节点, 以用于由所述第二处 理节点作为输入来处理所述待处理的子流程。 0019 在一个实施例中, 所述方法还包括: 若一个流程的每个子流程都处理成功, 则更新 该流程的状态为阶段结束; 若一个。
22、构建任务的所有流程都阶段结束, 则更新该构建任务的 状态为结束; 若一个流程中存在子流程处理失败, 则更新该流程的状态为阶段异常, 同时标 记失败的子流程状态为失败, 记录失败日志, 并从处理失败的所述子流程处开始进行重新 说明书 2/13 页 6 CN 110661844 A 6 调度。 0020 在一个实施例中, 所述状态信息包括所述处理节点的配置信息和当前执行状态信 息。 0021 在一个实施例中, 所述配置信息包括所述处理节点所支持的编译环境、 每种编译 环境对应的处理单元数量、 可使用CPU数量、 和/或可使用内存数量。 0022 在一个实施例中, 根据所述待处理的子流程的配置、 配。
23、置约束和每个所述处理节 点的状态信息来确定合适的处理节点。 0023 在一个实施例中, 所述方法还包括: 在所述构建任务被一个所述处理节点获取之 后, 则将所述构建任务设置为锁定状态, 其他处理节点不再获取进入锁定状态的所述构建 任务。 0024 在一个实施例中, 所述方法还包括: 当至少一个所述处理节点从所述元信息集群 中获知另一个所述处理节点失效时, 剔除失效的处理节点。 0025 在一个实施例中, 所述方法还包括: 根据定制化需求从触发器、 编译、 处理依赖资 源、 生成docker镜像、 打包、 生成编排、 发布中选择至少一个流程编排形成所述构建任务, 每 个所述流程包括至少一个子流程。
24、。 0026 本发明又一方面一种自动发布调度系统, 所述系统包括存储装置和处理器, 所述 存储装置上存储有由所述处理器运行的计算机程序, 所述计算机程序在被所述处理器运行 时执行上述自动发布调度方法。 0027 本发明再一方面提供一种存储介质, 所述存储介质上存储有计算机程序, 所述计 算机程序在运行时执行上述自动发布调度方法。 0028 本发明提供的自动发布调度系统、 方法和存储介质采用去中心化架构, 其采用由 两个以上处理节点构成的集群进行分布式任务调度和处理, 其中每个处理节点既是调度节 点, 也是执行节点, 从而提高了系统的程序并行发布效率及容错能力。 附图说明 0029 通过结合附图。
25、对本发明实施例进行更详细的描述, 本发明的上述以及其它目的、 特征和优势将变得更加明显。 附图用来提供对本发明实施例的进一步理解, 并且构成说明 书的一部分, 与本发明实施例一起用于解释本发明, 并不构成对本发明的限制。 在附图中, 相同的参考标号通常代表相同部件或步骤。 0030 图1示出根据本发明实施例的自动发布调度系统的示意性框图; 0031 图2示出根据本发明实施例的自动发布调度系统进行任务调度处理的示意性流程 图; 0032 图3示出根据本发明实施例的自动发布调度方法的示意性流程图; 0033 图4示出根据本发明另一实施例的自动发布调度系统的示意性框图。 具体实施方式 0034 为了。
26、使得本发明的目的、 技术方案和优点更为明显, 下面将参照附图详细描述根 据本发明的示例实施例。 显然, 所描述的实施例仅仅是本发明的一部分实施例, 而不是本发 明的全部实施例, 应理解, 本发明不受这里描述的示例实施例的限制。 基于本发明中描述的 说明书 3/13 页 7 CN 110661844 A 7 本发明实施例, 本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例 都应落入本发明的保护范围之内。 0035 根据本发明实施例的一方面, 提供了一种自动发布调度系统。 下面, 将参考图1和 图2结合具体实施例描述根据本发明一方面提供的自动发布调度系统100, 图1中示出了根 据。
27、本发明实施例的自动发布调度系统100的示意性结构框图, 图2示出了自动发布调度系统 100进行任务调度处理的示意性流程图。 0036 如图1所示, 自动发布调度系统100包括元信息集群110以及两个以上处理节点, 每 个所述处理节点包括任务调度模块和任务处理模块, 图1中仅示出第一处理节点121和第二 处理节点122, 其中第一处理节点121包括任务调度模块121A和任务处理模块121B, 第二处 理节点122包括任务调度模块122A和任务处理模块122B。 可以理解的是, 虽然图1中仅示出 了两个处理节点, 但自动发布调度系统100可以包括两个以上的任意数目的处理节点; 下文 将第一处理节点。
28、121描述为调度节点, 第二处理节点122描述为执行节点, 但这并不意图构 成限制, 所述自动发布调度系统100中的每个处理节点即可以作为调度节点, 也可以作为执 行节点。 0037 多个处理节点中的每个处理节点将所述处理节点自身的状态信息同步到元信息 集群110, 并从所述元信息集群110读取所有处理节点的状态信息。 其中, 所述处理节点可以 定期将其自身的状态信息同步到元信息集群110和读取其他处理节点的状态信息, 也可以 在每当其状态信息发生变化时将其状态信息同步到元信息集群。 0038 所述第一处理节点121的任务调度模块121A用于: 获取构建任务、 所述构建任务中 的流程或者所述流。
29、程中的子流程, 并确定待处理的子流程; 根据每个待处理的子流程的配 置需要, 根据所述所有节点的状态信息查找适于处理所述待处理的子流程的第二处理节点 122; 以及将每个所述待处理的子流程调度到所述第二处理节点122; 所述第二处理节点的 任务处理模块122B用于对接收到的所述待处理的子流程进行处理。 0039 自动发布调度系统100采用去中心化架构, 其采用由两个以上处理节点构成的集 群进行分布式任务调度和处理, 其中每个处理节点既是调度节点, 也是执行节点, 提高了系 统的程序并行发布效率及容错能力。 0040 在一个实施例中, 每个处理节点对应一台服务器, 每个处理节点需要配置一些配 置。
30、信息, 所述配置信息包括而不限于所述处理节点所支持的编译环境、 每种编译环境对应 的处理单元数量、 可使用CPU数量、 和/或可使用内存数量。 0041 在服务启动之后, 每个处理节点自动注册到元信息集群110。 元信息集群110用于 保存所有处理节点的状态信息, 包括所述配置信息及每个处理节点的执行状态信息等。 作 为示例, 所述元信息集群可以采用zookeeper来实现。 0042 在系统运行过程中, 每个处理节点定期将处理节点自身的状态信息同步到元信息 集群110, 并从所述元信息集群110读取所有处理节点的状态信息, 由此, 每个处理节点都能 够获知所有处理节点的状态, 以便于进行任务。
31、的调度。 0043 在此基础上, 如图2所示, 第一处理节点121的任务调度模块121A可以定期从数据 库中获取待处理的构建任务, 并为其分配处理节点。 所述构建任务可以是未经处理的构建 任务, 也可以是处理失败或经部分处理的构建任务(例如, 发布程序A的构建任务目前处理 到了编译流程), 获取了构建任务即获取了构建任务的处理状态, 包括其当前处理到哪个子 说明书 4/13 页 8 CN 110661844 A 8 流程, 以及上一个子流程的处理结果, 具体将在下文进行描述。 当构建任务被任意一个处理 节点获取之后, 该构建任务进入锁定状态, 其他处理节点不能够再获取该构建任务。 0044 在。
32、一个实施例中, 自动发布调度系统100包括构建任务编排模块, 用于编排所述构 建任务, 并将编排好的构建任务发送到数据库。 所述构建任务编排模块设置在客户端上, 例 如, 用户可以在web界面上编排构建任务, 并将构建好的任务发送到数据库, 第一处理节点 121的任务调度模块121A从数据库获取构建好的构建任务。 所述构建任务包括一个以上的 流程, 每个流程包括一个以上的子流程。 0045 作为示例, 整个构建任务的编排包括根据定制化从触发器、 下载代码、 编译、 处理 依赖资源、 生成docker镜像、 打包、 生成编排、 发布等多个流程中的选择至少一个流程编排 形成所述构建任务。 在一个实。
33、施例中, 依次填入每个流程的配置信息。 例如, 首先输入项目 基本信息, 源码地址、 分支、 版本等; 其次配置编译环境, 输入参数及输出路径; 再次配置生 成镜像文件的输入输出参数。 接着, 如果项目需要打包发布, 则配置打包的输入输出参数、 配置文件等, 最后即可生成构建任务。 如此, 可以实现构建任务的定制化, 使本发明的方法 能够适用于不同的构建任务, 具有良好通用性。 0046 在一个实施例中, 可以复制历史构建任务, 并根据需要修改其中的极少数参数, 即 可生成新的构建任务, 以提高构建任务的创建效率。 0047 在构建任务中, 每个流程均包含一个或多个子流程。 例如, 上述的编译。
34、流程可能需 要同时编译多种语言的多个项目, 即编译流程可以包含多个子流程, 例如java编译子流程 和/或python编译子流程等。 0048 可以理解的是, 根据实际需要, 部分上述流程是可以省略的, 例如打包流程、 生成 编排流程、 发布流程等, 并且, 根据实际需要, 除了上述列举的流程之外, 构建任务还可以包 括其他流程。 即具体的流程可以根据实际需要定制, 用户仅需要编排构建任务, 之后, 自动 发布调度系统自动对其进行调度和处理, 降低发布过程中人为干预带来的不确定性和风 险。 0049 如上所述, 第一处理节点121的任务调度模块121A从数据库中获取到了构建任务、 构建任务中的。
35、至少一个流程或者流程中的至少一个子流程。 具体地, 第一处理节点121可以 获取整个构建任务以进行拆分和调度, 或者, 第一处理节点121可以获取未完成的一个或多 个流程进行拆分和调度, 或者, 第一处理节点121可以获取未完成的子流程并直接进行调 度。 0050 在一个实施例中, 参照图2, 在获取构建任务后, 第一处理节点121的任务调度模块 121A首先查看该构建任务的状态, 以判断其是否已处理完成, 即是否存在未完成的流程。 若 该构建任务的状态为未处理完成, 则第一处理节点121的任务调度模块121A将该构建任务 的状态更新为处理中, 使该构建任务不能被其他处理节点获取, 并将未完成。
36、的流程拆分为 多个子流程, 以及查看未完成的流程进行到哪个子流程, 其中有哪些未完成的子流程需要 处理。 0051 接着, 第一处理节点121的任务调度模块121A根据从元信息集群110获取的所有节 点的节点信息为每个未完成的子流程查找合适的处理节点。 在一个实施例中, 第一处理节 点121获取的是构建任务, 则其为该构建任务的每个未完成的流程中未完成的子流程查找 合适的处理节点。 在另一个实施例中, 第一处理节点121获取的是构建任务中的一个流程, 说明书 5/13 页 9 CN 110661844 A 9 则其为该流程的每个未完成的子流程查找合适的处理节点。 在又一实施例中, 第一处理节 。
37、点121获取的是子流程, 则其直接为该子流程查找合适的处理节点。 在本发明实施例中, 将 其中一个子流程的合适的处理节点例示为第二处理节点122, 但可以理解的是, 该合适的处 理节点可以是第一处理节点121自身, 也可以是其他处理节点。 0052 在一个实施例中, 查找过程根据子流程配置(例如编程语言)、 配置约束(所需的 CPU数量、 内存数量)、 以及集群运行状态(负载状态)来决定。 例如, 某个程序编译流程需要1 个CPU、 4G内存, 则第一处理节点121的任务调度模块121A在元信息集群110中查找符合条件 的处理节点, 然后将任务调度给该处理节点。 该处理节点在接收到该任务调度后。
38、, 可根据自 身情况选择是否回绝该任务。 0053 例如, 调度任务包含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分别对应同一个子流程。 0054 分布式调度处理集群中至少有两个处理节点P和Q, 其中P的任务处理模块包括两 个处理单元, 分别能够处理流程S1、 S2(最大2G内存), Q有2个处理单元,。
39、 分别能够处理流程 S2(最大4G内存)、 S3。 0055 对于构建任务A, A_S1流程会被调度到处理节点P处理; A_S2_a和A_S2_b对内存没 有要求, 因而任务调度模块可以将其调度到处理节点P或者处理节点Q中任意一个处理; A_ S3流程会被调度到处理节点Q处理。 0056 对于构建任务B, B_S1流程会被调度到处理节点P处理; 由于B_S2流程需要4G内存, 所以只能调度到处理节点Q进行处理; B_S3流程会被调度到处理节点Q处理。 0057 第二处理节点122的任务处理模块122B用于对接收到的子流程进行处理。 0058 第二处理节点122在接收到被调度到该处理节点的子流程。
40、之后, 可根据自身情况 选择是否回绝该处理任务。 在一个实施例中, 若该处理节点回绝了该子流程的处理任务, 则 执行任务调度的第一处理节点121选择其他合适的处理节点来调度该子流程。 0059 在一个实施例中, 第二处理节点122的任务处理模块122B包括至少一个处理单元, 处理单元可并行处理不相关联的多个流程或多个子流程, 所述不相关联的多个流程为来自 不同构建任务的多个流程, 所述不相关联的多个子流程为来自不同构建任务的多个子流 程。 续举前例, 假设处理节点P和处理节点Q都具有两个处理单元, 处理节点P要处理A_S1, A_ S2_b, B_S1, 处理节点Q要处理A_S2_a, A_S。
41、3, 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的处理结果作为输入。 其次, 调度 节点也只在一个流程或子流程处理完毕时才进行下一个流程或子流程的调度, 而不会出现 同一个构建任务的不同的流。
42、程或同一个流程的不同子流程被并行处理的情况。 0060 第二处理节点122的任务处理模块122B处理完成之后, 将处理结果返回到执行调 度任务的第一处理节点121的任务调度模块121A。 0061 第一处理节点121的任务调度模块121A收集其调度的子流程的处理结果, 每收集 说明书 6/13 页 10 CN 110661844 A 10 到一个处理结果, 即将处理结果存储在分布式存储系统。 将每个子流程的输出都使用分布 式存储系统持久化存储, 可以提高异常情况下的重试效率。 0062 第二处理节点122以前一个子流程的处理结果作为输入来处理当前待处理的子流 程, 前一个子流程的处理结果可以存。
43、储于同一个服务器或不同的服务器上。 在一个实施例 中, 第二处理节点122的任务处理模块122B直接从分布式存储系统获取前一个子流程的处 理结果, 作为当前处理的子流程的输入资源。 在另一个实施例中, 由第一处理节点121的任 务调度模块从所述分布式存储系统获取前一个子流程的处理结果, 并发送至所述第二处理 节点122。 0063 在一个实施例中, 所述异常情况包括某一个子流程处理失败。 当第二处理节点122 的任务处理模块122B对于某一个子流程处理失败时, 向执行调度任务的第一处理节点121 的任务调度模块121A返回处理失败的信息。 若一个流程中存在子流程处理失败, 则第一处 理节点12。
44、1的任务调度模块121A更新该流程的状态为阶段异常, 同时标记失败的子流程状 态为失败, 记录失败日志, 并从处理失败的所述子流程处开始进行重新调度, 即重新查找适 用于处理该子流程的处理节点, 并调度该子流程到新的处理节点重新进行处理。 当重试达 到预设次数、 而该子流程仍未处理成功时, 任务调度模块121A标记整个构建任务为处理失 败, 并报告相应人员。 0064 第一处理节点121还用于根据每个子流程的处理结果更新子流程、 流程和/或构建 任务的状态。 具体地, 根据子流程的处理结果直接更新该子流程的处理状态; 当该第一处理 节点负责一个流程的调度时, 若一个流程的每个子流程都处理成功,。
45、 则更新该流程的状态 为阶段结束; 当该第一处理节点负责一个构建任务的调度时, 若一个构建任务的所有流程 都阶段结束, 则更新该构建任务的状态为结束。 只要所有流程的所有子流程都成功处理, 那 么根据最终一致性可以保证整个发布流程的完整性。 0065 在本发明实施例中, 以子流程为单位进行任务调度处理, 当存在子流程处理失败 时, 从失败的子流程处重试即可, 提高了重试效率。 0066 基于上面的描述, 本发明实施例提供的自动发布调度系统采用去中心化架构, 其 采用由两个以上处理节点构成的集群进行分布式任务调度和处理, 其中每个处理节点既是 调度节点, 也是执行节点, 从而提高了系统的程序并行。
46、发布效率及容错能力。 0067 下面结合图3描述本发明另一方面提供的自动发布调度方法。 图3示出了根据本发 明实施例的自动发布调度方法300的示意性流程图。 自动发布调度方法300在上述自动发布 调度系统100中实现, 系统的具体结构参照上文。 0068 在步骤S310, 两个以上的处理节点中的每个处理节点将所述处理节点自身的状态 信息同步到元信息集群, 并从所述元信息集群读取所有处理节点的状态信息, 每个所述处 理节点包括任务调度模块和任务处理模块。 0069 在一个实施例中, 每个处理节点对应一台服务器, 每个处理节点包括任务调度模 块和任务处理模块, 既可以执行任务调度, 又可以执行任务。
47、处理。 每个处理节点需要配置一 些配置信息, 所述配置信息包括而不限于所述处理节点所支持的编译环境、 每种编译环境 对应的处理单元数量、 可使用CPU数量、 和/或可使用内存数量。 0070 在服务启动之后, 每个处理节点自动注册到元信息集群。 元信息集群用于保存所 有处理节点的状态信息, 包括所述配置信息及每个处理节点的执行状态信息等。 作为示例, 说明书 7/13 页 11 CN 110661844 A 11 所述元信息集群可以采用zookeeper来实现。 0071 在系统运行过程中, 每个处理节点定期或在状态发生变化时将处理节点自身的状 态信息同步到元信息集群, 并从所述元信息集群读取。
48、所有处理节点的状态信息, 由此, 任务 调度模块可以获知所有处理节点的状态, 以便于进行任务的调度。 0072 在步骤S320, 第一处理节点的任务调度模块获取构建任务、 所述构建任务中的流 程、 或者所述流程中的子流程, 并确定待处理的子流程。 0073 其中, 所述构建任务可以是未经处理的构建任务, 也可以是处理失败或经部分处 理的构建任务(例如, 发布程序A的构建任务目前处理到了编译流程), 具体将在下文进行描 述。 当构建任务被一个处理节点的任务调度模块获取之后, 该构建任务进入锁定状态, 其他 处理节点不能够再获取该构建任务。 0074 在一个实施例中, 用户可以在web界面上编排构。
49、建任务, 并将构建好的任务发送到 数据库, 任务调度模块从数据库获取构建好的构建任务。 所述构建任务包括一个以上的流 程, 每个流程包括一个以上的子流程。 0075 作为示例, 可以根据定制化需求从触发器、 下载代码、 编译、 处理依赖资源、 生成 docker镜像、 打包、 生成编排、 发布等多个流程中选择至少一个流程编排形成所述构建任 务, 每个所述流程包括至少一个子流程。 如此, 可以实现构建任务的定制化, 使本发明的方 法能够适用于不同的构建任务, 具有良好通用性。 0076 在一个实施例中, 可以复制历史构建任务, 并根据需要修改其中的极少数参数, 即 可生成新的构建任务, 以提高构。
50、建任务的创建效率。 0077 可以理解的是, 根据实际需要, 部分上述流程是可以省略的, 例如打包流程、 生成 编排流程、 发布流程等, 并且, 根据实际需要, 除了上述列举的流程之外, 构建任务还可以包 括其他流程。 即具体的流程可以根据实际需要定制, 用户仅需要编排构建任务, 之后, 自动 发布调度系统自动对其进行调度和处理, 降低发布过程中人为干预带来的不确定性和风 险。 0078 在步骤S330, 所述第一处理节点的所述任务调度模块根据每个待处理的子流程的 配置需要, 根据所述所有处理节点的状态信息查找适于处理所述待处理的子流程的第二处 理节点, 所述第二处理节点与所述第一处理节点相同。
- 内容关键字: 自动 发布 调度 系统 方法 存储 介质
土地规划收放线装置.pdf
拆装方便的靠墙折叠梯.pdf
夹爪及吊装夹具.pdf
脑血管介入术后加压固定装置.pdf
卫浴水路调节阀.pdf
冲压模具的快拆机构.pdf
中药材磨碎机.pdf
睡眠感知音乐声场系统.pdf
立卧组合式薄膜蒸发器.pdf
可顶升的飞机机翼维修平台.pdf
化工原料上料装置.pdf
纺织布料毛絮清理装置.pdf
信息采集设备.pdf
用于区域水环境污染物回收搅碎机.pdf
锂电池电极浆料快速调浆装置.pdf
高精度可调节电磁铁.pdf
市政给水检修工具.pdf
拼装式水下分层取样装置.pdf
分散加料的地膜原料混合机.pdf
防渗漏复合承压管道.pdf
加气混凝土板切割装置.pdf
杂粮加工输料装置.pdf
工业机器人用搬运夹具.pdf
分体式发光灯板安装结构及淋浴龙头.pdf
覆膜砂用酚醛树脂的制备方法.pdf
双玻光伏组件及其制备方法.pdf
便于排水的土工格栅.pdf
提升人机对话交互体验感的方法、装置、设备及介质.pdf
用户兴趣挖掘方法、装置、电子设备及介质.pdf
基于随机森林的串果采摘特征因素分析方法及设备.pdf
合金钢法兰锻件的锻造方法.pdf
公交车立体车库的车位控制方法、装置、设备及介质.pdf
一种升降式旋转室外消火栓.pdf
框架结构T型连接柱.pdf
防静电地板吸板器.pdf
一种建筑用箱体或井口预留孔洞活动模具.pdf
速成拉建房屋.pdf
预制桥面板精轧螺纹钢筋弧形连接构造.pdf
一种内固定式伸缩门滑行导轨及伸缩门.pdf
多用途封井器.pdf
一种新型圆弧建筑模板紧固件.pdf
一种超实木防水组合踢脚线.pdf
电气柜前门板门锁装置.pdf
双人正杆器.pdf
一种纳米铝塑复合板.pdf
强磁打捞器.pdf
一种基于无刷直流电机的环卫车电动扫盘系统.pdf
一种可调节型门铰链.pdf
一种用于基桩竖向抗压静载试验的船筏式试验装置.pdf
免贴墙砖.pdf
一种聚氨酯仿石材防火保温装饰复合板.pdf
相关文档
更多![海参发酵饲料及其制备方法和应用.pdf](/Images/s.gif)
![对虾发酵饲料及其制备方法和应用.pdf](/Images/s.gif)
![火龙果种植大棚内的照明结构.pdf](/Images/s.gif)
![新型胸心外科术后消炎杀菌装置.pdf](/Images/s.gif)
![基于多重PCR飞行核酸质谱检测心脏相关慢性病的基因突变的探针及引物组合物及试剂盒.pdf](/Images/s.gif)
![按压解锁式手套箱.pdf](/Images/s.gif)
![新能源发电系统无功补偿反馈修正装置.pdf](/Images/s.gif)
![水性耐腐蚀涂料组合物及其制备方法和应用.pdf](/Images/s.gif)
![金属零件流水线3D打印装置.pdf](/Images/s.gif)
![强支撑稳定型椭圆形箱梁.pdf](/Images/s.gif)
![塔楼楼层结体系.pdf](/Images/s.gif)
![电子驻车制动鼓式制动器.pdf](/Images/s.gif)
![集成自动化机械手的三辊折弯机.pdf](/Images/s.gif)
![齿轮双端面同步去毛刺装置.pdf](/Images/s.gif)
![重金属污染土壤修复装置.pdf](/Images/s.gif)
![把手自动组装设备.pdf](/Images/s.gif)
![卷布机.pdf](/Images/s.gif)
![车载摄像头的过流保护电路.pdf](/Images/s.gif)
![隐形拐杖架.pdf](/Images/s.gif)
![医院胸心外科专用引流装置.pdf](/Images/s.gif)