一种针对分布式部署服务软件程序的在线升级方法与流程

文档序号:15625247发布日期:2018-10-09 22:49阅读:519来源:国知局

本发明属于在线软件服务领域,具体涉及一种针对分布式部署服务软件程序的在线升级方法。



背景技术:

目前,传统的在线服务软件都是单点地对软件进行安装部署,即直接使用单个物理机或虚拟机安装及运行整个软件,具有投入成本高和维护安装困难的问题。具体而言就是,软件的安装部署还是趋于发布安装包,然后上线调试,使得服务端的升级远比客户端升级难度大,此外,还可能出现服务业务中断的情况。



技术实现要素:

为了解决现有技术存在的上述问题,本发明目的在于提供一种针对分布式部署服务软件程序的在线升级方法。

本发明所采用的技术方案为:

一种针对分布式部署服务软件程序的在线升级方法,包括如下步骤:

s101.将服务软件程序拆分为若干个应用子程序,然后将各个应用子程序分别以docker应用容器的形式一一对应地运行在目标服务器中,其中,所述目标服务器预先安装有docker应用容器引擎和jenkins终端软件程序;

s102.登录jenkins服务器,并新建在线监控项目,在该在线监控项目中配置从程序版本管理服务器拉取升级程序代码的第一参数;

s103.登录程序版本管理服务器,设置关联jenkins服务器的第二参数;

s104.程序版本管理服务器在收到来自软件开发端的服务软件程序升级包后,向jenkins服务器发送程序升级操作请求消息,其中,所述服务软件程序升级包封装有以应用子程序名命名的升级程序代码,所述程序升级操作请求消息包含有在所述服务软件程序升级包中的所有应用子程序名;

s105.jenkins服务器在收到所述程序升级操作请求消息后,针对与所述应用子程序名对应的目标服务器,触发远程构建任务,并通过运行在该目标服务器的jenkins终端软件程序,将从程序版本管理服务器拉取的且与所述应用子程序名对应的升级程序代码传送至该目标服务器;

s106.目标服务器在收到完整的升级程序代码后,启动maven程序包,将该升级程序代码封装为maven容器;

s107.目标服务器将所述maven容器的镜像推送到本地docker私有库中,完成对与所述应用子程序名对应的docker应用容器镜像的更新;

s108.关机重启目标服务器,启动docker应用容器引擎,从所述docker私有库中获取与所述应用子程序名对应的docker应用容器镜像,然后重新以docker应用容器的形式运行应用子程序,完成在线升级。

具体的,在所述步骤s102中,所述第一参数包括程序版本管理服务器的url地址和用于触发远程构建的身份验证令牌。

具体的,所述程序版本管理服务器为svn服务器或git服务器。进一步具体的,当所述程序版本管理服务器为git服务器时,在所述步骤s103中,所述第二参数包括开启钩子功能的钩子地址/和url请求密码。

优化的,若所述服务软件程序升级包封装有多个以不同应用子程序名命名的升级程序代码,则针对各个与不同应用子程序名对应的升级程序代码及目标服务器,按照轮询方式逐一地执行步骤s105~s108。

优化的,所述jenkins终端软件程序和所述docker私有库分别以docker应用容器的形式运行在目标服务器中。

具体的,所述目标服务器为物理机或虚拟机。

本发明的有益效果为:

(1)本发明创造提供了一种可以降低服务器部署复杂度及后续服务端升级难度的解决方案,一方面通过使用docker应用容器技术,分布式运行服务软件程序的各个应用子程序,不但可以降低资源占用率,方便进行硬件系统的横向扩展,降低服务器部署难度,还可大大提升在线服务系统的稳定性,实现全天候的不间断运行;另一方面通过利用jenkins服务器和程序版本管理服务器,可以实现升级程序代码的自动化交付和灰度升级,大大降低服务端的升级难度;

(2)通过轮询方式对各个应用子程序进行重启升级,可确保服务业务在升级过程中不中断,便于实际应用和推广。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的针对分布式部署服务软件程序的在线升级方法的流程示意图。

图2是本发明提供的在线升级系统的结构示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b三种情况,本文中术语“/和”是描述另一种关联对象关系,表示可以存在两种关系,例如,a/和b,可以表示:单独存在a,单独存在a和b两种情况,另外,本文中字符“/”,一般表示前后关联对象是一种“或”关系。

实施例一

如图1和2所示,本实施例提供的所述针对分布式部署服务软件程序的在线升级方法,包括如下步骤。

s101.将服务软件程序拆分为若干个应用子程序,然后将各个应用子程序分别以docker应用容器的形式一一对应地运行在目标服务器中,其中,所述目标服务器预先安装有docker应用容器引擎和jenkins终端软件程序。

在所述步骤s101中,所述docker应用容器引擎是一个开源的应用容器引擎,让开发者可以打包他们的应用程序以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。docker应用容器是完全使用沙箱机制,相互之间不会有任何接口(类似iphone的app程序),几乎没有性能开销,可以很容易地在机器和数据中心中运行,最重要的是,其可以不依赖于任何语言、框架和系统,具有如下特点:(1)容器可编排,即可以根据实际情况进行配置和编排,例如计划任务、共享文件及共享网络等等;(2)资源占用更低,性能逼近原生系统,相比虚拟机技术可节省虚拟硬件层的资源开销;(3)运行启动更快,可以做到毫秒级的启动。由此通过使用docker应用容器技术,分布式运行服务软件程序的各个应用子程序,不但可以降低资源占用率,方便进行硬件系统的横向扩展,降低服务器部署难度,还可大大提升在线服务系统的稳定性,实现全天候的不间断运行。优化的,所述jenkins(jenkins是一种易于使用的持续集成系统,它可以使开发者从繁杂的集成过程中解脱出来,专注于更为重要的业务逻辑实现,此外,jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性)终端软件程序也以docker应用容器的形式运行在目标服务器中。此外,具体的,所述目标服务器可以但不限于为物理机或虚拟机。

s102.登录jenkins服务器,并新建在线监控项目,在该在线监控项目中配置从程序版本管理服务器拉取升级程序代码的第一参数。

在所述步骤s102中,具体的,所述第一参数可以但不限于包括程序版本管理服务器的url地址和用于触发远程构建的身份验证令牌。所述程序版本管理服务器可以但不限于为svn(subversion,是近年来崛起的版本管理工具,绝大多数开源软件都使用svn作为代码版本管理软件)服务器或git(git是当前最先进的分布式版本控制系统)服务器。作为举例的,如图2所示,本实施例中所述程序版本管理服务器采用git服务器。

s103.登录程序版本管理服务器,设置关联jenkins服务器的第二参数。

在所述步骤s103中,由于所述程序版本管理服务器采用git服务器,则具体的,所述第二参数可以但不限于包括开启钩子功能的钩子地址/和url(uniformresourcelocator,统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址)请求密码。如此可确保git服务器在接收到上传的升级程序代码后,可以把相关消息及任务传递给jenkins服务器。

s104.程序版本管理服务器在收到来自软件开发端的服务软件程序升级包后,向jenkins服务器发送程序升级操作请求消息,其中,所述服务软件程序升级包封装有以应用子程序名命名的升级程序代码,所述程序升级操作请求消息包含有在所述服务软件程序升级包中的所有应用子程序名。

s105.jenkins服务器在收到所述程序升级操作请求消息后,针对与所述应用子程序名对应的目标服务器,触发远程构建任务,并通过运行在该目标服务器的jenkins终端软件程序,将从程序版本管理服务器拉取的且与所述应用子程序名对应的升级程序代码传送至该目标服务器。

s106.目标服务器在收到完整的升级程序代码后,启动maven程序包,将该升级程序代码封装为maven容器。

在所述步骤s106中,所述maven(一种采用纯java编写的开源项目管理工具)程序包用于调用和编译升级程序代码,其可以临时从网站上下载获取,也可以预先存放在目标服务器中。

s107.目标服务器将所述maven容器的镜像推送到本地docker私有库中,完成对与所述应用子程序名对应的docker应用容器镜像的更新。

在所述步骤s107中,优化的,所述docker私有库也以docker应用容器的形式运行在目标服务器中。

s108.关机重启目标服务器,启动docker应用容器引擎,从所述docker私有库中获取与所述应用子程序名对应的docker应用容器镜像,然后重新以docker应用容器的形式运行应用子程序,完成在线升级。

通过前述步骤s104~s108,即可以实现升级程序代码的自动化交付和灰度升级(即如果当前版本升级失败,可以选择回滚之前的版本,待到新版本完善之后再进行升级),大大降低服务端的升级难度。若所述服务软件程序升级包封装有多个以不同应用子程序名命名的升级程序代码,则针对各个与不同应用子程序名对应的升级程序代码及目标服务器,按照轮询方式逐一地执行步骤s105~s108。如此,通过轮询方式对各个应用子程序进行重启升级,可确保服务业务在升级过程中不中断,便于实际应用和推广。

综上,采用本实施例所提供的针对分布式部署服务软件程序的在线升级方法,具有如下技术效果:

(1)本发明创造提供了一种可以降低服务器部署复杂度及后续服务端升级难度的解决方案,一方面通过使用docker应用容器技术,分布式运行服务软件程序的各个应用子程序,不但可以降低资源占用率,方便进行硬件系统的横向扩展,降低服务器部署难度,还可大大提升在线服务系统的稳定性,实现全天候的不间断运行;另一方面通过利用jenkins服务器和程序版本管理服务器,可以实现升级程序代码的自动化交付和灰度升级,大大降低服务端的升级难度;

(2)通过轮询方式对各个应用子程序进行重启升级,可确保服务业务在升级过程中不中断,便于实际应用和推广。

本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。

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