一种创建微服务的方法及相关设备技术

技术编号:38575924 阅读:11 留言:0更新日期:2023-08-26 23:23
本申请提供了一种创建微服务的方法,包括:向用户呈现配置界面,接收用户通过配置界面配置的微服务的业务模型,该业务模型包括多个业务对象的元数据和用于标识多个业务对象之间关系的关系对象的元数据,根据微服务的业务模型,生成微服务的代码。该方法基于领域驱动设计的理念,根据用户定义的业务模型,具体是业务模型中业务对象的元数据以及标识业务对象的关系对象的元数据生成微服务的代码,解决了代码生成工具或开发平台内置的功能模块生成特定层的简单代码的问题,提高了开发效率。该方法支持用户灵活定义业务模型,具有较好的扩展能力,能够完成微服务开发的全链路打通。通。通。

【技术实现步骤摘要】
一种创建微服务的方法及相关设备
[0001]本申请要求于2022年02月14日提交中国国家知识产权局、申请号为202210134482.4、专利技术名称为“创建微服务的方法、装置、服务器及存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。


[0002]本申请涉及软件开发
,尤其涉及一种创建微服务的方法、系统以及计算设备集群、计算机可读存储介质、计算机程序产品。

技术介绍

[0003]随着用户对软件系统的要求不断提高,业界提出了一种微服务设计理念用于开发软件系统,从而满足用户日益增加的需求。微服务设计是指将单体应用程序(如中大型软件系统)按功能或者业务需求垂直拆分成多个独立的微服务,该微服务也称作子系统,这些子系统以独立部署的进程存在,进程之间通过轻量级、跨语言的同步或异步网络调用进行通信。当用户提出新的需求时,可以增加新的子系统或修改子系统,从而满足上述新的需求,如此降低了大型复杂软件系统版本迭代的难度,且易于维护。
[0004]微服务的开发涉及众多系统性的、重复的代码开发工作,从节省微服务开发工作、提高代码规范性角度出发,开发者通常可以采用代码生成工具或基于开发平台内置的功能模块生成微服务的部分代码。例如,开发者可以使用Mybatis生成器(Mybatis Generator, MBG)生成数据操作层的代码。又例如,开发者可以使用JHipster开发平台内置的功能模块生成框架代码。
[0005]然而,已有的代码生成工具或开发平台内置的功能模块生成的代码通常是微服务的特定层的简单代码,微服务开发的灵活性较低,而且仍然需要开发者花费大量的时间和精力开发其他层的代码,影响了微服务的开发效率。

技术实现思路

[0006]本申请提供了一种创建微服务的方法,该方法基于领域驱动设计的理念,根据用户定义的业务模型,具体是业务模型中业务对象的元数据以及标识业务对象的关系对象的元数据生成微服务的代码,解决了代码生成工具或开发平台内置的功能模块生成特定层的简单代码的问题,提高了开发效率。本申请还提供了上述方法对应的代码管理系统、计算设备集群、计算机可读存储介质以及计算机程序产品。
[0007]第一方面,本申请提供了一种创建微服务的方法。该方法可以由代码管理系统执行。代码管理系统可以是软件系统,该软件系统可以部署在计算设备集群中,计算设备集群通过执行软件系统对应的程序代码,从而执行本申请实施例的创建微服务的方法。在一些实施例中,代码管理系统也可以是具有创建微服务功能的硬件系统,例如代码管理系统可以是具有创建微服务功能的计算设备集群。
[0008]具体地,代码管理系统可以向用户呈现配置界面,接收用户通过所述配置界面配
置的所述微服务的业务模型,其中,业务模型包括多个业务对象的元数据和用于标识所述多个业务对象之间关系的关系对象的元数据,然后代码管理系统根据所述微服务的业务模型,生成所述微服务的代码。
[0009]该方法中,代码管理系统基于领域驱动设计的理念,根据用户定义的业务模型,具体是业务模型中业务对象的元数据以及标识业务对象的关系对象的元数据生成微服务的代码,解决了代码生成工具或开发平台内置的功能模块生成特定层的简单代码的问题,提高了开发效率。
[0010]而且,该方法支持用户灵活定义业务模型,具有较好的扩展能力,能够完成微服务开发的全链路打通,解决微服务开发早期大量的框架性开发工作,及云服务对接、部署系统对接、中间件支持、高性能高可靠场景架构设计等,为开发者提供成熟的产品级解决方案。
[0011]在一些可能的实现方式中,代码管理系统可以根据所述微服务的业务模型,生成基础模块代码和扩展模块代码。所述基础模块代码不支持所述用户修改,所述扩展模块代码支持所述用户修改,所述基础模块代码与所述扩展模块代码分离。
[0012]该方法通过将微服务的代码分为不支持用户修改的基础模块代码和支持用户修改的扩展模块代码,一方面可以实现基础模块代码重复生成,减少重复开发,提高开发效率,另一方面可以基于扩展模块代码实现定制化开发,满足个性化的需求。
[0013]在一些可能的实现方式中,所述微服务的代码包括控制器层代码、业务逻辑层代码、数据聚合层代码、数据持久操作层代码和数据库实体层代码中的至少一种。如此解决了代码生成工具或开发平台内置的功能模块生成特定层的简单代码的问题,提高了开发效率。
[0014]在一些可能的实现方式中,代码管理系统可以根据所述业务对象的元数据或所述关系对象的元数据,生成所述微服务的数据持久操作层代码,所述微服务的数据持久操作层代码包括接口代码和查询资源代码。
[0015]其中,接口代码可以是应用程序编程接口API的代码,查询资源代码可以是mapper 资源的代码,代码管理系统自动生成上述代码可以实现通过API进行数据持久化。
[0016]在一些可能的实现方式中,所述多个业务对象的关系包括:一对多关系、多对多关系、递归关系或聚合关系中的一种或多种。该方法中,代码管理系统通过提供多种关系,以供用户对多个业务对象的关系进行定义,能够满足不同业务场景下生成相应的微服务的代码的需求。
[0017]在一些可能的实现方式中,多个业务对象包括第一业务对象和第二业务对象,所述第一业务对象和所述第二业务对象的关系为所述聚合关系。进一步地,代码管理系统还可以将所述第一业务对象和所述第二业务对象聚合得到数据传输对象,然后代码管理系统为所述数据传输对象生成查询资源代码。
[0018]如此可以满足具有复杂关系的业务对象的微服务的代码生成需求,实现自动化地创建微服务,提高微服务开发效率。
[0019]在一些可能的实现方式中,代码管理系统可以通过多种方式对业务对象进行聚合。具体地,代码管理系统可以采用嵌套模式或笛卡尔积模式,聚合所述第一业务对象和所述第二业务对象得到所述数据传输对象。
[0020]嵌套模式是指以其中一个业务对象为基准,将另一个与之相关的业务对象列表组
织到一起形成一个聚合对象。笛卡尔积模式是指将待聚合的业务对象的属性聚合到一起形成一个聚合对象。该聚合对象包括具有聚合关系的业务对象的所有属性,并且这些属性分别以业务对象的名称作为属性前缀。
[0021]该方法通过聚合业务对象为数据传输对象,基于数据传输对象生成查询资源代码,以便后续提供查询服务。需要说明的是,根据聚合模式不同,代码管理系统可以生成不同的查询方法。不同的查询方法可以通过相应的数据传输对象mapper文件进行持久化存储。
[0022]在一些可能的实现方式中,所述业务模型还包括扩展的应用程序接口API的元数据。代码管理系统还可以根据所述扩展的API的元数据生成所述扩展的API的代码。如此,可以将该微服务或微服务的某些功能通过API提供给其他服务使用,具有较高可用性。
[0023]在一些可能的实现方式中,代码管理系统可以接收用户通过所述配置界面配置的代码生成策略。相应地,代码管理系统可以根据所述微服务的业务模型,按照所述代码本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种创建微服务的方法,其特征在于,所述方法包括:向用户呈现配置界面;接收用户通过所述配置界面配置的所述微服务的业务模型,所述业务模型包括多个业务对象的元数据和用于标识所述多个业务对象之间关系的关系对象的元数据;根据所述微服务的业务模型,生成所述微服务的代码。2.根据权利要求1所述的方法,其特征在于,所述根据所述微服务的业务模型,生成所述微服务的代码,包括:根据所述微服务的业务模型生成基础模块代码和扩展模块代码,所述基础模块代码不支持所述用户修改,所述扩展模块代码支持所述用户修改,所述基础模块代码与所述扩展模块代码分离。3.根据权利要求1或2所述的方法,其特征在于,所述微服务的代码包括控制器层代码、业务逻辑层代码、数据聚合层代码、数据持久操作层代码和数据库实体层代码中的至少一种。4.根据权利要求3所述的方法,其特征在于,所述根据所述微服务的业务模型,生成所述微服务的代码,包括:根据所述业务对象的元数据或所述关系对象的元数据,生成所述微服务的数据持久操作层代码,所述微服务的数据持久操作层代码包括接口代码和查询资源代码。5.根据权利要求1至4任一项所述的方法,其特征在于,所述多个业务对象的关系包括:一对多关系、多对多关系、递归关系或聚合关系中的一种或多种。6.根据权利要求5所述的方法,其特征在于,所述多个业务对象包括第一业务对象和第二业务对象,所述第一业务对象和所述第二业务对象的关系为所述聚合关系,所述方法还包括:将所述第一业务对象和所述第二业务对象聚合得到数据传输对象;为所述数据传输对象生成查询资源代码。7.根据权利要求6所述的方法,其特征在于,所述将所述第一业务对象和所述第二业务对象聚合得到数据传输对象,包括:采用嵌套模式或笛卡尔积模式,聚合所述第一业务对象和所述第二业务对象得到所述数据传输对象。8.根据权利要求4、6或7所述的方法,其特征在于,所述业务模型还包括扩展的应用程序接口API的元数据,所述方法还包括:根据所述扩展的API的元数据生成所述扩展的API的代码。9.根据权利要求1至8任一项所述的方法,其特征在于,所述方法还包括:接收用户通过所述配置界面配置的代码生成策略;所述根据所述微服务的业务模型,生成所述微服务的代码,包括:根据所述微服务的业务模型,按照所述代码生成策略,生成所述微服务的代码。10.根据权利要求9所述的方法,其特征在于,所述代码生成策略包括新建或继承。11.根据权利要求1至8任一项所述的方法,其特征在于,所述方法还包括:接收用户通过所述配置界面配置的组件扩展策略;所述根据所述微服务的业务模型,生成所述微服务的代码,包括:
根据所述微服务的业务模型,按照所述组件扩展策略,生成所述微服务的扩展组件的代码。12.根据权利要求11所述的方法,其特征在于,所述扩展组件包括鉴权组件、校验组件、探针组件、标注式配置组件中的一种或多种。13.根据权利要求1至12任一项所述的方法,其特征在于,所述方法还包括:创建数据库模型,所述数据库模型包括根表对象和分库分表对象。14.根据权利要求1至13任一项所述的方法,其特征在于,所述微服务的代码包括多层代码,所述方法还包括:生成所述微服务的代码目录,所述代码目录包括多个子目录,所述多个子目录与所述多层代码一一对应。15.一种代码管理系统,其特征在于,所述系统包括:交互模块,用于向用户呈现配置界面;通信模块,用于接收用户通过所述配置界面配置的所述微服务的业务模型,所述业务模型包括多个业务对象的元数据和用于标识所述多个业务对象之间关系的关系对象的元数据;生成模块,用于根据所述微服务...

【专利技术属性】
技术研发人员:肖伟民王彧祝君张春鹤
申请(专利权)人:华为云计算技术有限公司
类型:发明
国别省市:

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

1