基于微服务的部署交付件的生成方法及装置、存储介质制造方法及图纸

技术编号:18256230 阅读:33 留言:0更新日期:2018-06-20 08:06
本申请提供一种基于微服务的部署交付件的生成方法及装置、存储介质,该方法可以包括:根据预定义的业务需求拆分服务得到若干模块,每个模块提供至少一个服务;针对每个模块编译独立的实现包,并发布至实现包集合中;当有实际业务需求时,从所述实现包集合中获取所述实际业务需求包含的各个模块对应的实现包;将获取到的实现包聚合成部署包,以生成对应于所述实际业务需求的部署交付件。通过本申请的技术方案,可以在服务拆分的粒度不受限制的情况下,按业务需求自由聚合出指定数量的部署交付件。同时,可以在不同的业务场景下复用同一模块的实现包。

Generation method and device, storage medium of deployment delivery unit based on micro service

The present application provides a generation method and a device and a storage medium based on a microservice deployment deliverable. The method can include: a number of modules, each module provides at least one service according to the predefined service requirement split service; a separate implementation package is compiled for each module and published to the implementation package set. When there is a practical business requirement, the implementation package corresponding to the various modules contained in the actual business requirements is obtained from the set of implementation packages; the achieved implementation package is gathered to produce a composite deployment package to generate the deployment deliverables corresponding to the actual business requirements. Through the technical scheme of this application, a specified number of deployment deliverables can be freely aggregated according to the business requirements without the limited granularity of the service separation. At the same time, the implementation package of the same module can be reused under different business scenarios.

【技术实现步骤摘要】
基于微服务的部署交付件的生成方法及装置、存储介质
本申请涉及微服务系统
,尤其涉及一种基于微服务的部署交付件的生成方法及装置、存储介质。
技术介绍
在构建微服务系统时,服务拆分是设计阶段重要的部分。在开发阶段,可以按功能来拆分服务至相应的模块(每个模块提供特定的服务),并由开发人员编译出各个模块的部署包。服务拆分的粒度越细,每个模块实现的功能就越简单,从而使得开发的复杂程度越低,可以充分体现微服务开发的优势。而在部署运维阶段,将部署包作为部署交付件进行部署和运维。当服务拆分的粒度较细时,大量的部署交付件将导致部署和运维的难度较大。因此,从部署运维的角度来看,应尽量减少部署交付件的数量。综上,服务拆分面临着一个矛盾:开发时服务拆分的粒度越细越好;而在部署运维时部署交付件的数量越少越好。在相关技术中,为了降低部署运维的压力,通过平衡拆分和交付的利弊,将服务拆分的粒度控制在一定的合理范围内。然而,对服务拆分粒度的妥协提高了开发的复杂程度,导致并不能发挥出微服务系统在开发过程中的优势,降低了开发效率。同时,服务之间的组合不够灵活自由,难以在不同的业务场景下复用基础模块代码。
技术实现思路
有鉴于此,本申请提供一种基于微服务的部署交付件的生成方法及装置、计算机可读存储介质,可以在服务拆分的粒度不受限制的情况下,按业务需求自由聚合出指定数量的部署交付件。为实现上述目的,本申请提供技术方案如下:根据本申请的第一方面,提出了一种基于微服务的部署交付件的生成方法,包括:根据预定义的业务需求拆分服务得到若干模块,每个模块提供至少一个服务;针对每个模块编译独立的实现包,并发布至实现包集合中;当有实际业务需求时,从所述实现包集合中获取所述实际业务需求包含的各个模块对应的实现包;将获取到的实现包聚合成部署包,以生成对应于所述实际业务需求的部署交付件。根据本申请的第二方面,提出了一种基于微服务的部署交付件的生成装置,包括:拆分单元,根据预定义的业务需求拆分服务得到若干模块,每个模块提供至少一个服务;编译单元,针对每个模块编译独立的实现包,并发布至实现包集合中;获取单元,当有实际业务需求时,从所述实现包集合中获取所述实际业务需求包含的各个模块对应的实现包;聚合单元,将获取到的实现包聚合成部署包,以生成对应于所述实际业务需求的部署交付件。根据本申请的第三方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述技术方案中任一项所述方法的步骤。由以上技术方案可见,本申请通过将开发层和交付层分离,在开发时服务拆分的粒度不受限制,可以在开发层根据预定义的业务需求拆分服务至相应的模块并编译各个模块的实现包,各个实现包之间相互独立,降低了开发难度。在交付时,可以在交付层按照实际业务需求将所需的模块对应的实现包聚合成部署包,以用于生成该业务的部署交付件,实现对实现包的自由组合和按需引用,提升了生成部署交付件的效率。同时,可以在不同的业务场景下复用同一模块的实现包。附图说明图1是本申请一示例性实施例示出的一种基于微服务的部署交付件的生成方法的流程图。图2是本申请一示例性实施例示出的另一种基于微服务的部署交付件的生成方法的流程图。图3是本申请一示例性实施例示出的聚合实现包的示意图。图4是本申请一示例性实施例示出的一种电子设备的结构示意图。图5是本申请一示例性实施例示出的一种基于微服务的部署交付件的生成装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在构建微服务系统时,服务拆分是设计阶段重要的部分。在开发阶段,可以按功能来拆分服务至相应的模块,并由开发人员编译出各个模块的部署包。服务拆分的粒度越细,每个模块实现的功能就越简单。一方面,每个模块独立维护代码,开发人员无需关心整体架构,只需要关心每个模块提供的服务接口,从而更有利于控制质量和进度,加快开发的速度。另一方面,模块拆分得越细,其代码权限控制的粒度也越细,可以更好地利用微服务开发的优势。而在部署运维阶段,将部署包作为部署交付件进行部署和运维。当服务拆分的粒度较细时,微服务系统的运维成本与部署交付件的数量呈正相关,大量的部署交付件将导致部署和运维的难度较大。一方面,大规模部署交付件的系统对配置管理、日志管理、监控与故障报警等技术手段有较高的依赖。另一方面,服务间的依赖管理与版本控制、大量部署交付件的版本管理与持续交付都存在较大挑战。因此,从部署运维的角度来看,应尽量减少部署交付件的数量。综上,服务拆分面临着一个矛盾:开发时服务拆分的粒度越细越好;而在部署运维时部署交付件的数量越少越好。在相关技术中,采取“折中”的妥协方式,将服务拆分的粒度控制在一定的合理范围内,以此降低部署运维的压力。然而,对服务拆分粒度的妥协提高了开发的复杂程度,导致并不能发挥出微服务系统在开发过程中的优势,降低了开发效率。同时,服务之间的组合不够灵活自由,难以在不同的业务场景下复用基础模块代码。因此,本申请通过对生成部署交付件的方式予以改进,以解决相关技术中存在的上述技术问题,可以在服务拆分的粒度不受限制的情况下,按业务需求自由聚合出指定数量的部署交付件。下面结合实施例进行详细说明。图1是本申请一示例性实施例示出的一种基于微服务的部署交付件的生成方法的流程图。如图1所示,该方法应用于开发人员侧的客户端,可以包括以下步骤:步骤102,根据预定义的业务需求拆分服务得到若干模块,每个模块提供至少一个服务。步骤104,针对每个模块编译独立的实现包,并发布至实现包集合中。步骤106,当有实际业务需求时,从所述实现包集合中获取所述实际业务需求包含的各个模块对应的实现包。步骤108,将获取到的实现包聚合成部署包,以生成对应于所述实际业务需求的部署交付件。在本实施例中,将开发层和交付层分离,预先在开发层上按照预定义的业务需求(服务拆分的粒度不受限制)拆分服务至各个模块并编译出相应的实现包;而在交付层上,不使用开发层编译出的部署包(由实现包与所依赖的运行库打包生成,用于运行测试),而是将待聚合业务(即对应于实际业务需求的业务)包含的各个模块对应的实现包进行聚合得到该业务对应的部署包,以用于生成实际业务需求对应的部署交付件。通过本文档来自技高网...
基于微服务的部署交付件的生成方法及装置、存储介质

【技术保护点】
1.一种基于微服务的部署交付件的生成方法,其特征在于,包括:根据预定义的业务需求拆分服务得到若干模块,每个模块提供至少一个服务;针对每个模块编译独立的实现包,并发布至实现包集合中;当有实际业务需求时,从所述实现包集合中获取所述实际业务需求包含的各个模块对应的实现包;将获取到的实现包聚合成部署包,以生成对应于所述实际业务需求的部署交付件。

【技术特征摘要】
1.一种基于微服务的部署交付件的生成方法,其特征在于,包括:根据预定义的业务需求拆分服务得到若干模块,每个模块提供至少一个服务;针对每个模块编译独立的实现包,并发布至实现包集合中;当有实际业务需求时,从所述实现包集合中获取所述实际业务需求包含的各个模块对应的实现包;将获取到的实现包聚合成部署包,以生成对应于所述实际业务需求的部署交付件。2.根据权利要求1所述的方法,其特征在于,所述实现包集合中的实现包被发布至本地私有仓库中。3.根据权利要求1所述的方法,其特征在于,针对每一模块配置有相应的数据库,数据库用于相应的模块读写相关数据,由代理类配置各模块的包名与数据库的对应关系;所述方法还包括:当任一业务发起数据库操作时,确定所述任一业务包含的各个模块的包名;根据确定出的包名和所述对应关系确定相应的数据库;对确定出的数据库进行数据访问。4.根据权利要求1所述的方法,其特征在于,不同的模块所依赖的相同第三方数据包的版本相同;所有第三方数据包的统一版本由顶层数据包来声明;通过以下方式描述任一模块依赖的第三方数据包的版本:声明采用的顶层数据包的版本,以及所述任一模块所依赖的数据包。5.根据权利要求1所述的方法,其特征在于,还包括:在执行聚合操作之前,确定对应于所述实际业务需求的业务调用来自内部模块的内部调用服务,以及调用来自外部模块的外部调用服务;其中,在所述部署交付件运行时,所述内部调用服务被采取本地调用流程调用,所述外部调用服务被采取远程调用流程调用。6.根据权利要求5所述的方法,其特征在于,所述确定对应于所述实际业务需求的业务调用来自内部模块的内部调用服务,以及调用来自外部模块的外部调用服务,包括:合并各个模块的提供服务子列表以生成聚合后的提供服务列表,提供服务子列表用于记录相应的模块提供的服务,所述提供服务列表用于记录所述待聚合业务提供的服务;合并各个模块的调用服务子列表以生成聚合后的调用服务列表,调用服务子列表用于记录相应的模块调用的服务,所述调用服务列表用于记录所述待聚合业务调用的服务;确定所述提供服务列表与所述调用服务列表中相同的重复服务,并将所述重复服务作为所述内部调用服务,以及将所述调用服务列表中区别于所述重复服务的其他服务作为所述外部调用服务。7.一种基于微服务的部署交付件的生成装置,其特征在于,包括:拆分单元,...

【专利技术属性】
技术研发人员:陈军罗国兵张红
申请(专利权)人:杭州数梦工场科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1