一种具有开放式流水线架构的应用创建系统的制作方法

文档序号:20510539发布日期:2020-04-24 18:28阅读:141来源:国知局
一种具有开放式流水线架构的应用创建系统的制作方法

本发明属于计算机软件技术领域,更具体地,涉及一种具有开放式流水线架构的应用创建系统。



背景技术:

开发运维一体化(devops)是一种重视“软件开发人员(dev)”和“it运维技术人员(ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,可以把devops看作开发(软件工程)、技术运营和质量保障(qa)三者的交集。

随着互联网新经济的发展,云计算、物联网、大数据、区块链、ai、5g等新技术的不断演进,如何轻松应对快速变化的业务需求,充分利用现有的it资源并降低运营成本,如何将沉淀的解决方案集中、规范的管理并快速复制等问题成为企业亟待解决的严峻问题。dora与googlecloud合作发布的2018年《devops现状报告》指出:在2014年时,只有16%的调查参与者表示自己在devops团队。而在2018,这个数字已经增长到27%。dora的研究强调了对技术转型至关重要的实践,这些重要的实践包括版本控制、自动化部署、持续集成(ci)、基于主干的开发以及松散耦合的架构。gartner魔力象限报告在多个领域(如:自动化测试、自动化运维)将devops提到重要地位,并归纳it信息化架构的发展趋势为逐渐解耦的过程。

主流的运维一体化平台的流水线设计,比较常见的有采用动态拼接流水线脚本的方式,即将流水线任务分为多个stage,每个stage通过串行或者并行的方式执行task,整个流水线称为pipelinejob,通过终端用户勾选编排自定义的stage来动态拼装出最终的pipelinejob,这种方式有如下几点弊端:

1、pipelinejob语法的复杂决定了最终拼装的流水线任务执行出错的高概率,且需要综合考虑可能引进的stage中的前置条件对pipeline结构的影响,比如:某个stage中需要基础环境要在pipeline头中定义,但其他的stage又不需要这个定义,这个stage是可选的;

2、整体pipeline执行的方式出现错误回滚的复杂度是stage的指数倍,由于流水线中的多个stage是通过脚本动态拼接形成的,即相邻stage之间紧密关联,一旦某一stage出错进行回滚,则影响流水线上其他stage的正常运行;

3、由于pipelinejob动态拼接流水线脚本以及错误回滚的复杂度较高,导致pipelinejob的扩展性较差,后期维护成本高。



技术实现要素:

针对现有技术的至少一个缺陷或改进需求,本发明提供了一种具有开放式流水线架构的应用创建系统及方法,支持客户根据自身的业务特色灵活定制和自由扩展应用功能,提升了产品的并发研发效率和第三方产品对接集成的能力。

为实现上述目的,按照本发明的一个方面,提供了一种具有开放式流水线架构的应用创建系统,包括任务创建单元、多个一级任务执行单元和二级任务执行单元;多个二级任务执行单元依次耦合构成任务队列,每个一级任务执行单元对应一个所述任务队列;

所述任务创建单元用于接收客户端发送的创建应用请求,根据所述创建应用请求将待创建应用拆分为多个子任务并分别下发给一级任务执行单元;

所述一级任务执行单元通过注册的行为接口监听任务创建单元分发的子任务,每个一级任务执行单元根据所述子任务的执行逻辑将该子任务拆分为多个阶段任务,并通过任务队列将多个阶段任务依次发送给各二级任务执行单元;

每个所述二级任务执行单元对应执行一个阶段任务,多个二级任务执行单元之间通过链式传递触发下一阶段任务的执行。

优选的,上述应用创建系统,当接收到客户端发送的应用扩展请求时,所述任务创建单元根据所述应用扩展请求创建新的一级任务执行单元并将待扩展应用作为一个子任务下发给新建的一级任务执行单元。

优选的,上述应用创建系统,当接收到客户端发送的子任务扩展请求时,所述任务创建单元根据所述子任务扩展请求将待扩展子任务下发给对应的一级任务执行单元;

所述一级任务执行单元在任务队列中插入新的二级任务执行单元并将所述待扩展子任务作为一个阶段任务下发给新建的二级任务执行单元。

优选的,上述应用创建系统,其一级任务执行单元的行为接口包括第一执行接口;二级任务执行单元的行为接口包括第二执行接口和撤回接口。

优选的,上述应用创建系统,其任务创建单元基于多线程的方式通过所述第一执行接口调用一级任务执行单元以使其执行子任务;

所述一级任务执行单元通过所述第二执行接口调用二级任务执行单元以使其执行阶段任务。

优选的,上述应用创建系统,当任一子任务执行过程中出现错误时,与所述子任务对应的一级任务执行单元根据任务队列中二级任务执行单元的耦合顺序逆向撤回各阶段任务,阶段任务的撤回基于上述撤回接口实现。

优选的,上述应用创建系统,阶段任务撤回过程中,各二级任务执行单元之间通过链式传递触发上一阶段任务的回滚。

优选的,上述应用创建系统,多个所述一级任务执行单元可通过串行或并行方式执行各自对应的子任务。

优选的,上述应用创建系统,其创建应用请求中包括应用名称、应用的执行参数集合。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)本发明提供的一种具有开放式流水线架构的应用创建系统,通过任务创建单元的集中式事件委派实现任务的统一下发和回滚,每个一级任务执行单元通过任务队列定制自己的子流程,一级任务执行单元之间各自独立接收任务创建单元广播的子任务并进行处理;一级任务执行单元对应的任务队列支持插入、移除操作,用户可根据自身的业务特色在现有的任务队列中插入二级任务执行单元来扩展自身的特色应用,定制化能力强。

(2)本发明提供的一种具有开放式流水线架构的应用创建系统,将客户端发送的创建应用请求分解成为了每个独立闭包的、可由多个分步单元执行的子任务,子任务的并发能力可通过增加一级任务执行单元进行分布式方式水平扩展,子任务的业务逻辑性可通过插入二级任务执行单元进行纵向伸缩,扩展性好,便于后期维护,有利于降低维护成本。

(3)本发明提供的一种具有开放式流水线架构的应用创建系统,任务创建单元、多个一级任务执行单元和二级任务执行单元之间是一种松耦合的开放式流水线架构,开放式流水线架构保证了每个一级任务执行单元的独立性、可插拔性,以及二级任务执行单元的闭环完整性,从而保证了子任务的并行、串行的灵活性;相较传统的流水线架构既可以提升流水线执行的周期效率,又可以保证在异常情况下的子任务独立回滚以及可选择性的全量回滚。

(4)本发明提供的一种具有开放式流水线架构的应用创建系统,实现了流水线各环节的可并行、可串行化控制,一方面保证了流水线环节间依赖的可控性,另一方面提高了产品的并发性能。

附图说明

图1是本发明实施例提供的具有开放式流水线架构的应用创建系统的组成示意图;

图2是本发明实施例提供的应用创建过程的任务分解及下发的拓扑图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

图1是本发明实施例提供的具有开放式流水线架构的应用创建系统的组成示意图;如图1所示,该应用创建系统包括任务创建单元、多个一级任务执行单元和二级任务执行单元;多个二级任务执行单元依次耦合构成任务队列,每个一级任务执行单元对应一个任务队列,任务队列首部的二级任务执行单元与一级任务执行单元耦合;

任务创建单元用于接收客户端发送的创建应用请求,根据该创建应用请求将待创建应用拆分为多个子任务并分别下发给一级任务执行单元;创建应用请求中包括应用名称、应用的执行参数集合;

一级任务执行单元通过注册的行为接口监听任务创建单元分发的子任务,每个一级任务执行单元根据子任务的执行逻辑将该子任务拆分为多个阶段任务,并通过任务队列将多个阶段任务依次发送给各二级任务执行单元;

每个二级任务执行单元对应执行一个阶段任务,多个二级任务执行单元之间通过链式传递触发下一阶段任务的执行。

不同一级任务执行单元对应的任务队列中的二级任务执行单元的数量可以相等或不等,取决于一级任务执行单元接受的子任务被执行时所需的逻辑步骤。

本实施例中,任务创建单元将应用创建任务拆分为多个独立的子任务并进行集中发布/推送,每个子任务具有唯一id,委派各个一级任务执行单元处理各自的子任务;一级任务执行单元通过接口注册的方式对任务创建单元发布的子任务进行监听,各个一级任务执行单元互相之间保持独立,共同协作完成委派的任务;任务创建单元可以控制多个一级任务执行单元通过串行或并行方式执行各自对应的子任务。

每个一级任务执行单元具有一个由多个二级任务执行单元组成的任务队列,一级任务执行单元将其接受的子任务拆分为多个阶段任务;其中,阶段任务在业务逻辑上紧密相关,需要按照子任务的执行逻辑依次被对应的二级任务执行单元执行;参照图1,一级任务执行单元将其子任务拆分为多个阶段任务并将多个阶段任务发送给与其直接耦合的第一个二级任务执行单元,第一个二级任务执行单元执行第一个阶段任务并在执行完成后将剩余的阶段任务发送给第二个二级任务执行单元,第二个二级任务执行单元执行第二个阶段任务并在执行完成后将剩余的阶段任务发送给第三个二级任务执行单元,按照此过程,直至将所有的阶段任务分发完毕;多个二级任务执行单元之间通过链式传递触发下一阶段任务的执行,多个阶段任务被异步处理和执行。

当接收到客户端发送的应用扩展请求时,任务创建单元根据该应用扩展请求创建一个或多个一级任务执行单元,并将待扩展应用作为子任务下发给新建的一级任务执行单元;创建新的一级任务执行单元仅需注册上述行为接口即可,扩展能力强,用户可在应用开发或后期运维过程中根据自身需求进行业务扩展,无需更改现有的流水线架构,大大减小了应用扩展的工作量。

当接收到客户端发送的子任务扩展请求时,任务创建单元根据该子任务扩展请求将待扩展子任务下发给对应的一级任务执行单元;该一级任务执行单元在任务队列中插入一个或多个二级任务执行单元,并将该待扩展子任务作为阶段任务下发给新建的二级任务执行单元。其中,创建新的二级任务执行单元同样仅需注册行为接口即可,任务队列支持插入、删除操作,定制化能力强,支持用户根据自身的业务特色在现有的流水线架构中扩展自身的特色应用,无需更改现有的流水线架构,大大减小了业务扩展的工作量。

任务创建单元、一级任务执行单元、二级任务执行单元之间均通过注册行为接口实现任务的下发和执行,其中,一级任务执行单元注册的行为接口包括第一执行接口;任务创建单元和各一级任务执行单元之间通过第一执行接口进行耦合,任务创建单元基于多线程的方式通过该第一执行接口调用一级任务执行单元以使其执行子任务;

二级任务执行单元注册的行为接口包括第二执行接口和撤回接口;一级任务执行单元与二级任务执行单元之间、相邻的二级任务执行单元之间通过第二执行接口进行耦合,一级任务执行单元通过该第二执行接口调用与其直接耦合的二级任务执行单元以使其执行阶段任务,相邻的二级任务执行单元之间通过第二执行接口触发下一阶段任务的执行。

当任一子任务执行过程中出现错误时,与该子任务对应的一级任务执行单元根据任务队列中二级任务执行单元的耦合顺序逆向撤回各阶段任务,阶段任务的撤回基于上述撤回接口实现;阶段任务撤回过程中,各二级任务执行单元之间通过链式传递触发上一阶段任务的回滚。

本实施例中,通过任务创建单元的集中式事件委派实现任务的统一下发和回滚,每个一级任务执行单元通过任务队列定制自己的子流程,一级任务执行单元之间各自独立接收任务创建单元广播的子任务并进行处理;任务创建单元支持pre-receive(前置)、do(过程)、post-receive(事后)多切面hook事件注册,扩展能力强;一级任务执行单元对应的任务队列支持插入、移除操作,用户可根据自身的业务特色在现有的任务队列中插入二级任务执行单元来扩展自身的特色应用,定制化能力强。本实施例实现了流水线各环节的可并行、可串行化控制,一方面保证了流水线环节间依赖的可控性,另一方面提高了产品的并发性能。

下面通过一个具体的应用创建案例对本申请提供的具有开放式流水线架构的应用创建系统进行说明;图2是本实施例提供的应用创建过程的任务分接及下发的拓扑图,如图2所示,当客户端发起创建应用的请求时,任务创建单元将待创建应用分解为“a-创建仓库”、“b-创建自动化任务”、“c-创建部署环境”等多个独立的子任务,并分别将各子任务下发给一级任务执行单元,使每个一级任务执行单元对应执行一个子任务;以子任务“a-创建仓库”为例进行说明,一级任务执行单元将子任务“a-创建仓库”细分为多个业务关联性强的分步功能,如:“a.1-创建代码库”、“a.2-预制基础代码”、“a.3-注册切面函数”等;

在应对客户提出的扩展应用的需求时,例如:客户提出要求使用在线ide进行开发,则任务创建单元将扩展应用“d-ide环境准备”注册为该任务创建单元委派的一个子任务即可;在应对客户提出的扩展任一子任务的需求时,例如:客户提出要求创建应用后将任务下发并通知给对应的组员时,则插入步骤“a.4-开发任务分配”,任务创建单元首先将待扩展子任务“a.4-开发任务分配”下发给对应的一级任务执行单元;该一级任务执行单元在任务队列中插入步骤“a.4-开发任务分配”即可。

本发明提供的一种具有开放式流水线架构的应用创建系统,通过任务创建单元的集中式事件委派实现任务的统一下发和回滚,每个一级任务执行单元通过任务队列定制自己的子流程,一级任务执行单元之间各自独立接收任务创建单元广播的子任务并进行处理;一级任务执行单元对应的任务队列支持插入、移除操作,用户可根据自身的业务特色在现有的任务队列中插入二级任务执行单元来扩展自身的特色应用,定制化能力强。子任务的并发能力可通过增加一级任务执行单元进行分布式方式水平扩展,子任务的业务逻辑性可通过插入二级任务执行单元进行纵向伸缩,扩展性好,便于后期维护,有利于降低维护成本。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1