CN115729590A - 服务部署方法、装置、设备和计算机可读存储介质 - Google Patents
服务部署方法、装置、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115729590A CN115729590A CN202211421012.2A CN202211421012A CN115729590A CN 115729590 A CN115729590 A CN 115729590A CN 202211421012 A CN202211421012 A CN 202211421012A CN 115729590 A CN115729590 A CN 115729590A
- Authority
- CN
- China
- Prior art keywords
- file
- software package
- change information
- compiling
- service
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种服务部署方法、装置、设备和计算机可读存储介质,该方法包括:服务节点获取表示待更新软件包文件与服务节点的当前软件包文件之间的差异的增量变更信息,利用增量变更信息得到编译变动信息,在服务端程序运行的过程中,基于变动文件中的编译变动信息对虚拟机内存中加载的编译文件进行更新,上述方式,升级部署时仅需要传输增量变更信息,减少了传输的数据量,利用少量存在变动的内容将虚拟机内存中加载的编译文件动态变更为新版的编译文件,实现在服务端程序不停止服务的前提下,对服务端程序进行升级部署。
Description
技术领域
本申请涉及软件技术领域,特别是涉及一种服务部署方法、装置、设备和计算机可读存储介质。
背景技术
随着时代的进步和科学的发展,人们对电子设备以及网络的需求和依赖也与日俱增,各种互联网应用层出不穷、日新月异。互联网应用的功能迭代越来越快,服务组件部署上线越来越频繁,部署更新工作占据重要地位。
本申请的申请人在长期的研发过程中,现有的服务组件升级部署过程中,需要停止当前服务进程,不能够对外提供服务。
发明内容
本申请主要解决的技术问题是提供一种服务部署方法、装置、设备和计算机可读存储介质,能够在不停止服务的前提下,完成服务升级部署。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种服务部署方法,该方法包括:服务节点获取增量变更信息,增量变更信息表示待更新软件包文件与服务节点的当前软件包文件之间的差异;利用增量变更信息得到编译变动信息;在服务端程序运行的过程中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新,以对服务端程序进行更新。
其中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新,包括以下至少一个步骤:在编译变动信息包括待新增编译文件的情况下,将待新增编译文件加载到虚拟机内存中;在编译变动信息包括变更后编译文件的情况下,将变更后编译文件加载到虚拟机内存中,并替换虚拟机内存中对应的当前编译文件;在编译变动信息包括待删除编译文件的标识信息的情况下,将虚拟机内存中的与标识信息对应的待删除编译文件销毁。
其中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新包括:获取服务端程序对应的进程标识,利用进程标识对虚拟机内存中对应的编译文件进行更新。
其中,获取增量变更信息包括:利用服务侧仓库接收目标终端的终端侧仓库发送的增量变更信息,增量变更信息是终端侧仓库基于终端侧仓库最新存储的待更新软件包文件与服务节点的当前软件包文件之间的对比生成的;利用增量变更信息得到编译变动信息包括:利用增量变更信息将服务侧仓库最新存储的软件包文件从当前软件包文件更新为待更新软件包文件,以使服务侧仓库和终端侧仓库的最新存储的软件包文件一致;从服务侧仓库最新存储的软件包文件获取增量编译文件,增量编译文件包括待新增编译文件和/或变更后编译文件。
其中,利用增量变更信息得到编译变动信息还包括:利用文件监测***对服务侧仓库最新存储的软件包文件进行版本更新监测,服务侧仓库中存储的软件包文件跟随目标终端的终端侧仓库中存储的软件包文件变化;响应于监测到服务侧仓库中最新存储的软件包文件发生变化,获取变动文件清单并发送给部署模块,变动文件清单包含待新增编译文件、变更后编译文件和待删除编译文件中的至少一者的标识信息;从服务侧仓库最新存储的软件包文件获取增量编译文件包括:利用部署模块获取变动文件清单,根据变动文件清单从服务侧仓库最新存储的软件包文件获取增量编译文件。
其中,该方法还包括:基于增量变更信息,对服务端程序的当前软件包资源进行更新。
其中,服务端程序为利用Java编程语言构建的,虚拟机用于运行Java程序。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种服务部署方法,该方法包括:目标终端获取待更新软件包文件;将服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息;将增量变更信息发送给服务节点,以使服务节点利用增量变更信息得到编译变动信息,并在服务端程序运行过程中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新。
其中,获取待更新软件包文件,包括:利用编译模块对服务源代码进行编译得到待更新软件包,并对待更新软件包进行解压,得到待更新软件包文件。
其中,将服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息,包括:将待更新软件包文件同步至终端侧仓库,并利用终端侧仓库获取服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息。
其中,该方法还包括:响应于用户操作,利用终端侧仓库确定变动文件清单,将变动文件清单发送给服务节点。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种服务部署装置,包括获取模块、生成模块和更新模块,获取模块用于获取增量变更信息,增量变更信息表示待更新软件包文件与服务节点的当前软件包文件之间的差异;生成模块用于利用增量变更信息得到编译变动信息;更新模块用于在服务端程序运行的过程中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新,以对服务端程序进行更新。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种服务部署装置,包括获取模块、比较模块和发送模块,获取模块用于获取待更新软件包文件;比较模块用于将服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息;发送模块用于将变动文件发送给服务节点,以使服务节点利用增量变更信息得到编译变动信息,并在服务端程序运行过程中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种电子设备,包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述任一项中的方法。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种计算机可读存储介质,其上存储有程序指令,程序指令被处理器执行时实现上述任一项中的方法。
上述方案,服务节点获取表示待更新软件包文件与服务节点的当前软件包文件之间的差异的增量变更信息,利用增量变更信息得到编译变动信息,在服务端程序运行的过程中,基于变动文件中的编译变动信息对虚拟机内存中加载的编译文件进行更新,从而升级部署时仅需要传输增量变更信息,减少了传输的数据量,利用少量存在变动的内容将虚拟机内存中加载的编译文件动态变更为新版的编译文件,实现在服务端程序不停止服务的前提下,对服务端程序进行升级部署。
附图说明
图1是本申请服务部署方法一实施例的流程示意图;
图2是本申请服务部署方法另一实施例的流程示意图;
图3是本申请服务部署方法再一实施例的流程示意图;
图4是本申请服务部署方法又一实施例的流程示意图;
图5是本申请服务部署装置一实施例的框架示意图;
图6是本申请服务部署装置另一实施例的框架示意图;
图7是本申请电子设备一实施例的框架示意图;
图8是本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
需要说明的是,本申请中的服务部署方法用于对互联网应用的服务组件进行升级部署。进一步来说,可以用于对采用分布式服务端架构的服务组件进行升级部署。对于分布式服务端架构来说,对每个服务节点分别进行部署,以完成整体服务升级。
本申请中的服务节点中可以运行一虚拟机,该虚拟机可以用于运行服务端程序,本申请中的服务部署方法可以用于对一个服务节点中的服务端程序进行升级部署。
需要说明的是,对于分布式服务端架构来说,不同的服务节点可以部署在同一服务器中,或者也可以部署在不同的服务器中。
在一具体的应用场景中,用户使用一目标终端,该目标终端可以与服务节点进行通信,用户可以通过操作目标终端以实现对服务节点中的服务端程序进行升级部署。
请参阅图1,图1是本申请服务部署方法一实施例的流程示意图。本实施例中,以服务节点执行的相关步骤为例进行说明。具体而言,该方法可以包括如下步骤:
步骤S110:获取增量变更信息。
其中,增量变更信息可以用于表示待更新软件包文件与服务节点的当前软件包文件之间的差异,具体来说,可以用于表示待更新软件包文件相比于服务节点的当前软件包文件来说,存在的增加、变更以及删除的内容。
需要说明的是,虚拟机中运行的服务端程序的当前软件包资源与服务节点存储的当前软件包的内容一致,当前软件包文件可以对当前软件包解压得到的。待更新软件包文件可以用于对服务端程序进行服务升级,即为可以用于对当前软件包资源进行升级。
待更新软件包文件与当前软件包文件均可以包括多个文件。待更新软件包文件与当前软件包文件中均可以包括若干编译文件。待更新软件包文件中的编译文件和当前软件包文件中的编译文件也可以存在差异。
举例来说,服务节点的当前软件包文件包括文件A、文件B和文件C,待更新软件包文件包括文件B1和文件C1。两者相比来说,待更新软件包文件中不包含文件A,以及文件B变动为了文件B1,文件C变动为了文件C1。增量变更信息可以用于表示待更新软件包文件相比于服务节点的当前软件包文件来说,基于文件A的删除的差异,以及文件B和文件B1之间的差异,文件C和文件C1之间的差异。
步骤S120:利用增量变更信息得到编译变动信息。
需要说明的是,虚拟机中运行的服务端程序所使用的当前软件包资源与服务节点存储的当前软件包的内容一致。增量变更信息表示当前软件包文件与待更新软件包文件的差异。
升级部署的过程包括对虚拟机内存中当前加载的编译文件进行更新,根据增量变更信息可以得到编译变动信息,编译变动信息可以用于对虚拟机内存中当前加载的编译文件进行更新。
步骤S130:基于编译变动信息对虚拟机内存中加载的编译文件进行更新。
需要说明的是,步骤S130可以是在服务端程序运行的过程中执行的。
在执行步骤S130之前,虚拟机内存中加载的是当前软件包资源中的编译文件,与当前软件包文件中的编译文件一致。基于编译变动信息对虚拟机内存中加载的编译文件进行更新后,虚拟机内存中加载的编译文件被更新为与待更新软件包文件中的编译文件一致,从而实现在无需重启服务的情况下,虚拟机就可以利用待更新软件包文件中的编译文件,也即利用新版本的编译文件,以实现对服务端程序进行升级部署。
通常来说,现有技术中会停止当前服务节点的服务进程,利用待更新软件包直接替换当前软件包资源,而后对服务进程进行重启,从而能够使得待更新软件包中的新版本的编译文件能够加载到虚拟机内存中而使用。
上述方案,服务节点获取表示待更新软件包文件与服务节点的当前软件包文件之间的差异的增量变更信息,利用增量变更信息得到编译变动信息,在服务端程序运行的过程中,基于变动文件中的编译变动信息对虚拟机内存中加载的编译文件进行更新,从而升级部署时仅需要传输增量变更信息,减少了传输的数据量,利用少量存在变动的内容将虚拟机内存中加载的编译文件动态变更为新版的编译文件,实现在服务端程序不停止服务的前提下,对服务端程序进行升级部署。
一些实施例中,增量变更信息可以是服务节点从用户使用的目标终端获取得到的。
一些实施例中,服务节点中还可以运行有一部署模块,用于在服务端程序运行的过程中,对服务端程序进行升级部署。上述基于编译变动信息对虚拟机内存中加载的编译文件进行更新可以为服务节点利用部署模块执行实现的。
一些实施例中,服务端程序为利用Java编程语言构建的,服务节点中的虚拟机用于运行上述Java程序。
在一具体的应用场景中,待更新软件包为对服务端程序的更新版本的服务源代码编译而生成的服务组件包(Java Archive File,Java归档文件,简称为jar包),当前软件包为服务节点中存储的与虚拟机中当前使用的当前软件包资源(即当前服务端程序包)内容一致的服务组件包。待更新软件包文件是对待更新软件包进行解压得到的文件,同理,当前软件包文件是对当前软件包进行解压得到的文件。其中,编译文件为后缀为class的文件。
在一具体的应用场景中,软件包文件还可以包括资源文件,例如,静态文件如:HTML文件、JS文件、CSS文件、Properties文件等非Java编译字节码文件。
一些实施例中,编译变动信息为服务节点用于对虚拟机中加载的内存进行更新所使用的信息,具体来说,可以用于实现将当前加载的当前软件包资源中的编译文件(与当前软件包文件中的编译文件一致)更新为与待更新软件包文件中的编译文件一致。
待更新软件包文件中的编译文件与当前软件包文件中的编译文件相比,可能存在部分编译文件存在变更,也可能存在部分编译文件被删除,也可能存在部分编译文件为新增文件。编译变动信息可以供部署模块用于对虚拟机内存中加载的编译文件进行更新以实现上述新增、删除和变更等变动。对于不同类型的变动,对虚拟机中加载的编译文件进行更新时的步骤有所不同。
一些实施例中,待更新软件包文件相比于当前软件包文件来说存在新增的编译文件,那么编译变动信息包括待新增编译文件,基于编译变动信息对虚拟机内存中加载的编译文件进行更新包括将待新增编译文件加载到虚拟机内存中。
一些实施例中,待更新软件包文件相比于当前软件包文件来说,关于同一编译文件有所变更,编译变动信息则包括变更后编译文件。在进行更新之前,虚拟机内存中加载有当前编译文件,基于编译变动信息对虚拟机内存中加载的编译文件进行更新包括将变更后编译文件加载到虚拟机内存中,并替换虚拟机内存中对应的当前编译文件。
一些实施例中,待更新软件包文件相比于当前软件包文件来说,存在需删除的编译文件,编译变动信息则包括待删除编译文件的标识信息,在进行更新之前,虚拟机内存中加载有编译文件,基于编译变动信息对虚拟机内存中加载的编译文件进行更新包括将虚拟机内存的加载的与标识信息对应的待删除编译文件销毁。
需要说明的是,为了对虚拟机内存进行管理,需要利用进程标识以对进程标识对应的内存进行管理。进一步地,基于编译变动信息对虚拟机内存中加载的编译文件进行更新可以包括:获取服务端程序对应的进程标识,利用进程标识对虚拟机内存中对应的编译文件进行更新。此外,对虚拟机内存中对应的编译文件进行更新可以根据变动类型的不同而对应执行相应的更新处理步骤。
在一具体的应用场景中,进程标识与服务端程序和Java虚拟机一一对应,服务节点可以通过操作***shell指令,依据服务Jar包资源名称(即当前软件包资源名称,用于唯一标识当前软件包资源)查询服务运行进程号,即进程标识。
一些实施例中,编译变动信息包括增量编译文件,增量编译文件包括待新增编译文件和/或变更后编译文件,以用于使得部署模块能够利用编译变动信息中的增量编译文件,对虚拟机内存中加载的编译文件进行新增、变更和删除,从而实现将虚拟机内存中加载的编译文件替换为与待更新软件文件一致。根据增量变更信息得到编译变动信息可以包括部署模块丄模块获取增量编译文件的相关步骤。一些实施例中,编译变动信息包括变动文件清单,根据增量变更信息得到编译变动信息可以包括获取变动文件清单的相关步骤。
进一步来说,增量编译文件可以是基于变动文件清单而获取的,或者增量编译文件也可以通过其他方式而获取。
请参阅图2,图2是本申请服务部署方法另一实施例的流程示意图。本实施例中,以服务节点执行的相关步骤为例进行说明。具体来说,服务节点中运行有一虚拟机,该虚拟机可以用于运行服务端程序。服务节点中还可以运行有一部署模块,用于在服务端程序运行的过程中,对服务端程序进行升级部署。另外,服务节点中还可以运行有一服务侧仓库和文件监测***,服务侧仓库中存储有当前软件包文件,当前软件包与服务端程序使用的当前软件包资源内容一致,服务侧仓库可以与目标终端中运行的终端侧仓库之间进行通信,可以用于获取增量变更信息。
具体而言,该方法可以包括如下步骤:
步骤S210:利用文件监测***对服务侧仓库最新存储的软件包文件进行版本更新监测。
其中,服务节点利用文件监测***可以监测服务侧仓库中最新存储的软件包文件是否存在变动。该监测的过程可以为持续的过程,可以从步骤S220执行之前持续到步骤S220执行之后。
利用文件监测***对服务侧仓库最新存储的软件包文件进行版本更新监测,可以实现在用户对目标终端的终端侧仓库中存储的软件包文件进行变更后,通过服务侧仓库中最新存储的软件包文件的版本变化确定当前可以进行升级部署。
在一具体的应用场景中,服务侧仓库可以为git远程仓库,文件监测***可以通过实时读取git log信息,通过判断git log信息中是否存在新的提交日志,而确定服务侧仓库中最新存储的软件包文件是否存在变动。当git log信息中出现新的提交日志时,则可以确定服务侧仓库中最新存储的软件包文件存在变动。
步骤S220:获取增量变更信息。
需要说明的是,服务侧仓库中存储的软件包文件可以跟随目标终端的终端侧仓库中存储的软件包文件变化。在执行服务部署方法之前,服务侧仓库中存储的软件包文件和目标终端的终端侧仓库中存储的软件包文件一致,均为服务节点中的当前软件包文件,与服务端程序的当前软件包资源内容一致。
为了进行升级部署,目标终端可以响应用户的操作将增量变更信息发送至服务节点以完成升级部署。具体来说,可以利用目标终端中运行的终端侧仓库和服务节点中运行的服务侧仓库以实现将增量变更信息发送至服务节点。
其中,增量变更信息可以是终端侧仓库基于终端侧仓库最新存储的待更新软件包文件与服务节点的当前软件包之间对比生成的。
步骤S230:利用增量变更信息将服务侧仓库最新存储的软件包文件从当前软件包文件更新为待更新软件包文件。
增量变更信息是基于当前软件包文件与待更新软件包文件比较得到的,故服务端仓库在接收到增量变更信息之后,利用自身当前存储的当前软件包文件和增量变更信息,可以将服务端仓库中存储的软件包文件更新为待更新软件包文件。
上述方式中,在进行升级部署的过程中目标终端仅需要就增量变更信息发送给服务节点。相比于现有技术中需要将待更新软件包整体发送给服务节点来说,本方案中显著减少了升级部署过程中需要传输的文件大小,实现了以最小传输内容完成服务上线,节省网络传输时间、带宽成本和存储空间,提升升级部署的效率。
一些实施例中,目标终端可以利用终端侧仓库获取待更新软件包文件,上述获取步骤可以包括获取待更新软件包文件以及将待更新软件包文件加入仓库版本管理,从而能够将待更新软件包文件与终端侧仓库中当前存储的当前软件包文件进行比较,得到增量变更信息,而将增量变更信息发送给服务节点中运行的服务侧仓库,服务节点利用服务侧仓库接收目标终端的终端侧仓库发送的增量变更信息,并利用增量变更信息将服务侧仓库最新存储的软件包文件从当前软件包文件更新为待更新软件包文件,以使服务侧仓库和终端侧仓库的最新存储的软件包文件一致。
在一具体的应用场景中,终端侧仓库可以为git本地仓库,服务侧仓库可以为git远程仓库。终端设备利用git本地仓库可以获取到待更新软件包文件,响应于用户的gitpush指令或者设备自动将待更新软件包文件与当前软件包文件进行比较,得到增量变更信息(即待更新软件包文件与当前软件包文件相比的差异),而将增量变更信息发送给服务节点中运行的git远程仓库。
此外,待更新软件包文件可以是对待更新软件包解压得到的,而待更新软件包可以是从源码仓库获取到服务源代码,并对服务源代码进行编译而生成的,上述步骤可以是通过构建平台执行而实现。目标终端或者其他终端设备可以运行上述构建平台以实现基于服务源代码而生成待更新软件包文件。对于目标终端来说,若由其他终端设备运行上述构建平台,目标终端利用终端侧仓库获取待更新软件包文件可以是利用终端侧仓库与其他终端设备运行的构建平台进行通信而获取到待更新软件包文件;若由目标终端运行上述构建平台,那么目标终端利用构建平台从源码仓库获取服务源代码并进行处理而得到待更新软件包文件,而后利用终端侧仓库从构建平台获取待更新软件包文件。
在一具体的应用场景中,终端侧仓库可以为git本地仓库。目标终端利用构建平台对服务源代码进行处理而得到待更新软件包文件。目标终端可以响应于用户操作而执行git commit指令,获取利用构建平台处理得到的待更新软件包文件并加入git本地仓库中。
步骤S240:响应于监测到服务侧仓库最新存储的软件包文件发生变化,获取变动文件清单并发送给部署模块。
具体来说,变动文件清单包括存在变动的文件的清单,具体来说,变动文件清单可以包含待新增编译文件、变更后编译文件和待删除编译文件中至少一者的标识信息。变动文件清单可以用于确定上述待新增编译文件、变更后编译文件和待删除编译文件中至少一者。
具体举例说明,服务节点的当前软件包文件包括编译文件A和编译文件B,待更新软件包文件包括编译文件B1和编译文件D。那么变动文件清单则可以包括待删除编译文件A、当前编译文件B和变更后编译文件B1和待新增编译文件D各自的标识信息。
一些实施例中,软件包文件中还可以包括若干资源文件,对于待更新软件包文件和当前软件包文件比较,其中包含的资源文件也可以存在变更、新增和删除。变动文件清单还可以包含待新增资源文件、变更后资源文件和待删除资源文件中至少一者的标识信息。
其中,变动文件清单可以是由终端设备利用终端侧仓库而确定的,服务节点通过与终端设备进行通信而获取变动文件清单。需要说明的是,终端设备确定变动文件清单的相关步骤可以在终端设备获取到待更新软件包文件之后执行,可以在终端设备向服务节点发送增量变更信息之前执行,也可以在终端设备向服务节点发送增量变更信息之后执行。
在一具体的应用场景中,终端侧仓库可以为git本地仓库,服务侧仓库可以为git远程仓库。终端设备可以响应于用户的git diff指令而对待更新软件包文件与当前软件包文件进行比较,从而能够确定两者之间的差异涉及的变动文件清单。
一些实施例中,服务节点可以利用服务侧仓库与终端侧仓库对接获取变动文件清单,而后文件监测***在出现变动时,从终端侧仓库获取变动文件清单并将变动文件清单发送给部署模块,以用于执行步骤S250。
一些实施例中,服务节点还可以通过操作***shell指令查询进程标识,并将进程标识发送给部署模块。
步骤S250:利用部署模块获取变动文件清单,根据变动文件清单从服务侧仓库最新存储的软件包文件获取增量编译文件。
具体来说,部署模块获取增量编译文件后,可以利用增量编译文件用于对虚拟机内存中加载的文件进行相应的新增、替换操作,以实现对虚拟机内存进行更新。其中,增量编译文件包括待新增编译文件和/或变更后编译文件。
进一步地,部署模块在获取变动文件清单之后,可以根据变动文件清单从服务侧仓库中最新存储的软件包文件,即待更新软件包文件中获取增量编译文件。
步骤S260:基于编译变动信息对虚拟机内存中加载的编译文件进行更新。
其中,编译变动信息可以包括变动文件清单以及增量编译文件,通过执行前述步骤S240和步骤S250,部署模块可以获取到变动文件清单以及增量编译文件,用于供部署模块使用以对虚拟机内存中加载的编译文件进行更新,进行更新包括增加、变更和删除。
一些情况下,变动文件清单中包含待新增编译文件的标识信息和/或变更后编译文件的标识信息,那么增量编译文件中包含待新增编译文件和/或变更后编译文件,利用部署模块可以将待新增编译文件加载到虚拟机内存中;利用部署模块还可以对虚拟机内存中加载的对应的当前编译文件进行销毁,而后将变更后编译文件加载到虚拟机内存中,以实现利用变更后编译文件替换对应的当前编译文件。
一些情况下,变动文件清单中包含待删除编译文件的标识信息,那么进行删除操作无需从待更新软件包文件中获取增量编译文件,根据标识信息,利用部署模块可以将虚拟机内存中加载的待删除编译文件进行销毁。
步骤S270:通过部署模块基于增量变更信息对服务端程序的当前软件包资源进行更新。
步骤S260和步骤S270的执行顺序是可以调换的,两者也可以同时执行。
需要说明的是,软件包文件中除了编译文件以外,还可以包括若干资源文件。待更新软件包文件和当前软件包文件相比来说,两者包含的资源文件也可以存在差异。变动文件清单中还可以包括存在变动的资源文件的标识信息。
服务节点还可以利用部署模块对服务端程序的当前软件包资源进行更新,以完成服务升级,具体可以包括对当前软件包资源中的资源文件和编译文件等进行更新。同样地,对于当前软件包资源进行更新的过程中也可以包括新增、变更和删除等相关操作。
具体地,服务节点可以首先利用增量变更信息获取变动信息,包括编译变动信息和资源变动信息,变动信息可以包括变动文件清单以及增量文件,利用部署模块根据变动信息对当前软件包资源进行更新。相关操作步骤与对虚拟机内存中加载的编译文件进行更新相似,可参考前述实施例中相关描述。
一些实施例中,步骤S240中获取的变动文件清单包括待新增文件、变更后文件、待删除文件中的至少一者的标识信息。步骤S250中还可以根据标识信息可以从服务侧仓库中取得增量文件(除增量编译文件之外,还包括增量资源文件),对当前软件包资源进行新增、变更和删除等操作,并且对更新后的软件包资源进行重新压缩。
在一具体应用场景中,服务端程序的当前软件包资源为服务jar包资源,基于增量变更信息首先得到变动信息,而后利用变动信息将其中的资源文件和字节码文件替换为新版本,以对服务jar包资源进行更新。
上述方案,服务节点获取表示待更新软件包文件与服务节点的当前软件包文件之间的差异的增量变更信息,利用增量变更信息得到编译变动信息,在服务端程序运行的过程中,基于变动文件中的编译变动信息对虚拟机内存中加载的编译文件进行更新,从而升级部署时仅需要传输增量变更信息,减少了传输的数据量,利用少量存在变动的内容将虚拟机内存中加载的编译文件动态变更为新版的编译文件,实现在服务端程序不停止服务的前提下,对服务端程序进行升级部署,减少对用户使用服务的影响。
一些实施例中,基于git仓库版本管理,能够提供可视化的形式追溯历史各个增量版本的更新记录和指定版本回退操作,根据用户指令而将仓库中存储的软件包文件恢复为指定版本的软件包文件,并且能够向用户展示各版本之间的增量差异,便于用户对软件包文件进行管理。
对于分布式服务端架构来说,上述实施例中的相关步骤可以为一个服务节点执行的相关步骤,每个服务节点均可作为执行主体而执前述服务部署方法的相关步骤,从而能够实现整体服务升级。
请参阅图3,图3是本申请服务部署方法再一实施例的流程示意图。
本实施例中以目标终端执行的相关步骤为例进行说明。具体而言,该方法可以包括:
步骤S310:获取待更新软件包文件。
其中,待更新软件包文件可以为对服务源代码编译后解压得到的。
进一步来说,上述步骤可以为目标终端利用编译平台从源码仓库获取服务源代码并进行编译,对编译后得到的待更新软件包进行解压得到的。
步骤S320:将服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息。
具体来说,可以通过将待更新软件包文件同步至终端侧仓库,并利用终端侧仓库获取服务节点的当前软件包文件和待更新软件包文件进行比较。其中,服务节点的当前软件包文件可以为终端侧仓库中存储的。
步骤S330:将增量变更信息发送给服务节点。
目标终端将增量变更信息发送给服务节点,从而使得服务节点利用增量变更信息得到编译变动信息,并在服务端程序运行过程中,基于增量变更信息包括的编译变动信息对虚拟机内存中加载的编译文件进行更新,以完成服务升级部署。
一些实施例中,目标终端还可以响应于用户操作,利用终端侧仓库确定变动文件清单。变动文件清单包含待新增编译文件、变更后编译文件和待删除编译文件中的至少一者的标识信息,以使得服务节点可以根据变动文件清单获取增量编译文件,以及利用增量编译文件和变动文件清单对虚拟机内存中加载的编译文件进行更新。
步骤S310-步骤S330的相关描述可以参考前述实施例中的相关内容,在此不做赘述。
请参阅图4,图4是本申请服务部署方法又一实施例的流程示意图。
本实施例中,目标终端运行有构建平台和构建环境git仓库(终端侧仓库)。目标终端利用构建平台从源码仓库拉取源码,对获取到的源码进行编译得到Maven构建jar包,解压后得到编译文件夹(其中包括待更新软件包文件)。将编译文件夹同步至版本管理仓库,构建环境git仓库将编译文件夹与其中存储的当前软件包文件进行比较,将增量文件(增量变更信息)推送至生产环境git仓库。服务节点中运行有生产环境git仓库、文件监测***、热部署模块和Java服务组件。服务节点通过生产环境git仓库接收增量文件,以将其中存储的当前软件包文件更新与编译文件夹(待更新软件包文件)一致。另外,还可以利用生产环境git仓库接收构建环境git仓库确定的变动文件清单。文件监测***监测生产环境git仓库中的软件包文件的版本变化,并通知热部署模块变更信息(包括变动文件清单),从而热部署模块可以从生产环境git仓库中提取更新软件包文件中对应的增量变更文件(可以包括字节码文件和资源文件),增量变更文件中的编译文件用于对虚拟机内存进行更新,增量变更文件还可用于对服务jar包资源进行更新。
请参阅图5,图5是本申请服务部署装置一实施例的框架示意图。
本实施例中,服务部署装置50包括获取模块51、生成模块52和更新模块53,获取模块51用于获取增量变更信息,所述增量变更信息表示待更新软件包文件与所述服务节点的当前软件包文件之间的差异;生成模块52用于利用所述增量变更信息得到编译变动信息;更新模块53用于在服务端程序运行的过程中,基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新,以对所述服务端程序进行更新。
其中,更新模块53用于基于编译变动信息对虚拟机内存中加载的编译文件进行更新,具体包括以下至少一个步骤:在编译变动信息包括待新增编译文件的情况下,将待新增编译文件加载到虚拟机内存中;在编译变动信息包括变更后编译文件的情况下,将变更后编译文件加载到虚拟机内存中,并替换虚拟机内存中对应的当前编译文件;在编译变动信息包括待删除编译文件的标识信息的情况下,将虚拟机内存中的与标识信息对应的待删除编译文件销毁。
其中,更新模块53用于基于编译变动信息对虚拟机内存中加载的编译文件进行更新,具体包括:获取服务端程序对应的进程标识,利用进程标识对虚拟机内存中对应的编译文件进行更新。
其中,获取模块51用于获取增量变更信息,具体包括:利用服务侧仓库接收目标终端的终端侧仓库发送的增量变更信息,增量变更信息是终端侧仓库基于终端侧仓库最新存储的待更新软件包文件与服务节点的当前软件包文件之间的对比生成的;生成模块52用于利用增量变更信息得到编译变动信息,具体包括:利用增量变更信息将服务侧仓库最新存储的软件包文件从当前软件包文件更新为待更新软件包文件,以使服务侧仓库和终端侧仓库的最新存储的软件包文件一致;从服务侧仓库最新存储的软件包文件获取增量编译文件,增量编译文件包括待新增编译文件和/或变更后编译文件。
其中,生成模块52用于利用增量变更信息得到编译变动信息,具体还包括:利用文件监测***对服务侧仓库最新存储的软件包文件进行版本更新监测,服务侧仓库中存储的软件包文件跟随目标终端的终端侧仓库中存储的软件包文件变化;响应于监测到服务侧仓库中最新存储的软件包文件发生变化,获取变动文件清单并发送给部署模块,变动文件清单包含待新增编译文件、变更后编译文件和待删除编译文件中的至少一者的标识信息;生成模块52用于从服务侧仓库最新存储的软件包文件获取增量编译文件,具体包括:利用部署模块获取变动文件清单,根据变动文件清单从服务侧仓库最新存储的软件包文件获取增量编译文件。
其中,更新模块53还可以用于基于增量变更信息,对服务端程序的当前软件包资源进行更新。
其中,服务端程序为利用Java编程语言构建的,虚拟机用于运行Java程序。
请参阅图6,图6是本申请服务部署装置另一实施例的框架示意图。
本实施例中,服务部署装置60包括获取模块61、比较模块62和发送模块63,获取模块61用于获取待更新软件包文件;比较模块62用于将服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息;发送模块63用于将变动文件发送给服务节点,以使服务节点利用增量变更信息得到编译变动信息,并在服务端程序运行过程中,基于编译变动信息对虚拟机内存中加载的编译文件进行更新。
其中,获取模块61用于获取待更新软件包文件,具体包括:利用编译模块对服务源代码进行编译得到待更新软件包,并对待更新软件包进行解压,得到待更新软件包文件。
其中,比较模块62用于将服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息,具体包括:将待更新软件包文件同步至终端侧仓库,并利用终端侧仓库获取服务节点的当前软件包文件和待更新软件包文件进行比较,得到增量变更信息。
其中,服务部署装置60还包括生成模块,用于响应于用户操作,利用终端侧仓库确定变动文件清单,将变动文件清单发送给服务节点。
请参阅图7,图7是本申请电子设备一实施例的框架示意图。
本实施例中,电子设备70包括存储器71、处理器72,其中存储器71耦接处理器72。具体地,电子设备70的各个组件可通过总线耦合在一起,或者电子设备70的处理器72分别与其他组件一一连接。该电子设备70可以为具有处理能力的任意设备,例如计算机、平板电脑、手机等。
存储器71用于存储处理器72执行的程序数据以及处理器72在处理过程中的数据等。例如,增量变更信息、当前软件包文件等。其中,该存储器71包括非易失性存储部分,用于存储上述程序数据。
处理器72控制电子设备70的操作,处理器72还可以称为CPU(Central ProcessingUnit,中央处理单元)。处理器72可能是一种集成电路芯片,具有信号的处理能力。处理器72还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器72可以由多个成电路芯片共同实现。
处理器72通过调用存储器71存储的程序数据,用于执行指令以实现上述任一服务部署方法。
请参阅图8,图8是本申请计算机可读存储介质一实施例的框架示意图。
本实施例中,该计算机可读存储介质80存储有处理器可运行的程序数据81,该程序数据能够被执行,用以实现上述任一服务部署方法。
该计算机可读存储介质80具体可以为U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等可以存储程序数据的介质,或者也可以为存储有该程序数据的服务器,该服务器可将存储的程序数据发送给其他设备运行,或者也可以自运行该存储的程序数据。
在一些实施例中,计算机可读存储介质80还可以为如图7所示的存储器。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (12)
1.一种服务部署方法,其特征在于,所述方法包括:
服务节点获取增量变更信息,所述增量变更信息表示待更新软件包文件与所述服务节点的当前软件包文件之间的差异;
利用所述增量变更信息得到编译变动信息;
在服务端程序运行的过程中,基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新,以对所述服务端程序进行更新。
2.根据权利要求1所述的方法,其特征在于,所述基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新,包括以下至少一个步骤:
在所述编译变动信息包括待新增编译文件的情况下,将所述待新增编译文件加载到所述虚拟机内存中;
在所述编译变动信息包括变更后编译文件的情况下,将所述变更后编译文件加载到所述虚拟机内存中,并替换所述虚拟机内存中对应的当前编译文件;
在所述编译变动信息包括待删除编译文件的标识信息的情况下,将所述虚拟机内存中的与所述标识信息对应的待删除编译文件销毁。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新包括:
获取所述服务端程序对应的进程标识,利用所述进程标识对所述虚拟机内存中对应的编译文件进行更新。
4.根据权利要求1所述的方法,其特征在于,所述获取增量变更信息包括:
利用服务侧仓库接收目标终端的终端侧仓库发送的所述增量变更信息,所述增量变更信息是终端侧仓库基于所述终端侧仓库最新存储的待更新软件包文件与所述服务节点的当前软件包文件之间的对比生成的;
所述利用所述增量变更信息得到编译变动信息包括:
利用所述增量变更信息将所述服务侧仓库最新存储的软件包文件从所述当前软件包文件更新为所述待更新软件包文件,以使所述服务侧仓库和所述终端侧仓库的最新存储的软件包文件一致;
从所述服务侧仓库最新存储的软件包文件获取增量编译文件,所述增量编译文件包括待新增编译文件和/或变更后编译文件。
5.根据权利要求4所述的方法,其特征在于,所述利用所述增量变更信息得到编译变动信息还包括:
利用文件监测***对所述服务侧仓库最新存储的软件包文件进行版本更新监测,所述服务侧仓库中存储的软件包文件跟随目标终端的终端侧仓库中存储的软件包文件变化;
响应于监测到所述服务侧仓库中最新存储的软件包文件发生变化,获取变动文件清单并发送给部署模块,所述变动文件清单包含待新增编译文件、变更后编译文件和待删除编译文件中的至少一者的标识信息;
所述从所述服务侧仓库最新存储的软件包文件获取增量编译文件包括:
利用所述部署模块获取所述变动文件清单,根据所述变动文件清单从所述服务侧仓库最新存储的软件包文件获取增量编译文件。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述增量变更信息,对所述服务端程序的当前软件包资源进行更新;和/或,
所述服务端程序为利用Java编程语言构建的,所述虚拟机用于运行Java程序。
7.一种服务部署方法,其特征在于,所述方法包括:
目标终端获取待更新软件包文件;
将服务节点的当前软件包文件和所述待更新软件包文件进行比较,得到增量变更信息;
将所述增量变更信息发送给所述服务节点,以使所述服务节点利用所述增量变更信息得到编译变动信息,并在服务端程序运行过程中,基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新。
8.根据权利要求7所述的方法,其特征在于,所述获取待更新软件包文件,包括:
利用编译模块对服务源代码进行编译得到待更新软件包,并对所述待更新软件包进行解压,得到所述待更新软件包文件;
和/或,所述将服务节点的当前软件包文件和所述待更新软件包文件进行比较,得到增量变更信息,包括:
将所述待更新软件包文件同步至终端侧仓库,并利用所述终端侧仓库获取所述服务节点的当前软件包文件和所述待更新软件包文件进行比较,得到所述增量变更信息;
和/或,所述方法还包括:
响应于用户操作,利用终端侧仓库确定变动文件清单,将所述变动文件清单发送给所述服务节点。
9.一种服务部署装置,其特征在于,包括:
获取模块,用于获取增量变更信息,所述增量变更信息表示待更新软件包文件与所述服务节点的当前软件包文件之间的差异;
生成模块,用于利用所述增量变更信息得到编译变动信息;
更新模块,用于在服务端程序运行的过程中,基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新,以对所述服务端程序进行更新。
10.一种服务部署装置,其特征在于,包括:
获取模块,用于获取待更新软件包文件;
比较模块,用于将服务节点的当前软件包文件和所述待更新软件包文件进行比较,得到增量变更信息;
发送模块,用于将所述变动文件发送给所述服务节点,以使所述服务节点利用所述增量变更信息得到编译变动信息,并在服务端程序运行过程中,基于所述编译变动信息对虚拟机内存中加载的编译文件进行更新。
11.一种电子设备,其特征在于,包括相互耦接的存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以实现权利要求1至6或权利要求7至8中任一项所述的服务部署方法。
12.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令被处理器执行时实现权利要求1至6或权利要求7至8中任一项所述的服务部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211421012.2A CN115729590A (zh) | 2022-11-14 | 2022-11-14 | 服务部署方法、装置、设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211421012.2A CN115729590A (zh) | 2022-11-14 | 2022-11-14 | 服务部署方法、装置、设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115729590A true CN115729590A (zh) | 2023-03-03 |
Family
ID=85295565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211421012.2A Pending CN115729590A (zh) | 2022-11-14 | 2022-11-14 | 服务部署方法、装置、设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115729590A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737514A (zh) * | 2023-08-15 | 2023-09-12 | 南京国睿信维软件有限公司 | 一种基于日志与探针解析自动化运维方法 |
-
2022
- 2022-11-14 CN CN202211421012.2A patent/CN115729590A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737514A (zh) * | 2023-08-15 | 2023-09-12 | 南京国睿信维软件有限公司 | 一种基于日志与探针解析自动化运维方法 |
CN116737514B (zh) * | 2023-08-15 | 2023-12-22 | 南京国睿信维软件有限公司 | 一种基于日志与探针解析自动化运维方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193607B (zh) | 用于更新代码文件的方法和装置、存储介质、处理器以及终端 | |
CN110162334B (zh) | 一种代码管理方法、装置及存储介质 | |
CN112769706B (zh) | 组件化路由方法及*** | |
CN111932207A (zh) | 项目数据处理方法、装置、计算机设备和存储介质 | |
CN112882738A (zh) | 一种微服务架构下的配置信息更新方法、装置及电子设备 | |
US20230259358A1 (en) | Documentation enforcement during compilation | |
CN115729590A (zh) | 服务部署方法、装置、设备和计算机可读存储介质 | |
CN113138768B (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN106293790B (zh) | 基于Firefox操作***的应用程序升级方法和装置 | |
CN115543429A (zh) | 项目环境的搭建方法、电子设备及计算机可读存储介质 | |
CN115794637A (zh) | 自动化测试的方法、装置、设备和计算机可读介质 | |
CN109814911A (zh) | 用于管理脚本程序的方法、装置、计算机设备及存储介质 | |
CN115129348A (zh) | 应用程序的资源更新方法、装置、设备及可读存储介质 | |
CN110580216A (zh) | 一种应用提测的方法和装置 | |
CN114610446A (zh) | 一种自动注入探针的方法、装置及*** | |
CN115964061A (zh) | 插件更新方法、装置、电子设备和计算机可读存储介质 | |
CN111158654A (zh) | 算法调用方法、装置、服务器及存储介质 | |
CN112667491A (zh) | 虚拟机的功能测试方法及装置 | |
CN113031960B (zh) | 代码编译方法、装置、服务器及存储介质 | |
CN112114871B (zh) | 一种代码共享方法、装置、服务器、终端及介质 | |
CN112988208B (zh) | 数据更新方法、装置、设备及存储介质 | |
CN109492181B (zh) | 页面跳转方法、装置、计算机设备和存储介质 | |
CN117472416A (zh) | 组件处理方法、电子设备和可读存储介质 | |
CN113515305A (zh) | 配置信息确定方法、配置快照生成方法及装置 | |
CN114880276A (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 |