CN113342379B - 微服务升级方法、装置、电子设备及存储介质 - Google Patents
微服务升级方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113342379B CN113342379B CN202110719438.5A CN202110719438A CN113342379B CN 113342379 B CN113342379 B CN 113342379B CN 202110719438 A CN202110719438 A CN 202110719438A CN 113342379 B CN113342379 B CN 113342379B
- Authority
- CN
- China
- Prior art keywords
- package
- operation package
- upgrade
- service
- upgrading
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本发明涉及软件开发领域,揭露了一种微服务升级方法,包括:对应用程序的软件运行包进行服务解析,生成多个服务运行包;响应于应用程序中至少一个微服务的升级请求,从多个服务运行包中匹配升级请求的服务运行包,对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;识别升级运行包和未升级运行包是否具有依赖关系,根据识别的结果,生成升级服务运行包;通过发布机器将升级服务运行包发布至应用程序的运行环境中运行,得到升级服务运行包对应微服务的升级结果。此外,本发明还涉及区块链技术,所述升级运行包可存储于区块链中。本发明可以提高微服务升级的稳定性。
Description
技术领域
本发明涉及软件开发领域,尤其涉及一种微服务升级方法、装置、电子设备及计算机可读存储介质。
背景技术
微服务是指一种体系结构样式,将单个应用程序划分为较小的服务单元,通过微服务可以使得应用程序中所有应用服务进行快速响应。在微服务构建的过程中,通常是基于JAVA语言开发的软件包实现,而JAVA语言开发的软件包通常会依赖其他同样使用JAVA语言开发的软件包,以提高微服务的构建速度。
随着应用程序的版本更新替代,微服务的升级显得愈发重要,目前,微服务升级通常是对微服务中的软件包进行升级,即将需要升级的微服务中软件包升级文件单独存放为一个版本文件,然后与不需要升级的微服务中软件包一起打包成一个总版本文件发布进行升级,但是由于在应用程序中微服务之间会存在关联的现象,若是直接将升级的微服务中软件包与不升级的微服务中软件包一起打包成一个总版本文件进行发布,容易造成升级的软件包只适用于某个微服务,不适用于其它关联微服务的问题,从而会影响微服务的稳定性。
发明内容
本发明提供一种微服务升级方法、装置、电子设备及计算机可读存储介质,其主要目的在于提高微服务升级的稳定性。
为实现上述目的,本发明提供的一种微服务升级方法,包括:
获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
识别所述升级运行包和所述未升级运行包是否具有依赖关系;
若所述升级运行包和所述未升级运行包不具有依赖关系,则直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包;
若所述升级运行包和所述未升级运行包具有依赖关系,则根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
可选地,所述对所述软件运行包进行服务解析,生成多个服务运行包,包括:
获取所述软件运行包的编译环境,根据所述编译环境,查找所述软件运行包的编译运行包及依赖运行包;
根据所述编译运行包及依赖运行包,识别所述软件运行包中所有的服务单元,并查询每个所述服务单元的运行包,得到多个服务运行包。
可选地,所述响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,包括:
获取所述升级请求的请求字段及每个所述服务运行包的服务字段,计算所述请求字段和每个所述服务字段的距离度量值;
若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包不匹配;
若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包匹配。
可选地,所述响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,包括:
获取所述升级请求的请求字段及每个所述服务运行包的服务字段,计算所述请求字段和每个所述服务字段的距离度量值;
若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包不匹配;
若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包匹配。
可选地,所述识别所述升级运行包和所述未升级运行包是否具有依赖关系,包括:
识别所述升级运行包和所述未升级运行包是否关联,及所述升级运行包和所述未升级运行包是否具有版本差异;
若所述升级运行包和所述未升级运行包不关联且不具有版本差异,则所述升级运行包和所述未升级运行包不具有依赖关系;
若所述升级运行包和所述未升级运行包关联和/或具有版本差异,则所述升级运行包和所述未升级运行包具有依赖关系。
可选地,所述直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包,包括:
识别所述升级运行包和未升级运行包的文件长度;
根据所述升级运行包和未升级运行包的文件长度,配置所述升级运行包和未升级运行包的代码打包点;
根据所述代码打包点,利用预设的代码打包工具对所述升级运行包和未升级运行包进行文件打包,生成升级服务运行包。
可选地,所述识别所述升级运行包和未升级运行包的文件长度,包括:
获取所述升级运行包和未升级运行包的代码行、代码参数以及配置文件;
根据所述代码行、代码参数以及配置文件,计算所述升级运行包和未升级运行包的代码运行值;
根据所述代码运行值,识别所述升级运行包和未升级运行包的存储空间,得到所述升级运行包和未升级运行包的文件长度。
为了解决上述问题,本发明还提供一种微服务升级装置,所述装置包括:
服务解析模块,用于获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
运行包升级模块,用于响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
依赖关系识别模块,用于识别所述升级运行包和所述未升级运行包是否具有依赖关系;
运行包打包模块,用于在所述升级运行包和所述未升级运行包不具有依赖关系时,直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包;
所述运行包打包模块,还用于在所述升级运行包和所述未升级运行包具有依赖关系时,根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
微服务升级模块,用于通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以实现上述所述的微服务升级方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的微服务升级方法。
本发明实施例首先对应用程序的软件运行包进行功能解析,生成多个服务运行包,并结合响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包,可以实现所述应用程序中需要升级的微服务与不需要升级的微服务进行服务运行包拆分,从而方便后续服务运行包之间依赖关系的查询;其次,本发明实施例根据所述升级运行包和所述未升级运行包是否具有依赖关系,将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包,可以对应用程序中存在依赖关系的微服务进行配置,避免升级运行包适用于某个微服务,不适用于其它关联微服务的问题,保障生成的升级服务运行包可以正常加载运行,提高微服务升级的稳定性;进一步地,本发明实施例通过发布机器将所述升级服务运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果,以实现升级服务运行包的微服务版本升级,满足业务需求。因此,本发明提出的一种微服务升级方法、装置、电子设备以及计算机可读存储介质可以提高微服务升级的稳定性。
附图说明
图1为本发明一实施例提供的微服务升级方法的流程示意图;
图2为本发明一实施例中图1提供的业务审批方法中其中一个步骤的详细流程示意图;
图3为本发明一实施例提供的微服务升级装置的模块示意图;
图4为本发明一实施例提供的实现微服务升级方法的电子设备的内部结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种微服务升级方法。所述微服务升级方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述微服务升级方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。
参照图1所示,为本发明一实施例提供的微服务升级方法的流程示意图。在本发明实施例中,所述微服务升级方法包括:
S1、获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包。
本发明实施例中,所述应用程序基于不同业务场景产生,如商城订单程序、聊天应用程序以及游戏应用程序,所述软件运行包包括jar包,所述jar包又称为JAR文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库,基于所述软件运行包,可以实现所述应用程序的加载运行。
应该了解,在所述应用程序中会存在多个服务单元,每个服务单元对应一个服务功能,如商城订单程序存在订单查询服务单元、商品搜索服务单元以及商品上下架服务单元等,则所述订单查询服务单元、商品搜索服务单元以及商品上下架服务单元可以分别对应订单查询功能、商品搜索功能以及商品上下架功能,因此,本发明实施例通过对所述软件运行包进行服务解析,以识别出所述应用程序中的服务单元,从而可以为后续应用程序中微服务升级提供保障。
作为本发明的一个实施例,所述对所述软件运行包进行服务解析,生成多个服务运行包,包括:获取所述软件运行包的编译环境,根据所述编译环境,查找所述软件运行包的编译运行包及依赖运行包,根据所述编译运行包及依赖运行包,识别所述软件运行包中所有的服务单元,并查询每个所述服务单元的运行包,得到多个服务运行包。
其中,所述编译环境是指所述软件运行包中源代码的编辑环境,如Java、Java EE以及移动应用的MyEclipse开发环境,所述编译运行包是指在创建所述应用程序中未从其它相同应用程序拉取的代码运行包,所述依赖运行包是指在创建所述应用程序中未从其它相同应用程序拉取的开源运行包,所述服务单元是指所述软件运行包中提供的服务模块,用于响应于不同用户请求。
一个可选实施例中,所述根据所述编译环境,查找所述软件运行包的编译运行包及依赖运行包,包括:根据所述编译环境,查询所述软件运行包的源代码,若所述源代码的代码来源为本地编译,则确定该源代码的数据包为编译运行包,若所述源代码的代码来源不为本地编译,则确定该源代码的数据包为依赖运行包。
一个可选实施例中,所述根据所述编译运行包及依赖运行包,识别所述软件运行包中所有的服务单元,包括:识别所述编译运行包及依赖运行包的服务功能,根据所述服务功能,确定所述软件运行包中所有的服务单元。
S2、响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包。
应该了解,为满足业务场景的不断变化和用户需求的不断更改,或修改应用程序在创建时存在的应用漏洞,需要对应用程序进行版本升级,即对应用程序的微服务进行版本升级,如游戏应用程序经常会存在bug现象(如画面卡顿、人物瞬移),为了使得游戏应用程序能正常加载运行,提高玩家体验度,需要对游戏应用程序的bug进行修复,如修复画面卡顿、人物瞬移的bug。需要说明的是,在一个应用程序升级过程中,会存在多个微服务的升级维护,因此,本发明实施例通过响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,以保障后续微服务的正常运行,实现应用程序的升级。其中,所述微服务是指一种体系结构样式,将单个应用程序划分为较小的服务单元,其通过上述服务运行包加载运行。
作为本发明的一个实施例,所述响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,包括:获取所述升级请求的请求字段及每个所述服务运行包的服务字段,计算所述请求字段和每个所述服务字段的距离度量值,若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包不匹配,若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包匹配。
其中,所述请求字段和服务字段分别用于表征所述升级请求和服务运行包的信息类型,进一步可以理解为所述升级请求和服务运行包的身份标识(ID)。
一个可选实施例中,利用下述公式计算所述请求字段和每个所述服务字段的距离度量值:
其中,sim(X,Y)表示距离度量值,X表示请求字段的md5值,Y表示服务字段的md5值,Xi、Yi分别表示请求字段与服务字段中第i位的md5值。
进一步地,在本发明又一可选实施例中,所述预设条件可以设置为所述距离度量值是否为1,若所述距离度量值为1,则表示所述升级请求与对应服务运行包匹配,若所述距离度量值不为1,则表示所述升级请求与对应服务运行包不匹配。
进一步地,本发明实施例对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包,以将所述应用程序中升级的微服务和未升级的微服务进行区分,方便查询后续升级的微服务和未升级的微服务的依存关系,从而可以提高后续微服务的升级速度。
作为本发明的一个实施例,所述对匹配成功的服务运行包进行版本升级,得到升级运行包,包括:获取匹配成功的服务运行包的服务源代码及版本升级需求,根据所述版本升级需求,对所述服务源代码进行更新,得到更新源代码,根据所述更新源代码,生成升级运行包。
进一步地,为保障所述升级运行包的隐私性和复用性,所述升级运行包还可存储于一区块链节点中。
S3、识别所述升级运行包和所述未升级运行包是否具有依赖关系。
应该了解,在应用程序运行过程,微服务之间会存在一定的依赖关系的情况,如对于商城订单程序,商品订单物流微服务会依赖于商品下单微服务,而所述应用程序的微服务通过服务运行包加载运行,因此,本发明实施例通过识别所述升级运行包和所述未升级运行包是否具有依赖关系,以识别出对应微服务之间是否存在依赖关系,从而判别待升级微服务的版本升级是否会影响未升级微服务的正常运行。
作为本发明的一个实施例,所述识别所述升级运行包和所述未升级运行包是否具有依赖关系,包括:识别所述升级运行包和所述未升级运行包是否关联,及所述升级运行包和所述未升级运行包是否具有版本差异,若所述升级运行包和所述未升级运行包不关联且不具有版本差异,则所述升级运行包和所述未升级运行包不具有依赖关系,若所述升级运行包和所述未升级运行包关联和/或具有版本差异,则所述升级运行包和所述未升级运行包具有依赖关系。
若所述升级运行包和所述未升级运行包不具有依赖关系,则执行S4、直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包。
本发明实施例中,若所述升级运行包和所述未升级运行包不具有依赖关系,则表示所述应用程序中需要升级的微服务在升级过程中与所述应用程序中不需要升级的微服务相兼容,于是,本发明实施例将所述将所述升级运行包和所述未升级运行包进行直接打包,以实现所述升级运行包对应微服务的升级。
作为本发明的一个实施例,参阅图2所示,所述直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包,包括:
S201、识别所述升级运行包和未升级运行包的文件长度;
S202、根据所述升级运行包和未升级运行包的文件长度,配置所述升级运行包和未升级运行包的代码打包点;
S203、根据所述代码打包点,利用预设的代码打包工具对所述升级运行包和未升级运行包进行文件打包,生成升级服务运行包。
一个可选实施例,所述识别所述升级运行包和未升级运行包的文件长度,包括:获取所述升级运行包和未升级运行包的代码行、代码参数以及配置文件;根据所述代码行、代码参数以及配置文件,计算所述升级运行包和未升级运行包的代码运行值;根据所述代码运行值,识别所述升级运行包和未升级运行包的存储空间,得到所述升级运行包和未升级运行包的文件长度。
一个可选实施例中,所述代码打包点是指所述文件长度的起始位置点和末尾位置点,所述代码打包工具可以为webpack工具。
若所述升级运行包和所述未升级运行包具有依赖关系,则执行S5、根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包。
本发明实施例中,若所述升级运行包和所述未升级运行包不具有依赖关系,则表示所述应用程序中需要升级的微服务在升级过程中与所述应用程序中不需要升级的微服务并不兼容,于是,本发明实施例根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,以实现所述升级运行包对应微服务的升级。
作为本发明的一个实施例,所述根据所述依赖关系,将所述升级运行包和所述未升级运行包进行直接打包,生成升级服务运行包,包括:根据所述依赖关系,配置所述升级运行包和所述未升级运行包的版本兼容性,识别版本兼容性配置后的所述升级运行包和未升级运行包的文件长度,根据版本兼容性配置后的所述升级运行包和未升级运行包的文件长度,配置版本兼容性配置后的所述业升级运行包和未升级运行包的代码打包点;根据所述代码打包点,利用预设的代码打包工具对版本兼容性配置后的所述业升级运行包和未升级运行包进行文件打包,生成升级服务运行包。
其中,需要说明的是,所述文件长度的识别,代码打包点的配置与上述S4中的实现原理相同,在此不做进一步地阐述。
S6、通过发布机器将所述升级服务运行包发布至所述应用程序的运行环境中运行,得到所述升级服务运行包对应微服务的升级结果。
本发明实施例中,通过发布机器将所述升级服务运行包发布至所述应用程序的运行环境中运行,得到所述升级服务运行包对应微服务的升级结果,实现所述微服务的版本升级,其中,所述发布机器包括Tomcat发布机器,所述运行环境包括浏览器环境。
本发明实施例首先对应用程序的软件运行包进行功能解析,生成多个服务运行包,并结合响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包,可以实现所述应用程序中需要升级的微服务与不需要升级的微服务进行服务运行包拆分,从而方便后续服务运行包之间依赖关系的查询;其次,本发明实施例根据所述升级运行包和所述未升级运行包是否具有依赖关系,将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包,可以对应用程序中存在依赖关系的微服务进行配置,避免升级运行包适用于某个微服务,不适用于其它关联微服务的问题,保障生成的升级服务运行包可以正常加载运行,提高微服务升级的稳定性;进一步地,本发明实施例通过发布机器将所述升级服务运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果,以实现升级服务运行包的微服务版本升级,满足业务需求。因此,本发明提出的一种微服务升级方法可以提高微服务升级的稳定性。
如图3所示,是本发明微服务升级装置的功能模块图。
本发明所述微服务升级装置100可以安装于电子设备中。根据实现的功能,所述微服务升级装置可以包括服务解析模块101、运行包升级模块102、依赖关系识别模块103、运行包打包模块104以及微服务升级模块105。本发所述模块也可以称之为单元,是指一种能够被电子设备1处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备1的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述服务解析模块101,用于获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
所述运行包升级模块102,用于响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
所述依赖关系识别模块103,用于识别所述升级运行包和所述未升级运行包是否具有依赖关系;
所述运行包打包模块103,用于在所述升级运行包和所述未升级运行包不具有依赖关系时,直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包;
所述运行包打包模块104,还用于在所述升级运行包和所述未升级运行包具有依赖关系时,根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
所述微服务升级模块105,用于通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
详细地,本发明实施例中所述微服务升级装置100中的所述各模块在使用时采用与上述的图1和图2中所述的微服务升级方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图4所示,是本发明实现微服务升级方法的电子设备1的结构示意图。
所述电子设备1可以包括处理器10、存储器11、通信总线12以及通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如微服务升级程序。
其中,所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备1的控制核心(ControlUnit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行微服务升级程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如微服务升级程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述通信总线12可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
所述通信接口13用于上述电子设备1与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备1之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
图4仅示出了具有部件的电子设备1,本领域技术人员可以理解的是,图4示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的微服务升级程序是多个计算机程序的组合,在所述处理器10中运行时,可以实现:
获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
识别所述升级运行包和所述未升级运行包是否具有依赖关系;
若所述升级运行包和所述未升级运行包不具有依赖关系,则直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包;
若所述升级运行包和所述未升级运行包具有依赖关系,则根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
具体地,所述处理器10对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备1的处理器所执行时,可以实现:
获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
识别所述升级运行包和所述未升级运行包是否具有依赖关系;
若所述升级运行包和所述未升级运行包不具有依赖关系,则直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包;
若所述升级运行包和所述未升级运行包具有依赖关系,则根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (8)
1.一种微服务升级方法,其特征在于,所述方法包括:
获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
识别所述升级运行包和所述未升级运行包是否具有依赖关系;
若所述升级运行包和所述未升级运行包不具有依赖关系,则直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包,包括:识别所述升级运行包和未升级运行包的文件长度;根据所述升级运行包和未升级运行包的文件长度,配置所述升级运行包和未升级运行包的代码打包点;根据所述代码打包点,利用预设的代码打包工具对所述升级运行包和未升级运行包进行文件打包,生成升级服务运行包;其中,所述识别所述升级运行包和未升级运行包的文件长度,包括:获取所述升级运行包和未升级运行包的代码行、代码参数以及配置文件;根据所述代码行、代码参数以及配置文件,计算所述升级运行包和未升级运行包的代码运行值;根据所述代码运行值,识别所述升级运行包和未升级运行包的存储空间,得到所述升级运行包和未升级运行包的文件长度;
若所述升级运行包和所述未升级运行包具有依赖关系,则根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
2.如权利要求1所述的微服务升级方法,其特征在于,所述对所述软件运行包进行服务解析,生成多个服务运行包,包括:
获取所述软件运行包的编译环境,根据所述编译环境,查找所述软件运行包的编译运行包及依赖运行包;
根据所述编译运行包及依赖运行包,识别所述软件运行包中所有的服务单元,并查询每个所述服务单元的运行包,得到多个服务运行包。
3.如权利要求1所述的微服务升级方法,其特征在于,所述响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,包括:
获取所述升级请求的请求字段及每个所述服务运行包的服务字段,计算所述请求字段和每个所述服务字段的距离度量值;
若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包不匹配;
若所述距离度量值不满足预设条件,则所述升级请求与对应服务运行包匹配。
4.如权利要求1所述的微服务升级方法,其特征在于,所述对匹配成功的服务运行包进行版本升级,得到升级运行包,包括:
获取匹配成功的服务运行包的服务源代码及版本升级需求,根据所述版本升级需求,对所述服务源代码进行更新,得到更新源代码;
根据所述更新源代码,生成升级运行包。
5.如权利要求1所述的微服务升级方法,其特征在于,所述识别所述升级运行包和所述未升级运行包是否具有依赖关系,包括:
识别所述升级运行包和所述未升级运行包是否关联,及所述升级运行包和所述未升级运行包是否具有版本差异;
若所述升级运行包和所述未升级运行包不关联且不具有版本差异,则所述升级运行包和所述未升级运行包不具有依赖关系;
若所述升级运行包和所述未升级运行包关联和/或具有版本差异,则所述升级运行包和所述未升级运行包具有依赖关系。
6.一种微服务升级装置,其特征在于,所述装置包括:
服务解析模块,用于获取应用程序的软件运行包,对所述软件运行包进行服务解析,生成多个服务运行包;
运行包升级模块,用于响应于所述应用程序中至少一个微服务的升级请求,从所述多个服务运行包中匹配所述升级请求的服务运行包,并对匹配成功的服务运行包进行版本升级,得到升级运行包,及将匹配失败的服务运行包作为未升级运行包;
依赖关系识别模块,用于识别所述升级运行包和所述未升级运行包是否具有依赖关系;
运行包打包模块,用于在所述升级运行包和所述未升级运行包不具有依赖关系时,直接将所述升级运行包和所述未升级运行包进行打包,生成升级服务运行包,包括:识别所述升级运行包和未升级运行包的文件长度;根据所述升级运行包和未升级运行包的文件长度,配置所述升级运行包和未升级运行包的代码打包点;根据所述代码打包点,利用预设的代码打包工具对所述升级运行包和未升级运行包进行文件打包,生成升级服务运行包;其中,所述识别所述升级运行包和未升级运行包的文件长度,包括:获取所述升级运行包和未升级运行包的代码行、代码参数以及配置文件;根据所述代码行、代码参数以及配置文件,计算所述升级运行包和未升级运行包的代码运行值;根据所述代码运行值,识别所述升级运行包和未升级运行包的存储空间,得到所述升级运行包和未升级运行包的文件长度;
所述运行包打包模块,还用于在所述升级运行包和所述未升级运行包具有依赖关系时,根据所述依赖关系,对所述升级运行包和所述未升级运行包进行打包,得到升级服务运行包;
微服务升级模块,用于通过发布机器将所述升级运行包发布至所述应用程序的运行环境中运行,得到所述升级运行包对应微服务的升级结果。
7.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至5中任意一项所述的微服务升级方法。
8.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任意一项所述的微服务升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110719438.5A CN113342379B (zh) | 2021-06-28 | 2021-06-28 | 微服务升级方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110719438.5A CN113342379B (zh) | 2021-06-28 | 2021-06-28 | 微服务升级方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342379A CN113342379A (zh) | 2021-09-03 |
CN113342379B true CN113342379B (zh) | 2022-09-09 |
Family
ID=77479131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110719438.5A Active CN113342379B (zh) | 2021-06-28 | 2021-06-28 | 微服务升级方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342379B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130880A (zh) * | 2020-09-27 | 2020-12-25 | 平安医疗健康管理股份有限公司 | 微服务的发布方法、装置、计算机设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032423B2 (en) * | 2013-06-21 | 2015-05-12 | Microsoft Technology Licensing, Llc | Dependency based configuration package activation |
CN109597605A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 应用微服务部署方法、装置、存储介质及终端设备 |
CN111651182A (zh) * | 2020-06-17 | 2020-09-11 | 深圳市钱海网络技术有限公司 | 一种用于微服务系统的自动打包构建方法及装置 |
CN112181439A (zh) * | 2020-09-24 | 2021-01-05 | 中国建设银行股份有限公司 | 一种微服务部署方法、装置、电子设备及可读存储介质 |
-
2021
- 2021-06-28 CN CN202110719438.5A patent/CN113342379B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130880A (zh) * | 2020-09-27 | 2020-12-25 | 平安医疗健康管理股份有限公司 | 微服务的发布方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113342379A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740713B2 (en) | Generation of WBS model data | |
CN112948427B (zh) | 数据查询方法、装置、设备及存储介质 | |
CN111428451B (zh) | 文本在线编辑方法、装置、电子设备及存储介质 | |
CN112650909A (zh) | 产品展示方法、装置、电子设备及存储介质 | |
CN114997706A (zh) | 基于工作流的业务处理方法、装置、设备及存储介质 | |
CN113342472A (zh) | 微服务集群创建方法、装置、电子设备及可读存储介质 | |
CN114979120A (zh) | 数据上传方法、装置、设备及存储介质 | |
CN115048111A (zh) | 基于元数据的代码生成方法、装置、设备及介质 | |
CN112486490B (zh) | 前端代码打包方法、装置、电子设备及存储介质 | |
CN113342379B (zh) | 微服务升级方法、装置、电子设备及存储介质 | |
CN114356379A (zh) | 基于备份的服务升级方法、装置、设备及存储介质 | |
CN113687827B (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
CN115827115A (zh) | 微信小程序的h5页面跳转方法、装置、设备及存储介质 | |
CN114398282A (zh) | 测试脚本的生成方法、装置、设备及存储介质 | |
CN114185588A (zh) | 增量包生成方法、装置、设备及存储介质 | |
CN112328656A (zh) | 基于中台架构的服务查询方法、装置、设备及存储介质 | |
US10649743B2 (en) | Application developing method and system | |
CN114556238A (zh) | 用于在云计算环境中生成资产信息的数字表示的方法和系统 | |
CN113657076B (zh) | 页面操作记录表的生成方法、装置、电子设备及存储介质 | |
CN114595106B (zh) | 一种业务控制设备调测方法及装置 | |
CN113064797B (zh) | 前端监控方法、装置、电子设备及存储介质 | |
CN114818656B (zh) | 基于灰度升级的二进制文件解析方法、装置、设备及介质 | |
CN114185748A (zh) | 系统监控方法、装置、电子设备及存储介质 | |
CN113672565B (zh) | 一种文件标记方法、装置、电子设备及存储介质 | |
CN113434365B (zh) | 数据特征监控方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |