本发明涉及计算机技术领域,具体涉及一种jar包组件热部署方法及系统。
背景技术:
jar是一种软件包文件格式,jar文件通常用于聚合大量的java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发java平台应用软件或库。maven是一种程序编译构建工具,可以理解为it领域研发过程中的辅助环境工具。私服仓库是架设在局域网内的仓库服务,一般是公司内搭建的公共仓库,主要存放jar包等资源文件。jar包三要素:groupid(theuniqueidentifieroftheorganizationorgroupthatcreatedtheproject,可以理解为项目的唯一标识)、artifactid(uniquebasenameoftheprimaryartifactbeinggeneratedbythisproject,可以理解为项目下文件唯一标识)、version(可以理解为文件版本号),作为业界标准,可唯一标识一个jar文件在私服仓库中的目录位置,唯一标识一个jar坐标信息。
热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。传统的热部署方式偏向于测试环境单文件部署,这种方式是在程序工程师开发调试程序文件过程中,经常在开发测试过程中加载系统内部资源,当开发过程中文件变化了会自动加载,可以不启动tomcat容器(一种web应用服务器)来调试程序。这种方式不能用于生产环境(线上环境,即正式使用的功能)。在生产环境,如果在开发过程中修改了一个文件需要重新启动tomcat容器来达到使新修改的功能生效。
传统的应用程序如果依赖jar文件是把jar文件三要素配置于项目内部,服务器上线环境需要安装maven环境(用于从私服仓库下载依赖的jar文件),通过依赖文件(pom)来下载jar包资源。需要部署操作时,利用maven环境从私服仓库下载依赖的jar文件和项目文件存储在一起,然后再一起部署到服务器。由于jar文件和程序是放在一起部署在生产环境,jar文件和程序文件是耦合在一起的,因此,每次变更jar文件都需要重新启动服务器上线。对于传统方法,从技术上分析,行业内研发项目依赖的jar包需在项目中显式引入,每次jar包的变更都需要重新进行部署上线,在这个过程中不可避免的会产生服务重启来达到系统上线的效果。从业务上分析,对于引入第三方需求变化频繁的个性化jar包组件,在系统沟通、对接、联调等方面都会产生不可估量的成本,同时也会带来频繁的重启服务来达到需求上线。
技术实现要素:
为解决现有技术中的问题,本发明实施例提供一种jar包组件热部署方法及系统。
第一方面,本发明实施例提供一种jar包组件热部署方法,该方法包括:用户终端发送发布请求至服务器集群中的任意一个服务器,接收所述发布请求的服务器为发布请求接收服务器,所述发布请求包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息,或,所述发布请求包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在私服仓库的存储地址,所述执行部署服务器集群是所述服务器集群的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器;所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群,所述执行部署服务器集群的各个服务器根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,根据所述存储地址下载所述jar包组件并完成热部署操作,或,所述执行部署服务器集群的各个服务器根据所述jarurl地址下载所述jar包组件并完成热部署操作。
进一步地,所述根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,具体包括:根据所述jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求所述私服仓库目录地址获取对应的html标签,解析所述html标签获取所述jar包组件在所述私服仓库的存储地址。
进一步地,所述发布请求还包括用户终端标识,在所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群之前,所述方法还包括:所述发布请求接收服务器将所述用户终端标识发送至权限控制中心,以供所述权限控制中心验证所述用户终端标识对应用户终端的发布权限;在所述权限控制中心对所述用户终端标识对应用户终端的发布权限验证通过后,所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息。
进一步地,在所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息之后,所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群之前,所述方法还包括:所述发布请求接收服务器获取发布锁,从而获取并行发送所述发布请求至所述执行部署服务器集群的权限;以及,在所述执行部署服务器集群中的各个服务器完成热部署操作之后,释放所述发布锁。
进一步地,在所述根据所述存储地址下载所述jar包组件并完成热部署操作之后或在所述根据所述jarurl地址下载所述jar包组件并完成热部署操作之后,所述方法还包括:所述执行部署服务器集群中的各个服务器将操作记录进行数据存储。
进一步地,所述方法还包括:所述用户终端向所述执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,所述任意服务器接收到所述热部署操作结果查询请求后,发送热部署状态结果至所述用户终端。
进一步地,所述方法还包括:所述服务器集群中的任意一个服务器重启后,动态初始化最后一次成功部署的jar包组件。
进一步地,所述服务器集群中的各个服务器封装有jar包加载部署工具类,所述jar包加载部署工具类提供加载部署jar包组件、获取jar包组件内置类及卸载jar包组件功能,支持部署多业务不同jar包资源。
第二方面,本发明实施例提供一种jar包组件热部署系统,该系统包括用户终端、服务器集群及私服仓库,其中:所述用户终端用于发送发布请求至所述服务器集群中的任意一个服务器,接收所述发布请求的服务器为发布请求接收服务器,所述发布请求包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息,或,所述发布请求包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在所述私服仓库的存储地址,所述执行部署服务器集群是所述服务器集群的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器;所述发布请求接收服务器用于将所述发布请求发送至所述执行部署服务器集群;所述执行部署服务器集群的各个服务器用于根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,根据所述存储地址下载所述jar包组件并完成热部署操作,或,所述执行部署服务器集群的各个服务器用于根据所述jarurl地址下载所述jar包组件并完成热部署操作。
进一步地,所述执行部署服务器集群的各个服务器在用于根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址时,具体用于:根据所述jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求所述私服仓库目录地址获取对应的html标签,解析所述html标签获取所述jar包组件在所述私服仓库的存储地址。
进一步地,所述发布请求还包括用户终端标识,在所述发布请求接收服务器用于将所述发布请求发送至所述执行部署服务器集群之前,所述发布请求接收服务器还用于:将所述用户终端标识发送至权限控制中心,以供所述权限控制中心验证所述用户终端标识对应用户终端的发布权限;在所述权限控制中心对所述用户终端标识对应用户终端的发布权限验证通过后,接收所述权限控制中心发送的权限确认信息。
进一步地,在所述发布请求接收服务器用于接收所述权限控制中心发送的权限确认信息之后、将所述发布请求发送至所述执行部署服务器集群之前,所述发布请求接收服务器还用于:获取发布锁,从而获取并行发送所述发布请求至所述执行部署服务器集群的权限;以及,在所述执行部署服务器集群中的各个服务器完成热部署操作之后,释放所述发布锁。
进一步地,所述执行部署服务器集群的各个服务器在用于根据所述存储地址下载所述jar包组件并完成热部署操作之后或在用于根据所述jarurl地址下载所述jar包组件并完成热部署操作之后,所述执行部署服务器集群的各个服务器还用于将操作记录进行数据存储。
进一步地,所述用户终端还用于:向所述执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,以及接收所述任意服务器在接收到所述热部署操作结果查询请求后发送的热部署状态结果。
进一步地,所述服务器集群中的任意一个服务器还用于:在重启后,动态初始化最后一次成功部署的jar包组件。
进一步地,所述服务器集群中的各个服务器封装有jar包加载部署工具类,所述jar包加载部署工具类提供加载部署jar包组件、获取jar包组件内置类及卸载jar包组件功能,支持部署多业务不同jar包资源。
本发明实施例提供的jar包组件热部署方法及系统,通过在用户终端发送的发布请求中包含jar包三要素或jarurl地址,根据jar包三要素及私服仓库地址获取jar包组件在私服仓库的存储地址,进而下载jar包组件并完成热部署操作,或,根据jarurl地址下载jar包组件并完成热部署操作,实现了在不重启服务器模式下实现jar包部署上线正式环境,降低了对接业务方之间的沟通、对接、联调等成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的jar包组件热部署方法流程图;
图2是本发明一实施例提供的jar包组件热部署方法流程示意图;
图3是本发明一实施例提供的jar包组件热部署方法中文本工具中html标签内容示例图;
图4是本发明一实施例提供的jar包组件热部署方法中浏览器中html标签内容示例图;
图5是本发明一实施例提供的jar包组件热部署交互示意图;
图6是本发明一实施例提供的jar包组件热部署系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明一实施例提供的jar包组件热部署方法流程图。如图1所示,所述方法包括:
步骤101、用户终端发送发布请求至服务器集群中的任意一个服务器,接收所述发布请求的服务器为发布请求接收服务器,所述发布请求包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息,或,所述发布请求包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在私服仓库的存储地址,所述执行部署服务器集群是所述服务器集群的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器。
用户终端是用户发送jar包组件的发布请求的终端,可以提供用户操作功能界面供用户便捷操作。服务器集群是由多台服务器构成的集群,用户终端可以在服务器集群中任意选择一个或多个服务器进行jar包组件的热部署。在需要进行jar包组件的热部署时,用户终端发送发布请求至服务器集群中的任意一个服务器,这个服务器可以是待部署jar包组件的服务器,也可以不是待部署jar包组件的服务器,为便于区分,称接收到用户终端发送的发布请求的服务器为发布请求接收服务器。
用户终端发送的发布请求可以包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息。其中,jar包三要素包括groupid(可以理解为项目的唯一标识)、artifactid(可以理解为项目下文件唯一标识)、version(可以理解为文件版本号),作为业界标准,可唯一标识一个jar文件在私服仓库中的目录位置,唯一标识一个jar坐标信息。所述发布请求还可以包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在私服仓库的存储地址。可以在用户终端直接存储jar包组件的jarurl地址,jar包组件的jarurl地址可由人工在私服仓库获取并存储在用户终端。所述执行部署服务器集群是所述服务器集群的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器。也即,用户终端可以在服务器集群中选择待部署jar包组件的服务器构成执行部署服务器集群,从而实现针对线上服务器实现可选择性的灰度热部署。其中,执行部署服务器集群可以包括发布请求接收服务器自身。
步骤102、所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群,所述执行部署服务器集群的各个服务器根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,根据所述存储地址下载所述jar包组件并完成热部署操作,或,所述执行部署服务器集群的各个服务器根据所述jarurl地址下载所述jar包组件并完成热部署操作。
所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群,由于jar包三要素可唯一标识一个jar文件在私服仓库中的目录位置,唯一标识一个jar坐标信息,因此根据jar包三要素及私服仓库地址可以获取所述jar包组件在所述私服仓库的存储地址。执行部署服务器集群的各个服务器可以根据jar包组件在私服仓库的存储地址下载所述jar包组件并完成热部署操作。执行部署服务器集群的各个服务器还可以根据jarurl地址下载jar包组件并完成热部署操作。
本发明实施例中,jar包三要素没有和项目程序文件存储在一起,通过groupid、artifactid、version三要素,匹配私服仓库地址,可以使用org.jsoup解析出jar资源地址,在不重启服务器的情况下实现热部署。采用此方式好处是简单、方便,不需要依赖额外环境或maven配置。
本发明实施例通过在用户终端发送的发布请求中包含jar包三要素或jarurl地址,根据jar包三要素及私服仓库地址获取jar包组件在私服仓库的存储地址,进而下载jar包组件并完成热部署操作,或,根据jarurl地址下载jar包组件并完成热部署操作,实现了在不重启服务器模式下实现jar包部署上线正式环境,降低了对接业务方之间的沟通、对接、联调等成本。
进一步地,基于上述实施例,所述根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,具体包括:根据所述jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求所述私服仓库目录地址获取对应的html标签,解析所述html标签获取所述jar包组件在所述私服仓库的存储地址。
执行部署服务器集群的各个服务器根据jar包三要素及私服仓库地址拼接得到私服仓库目录地址。私服仓库目录地址如表示为:【私服仓库地址 "/" groupid "/" artifactid "/" version”】。请求这个地址,获取html标签内容,解析出来jar包在私服仓库的具体地址(jarurl),然后下载这个jar包文件,进而完成热部署操作。
在上述实施例的基础上,本发明实施例通过根据jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求私服仓库目录地址获取对应的html标签,解析html标签获取jar包组件在私服仓库的存储地址,实现了jar包组件在私服仓库的存储地址的快速获取。
进一步地,基于上述实施例,所述发布请求还包括用户终端标识,在所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群之前,所述方法还包括:所述发布请求接收服务器将所述用户终端标识发送至权限控制中心,以供所述权限控制中心验证所述用户终端标识对应用户终端的发布权限;在所述权限控制中心对所述用户终端标识对应用户终端的发布权限验证通过后,所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息。
所述发布请求还包括用户终端标识,发布请求接收服务器接收到发布请求后,首先将所述用户终端标识发送至权限控制中心,以供所述权限控制中心验证所述用户终端标识对应用户终端的发布权限。若权限控制中心对所述用户终端标识对应用户终端的发布权限验证通过,则向发布请求接收服务器返回权限确认信息。若验证未通过,则权限控制中心向发布请求接收服务器发送拒绝发布的指示信息。
发布请求接收服务器接收到权限控制中心发送的权限确认信息后,则进一步执行将所述发布请求发送至所述执行部署服务器集群的操作;若用户终端不具有发布权限则终止操作。
在上述实施例的基础上,本发明实施例通过在对用户终端进行发布权限验证后再将发布请求发送至执行部署服务器集群,提高了系统安全性。
进一步地,基于上述实施例,在所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息之后,所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群之前,所述方法还包括:所述发布请求接收服务器获取发布锁,从而获取并行发送所述发布请求至所述执行部署服务器集群的权限;以及,在所述执行部署服务器集群中的各个服务器完成热部署操作之后,释放所述发布锁。
所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息之后,获取发布锁,从而获取并行发送所述发布请求至所述执行部署服务器集群的权限,然后将所述发布请求发送至所述执行部署服务器集群。在所述执行部署服务器集群中的各个服务器完成热部署操作之后,释放所述发布锁。
本发明实施例通过在将发布请求发送至执行部署服务器集群之前获取发布锁,在执行部署服务器集群中的各个服务器完成热部署操作之后释放发布锁,有利于节约系统资源。
进一步地,基于上述实施例,在所述根据所述存储地址下载所述jar包组件并完成热部署操作之后或在所述根据所述jarurl地址下载所述jar包组件并完成热部署操作之后,所述方法还包括:,所述执行部署服务器集群中的各个服务器将操作记录进行数据存储。
执行部署服务器集群中的各个服务器在根据所述存储地址下载所述jar包组件并完成热部署操作之后或在所述根据所述jarurl地址下载所述jar包组件并完成热部署操作之后,将操作记录进行数据存储。所述操作记录包括关联发布记录id、当前执行ip、资源地址、文件内容、部署结果(成功或失败)、提示信息、执行类型、执行时间等信息。
在上述实施例的基础上,本发明实施例通过在下载jar包组件并完成热部署操作之后,将操作记录进行数据存储,有利于jar包组件部署状态查询及管理。
进一步地,基于上述实施例,所述方法还包括:所述用户终端向所述执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,所述任意服务器接收到所述热部署操作结果查询请求后,发送热部署状态结果至所述用户终端。
可以在用户终端设置功能界面,实现一键热部署jar包功能,以及集群环境下热部署详细操作记录查看服务,可查看热部署过程中每一步操作的结果状态。所述用户终端向所述执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,所述任意服务器接收到所述热部署操作结果查询请求后,发送热部署状态结果至所述用户终端,比如将部署成功或部署失败的信息发送至所述用户终端。
在上述实施例的基础上,本发明实施例通过用户终端向执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,进行热部署状态结果查询,实现了热部署状态有效管理。
进一步地,基于上述实施例,所述方法还包括:所述服务器集群中的任意一个服务器重启后,动态初始化最后一次成功部署的jar包组件。
研发的功能程序文件都是加载到jvm内存(操作系统分配的一块儿内存空间)中的,服务器重启后上次热加载的jar程序文件就不存在了,为了保证原来热部署jar组件功能还能正常使用,需要重新初始化此前最后一次成功部署的jar组件。因此,在服务器重启后,动态初始化最后一次成功部署的jar包组件。
比如:
2020.04.2110:11:20时刻服务器a应用--------发布jar热部署------------>xxx-demo-v1.jar
2020.04.2118:31:29时刻服务器a应用--------发布jar热部署------------>xxx-demo-v2.jar
2020.05.1109:21:05时刻服务器a应用--------发布jar热部署------------>xxx-demo-v3.jar
服务器a在三个时间点发布三个版本jar包,当下次服务a重启情况下会按照时间点倒序自动加载最后一次成功部署的jar包资源(2020.05.11部署的jar包组件)。
在上述实施例的基础上,本发明实施例在服务器集群中的任意一个服务器重启后,动态初始化最后一次成功部署的jar包组件,保障了系统可靠性。
进一步地,基于上述实施例,所述服务器集群中的各个服务器封装有jar包加载部署工具类,所述jar包加载部署工具类提供加载部署jar包组件、获取jar包组件内置类及卸载jar包组件功能,支持部署多业务不同jar包资源。
封装通用jar包加载部署工具类(可以通过继承urlclassloader类实现),提供以下方法:
(1)加载部署jar(loadjar),(2)获取jar包内置class(loadclass),(3)卸载jar包资源(unloadjar)。
jar包加载部署工具类支持部署多业务不同jar包资源,可自定义名称维护在内存中,比如:部署a业务的axxx.jar,部署b业务的bxxx.jar,部署c业务的cxxx.jar。
在内存中映射维护如下:
axxxname-------------axxx.jar资源
bxxxname-------------bxxx.jar资源
cxxxname-------------cxxx.jar资源
名称可自定义,当使用指定业务jar资源时可根据名称获取。
在上述实施例的基础上,本发明实施例通过设置jar包加载部署工具类进行加载部署jar包组件、获取jar包组件内置类及卸载jar包组件,以及支持部署多业务不同jar包资源,提高了实用性。
图2是本发明一实施例提供的jar包组件热部署方法流程示意图。如图2所示:
备注1:
【通过jar包三要素】方式
根据三要素拼接好私服仓库目录地址(这个地址就是私服仓库一个目录的地址),请求这个地址,获取html标签内容,解析出来jar包在私服仓库的具体地址(jarurl),然后下载这个jar包文件。
(eg:groupid=com.xxx.contract、artifactid=contract-controls、version=1.1.28-snapshot)
请求“maven私服仓库服务”,获取html标签内容,通过jsoup解析html标签,获取具体的jar访问地址
(eg:http://maven.xxxxxx.com/content/groups/xx-search-group/com/xxx/contract/contract-controls/1.1.28-snapshot/contract-controls-1.1.28-20200507.071329-4.jar)
【通过jarurl】方式
jarurl方式简单,不需要经过一系列解析再获取到jarurl。但是在程序员开发过程中所面对的都是jar三要素,如果提供jar三要素使用起来会更方便一点。jarurl方式只是人工去私服仓库找到该文件的url地址,只是人工做了解析那一步了。从使用方便程度来说,jar三要素更方便、更快捷,不需要人工参与。
图3是本发明一实施例提供的jar包组件热部署方法中文本工具中html标签内容示例图。图4是本发明一实施例提供的jar包组件热部署方法中浏览器中html标签内容示例图。
图5是本发明一实施例提供的jar包组件热部署交互示意图。如图5所示,feclient(用户终端)发送发布请求至发布请求接收server,发布请求接收server发布权限校验信息至用户中心(权限控制中心),权限控制中心返回权限确认信息。发布请求接收server获取发布锁,获取并发权限,并将结果异步返回至用户终端。发布请求接收server分发请求集群各台服务器执行部署,执行部署server集群中的各个服务器请求maven私服仓库获取jar资源,获取到jar资源进行加载部署操作。发布请求接收server释放发布锁。feclient发送查询发布结果信息至执行部署server集群中的任意一个服务器,并服务器返回的接收热部署状态结果。
“发布接收请求server”接收参数示例:
jar包三要素:groupid、artifactid、version
欲发布热部署服务器列表serverips:[10.26.14.41,10.33.150.163,10.33.158.73]
根据serverips分发至各台服务器上执行热部署操作。
本发明实施例提供的jar包组件热部署方法具有如下特点:
1、基于jar包(多文件)方式加载部署,可用于开发测试、生产环境,灵活度高,可自主实现类的加载、卸载。
2、jar包文件下载不需要本地安装maven环境,可通过“三要素”定位“私服仓库”jar包文件目录,解析html标签,获取最新的jar资源具体位置。采用此方式好处是简单、方便,不需要依赖额外环境或maven配置。
3、可灵活加载系统外部、内部jar资源文件,只需提供三要素或jar具体地址即可
4、简单易用,对外依赖比较少。
本发明实施例提供的jar包组件热部署方法,支持jarurl地址方式、jar三要素方式热部署,可以实时动态解析当前最新jar信息;用户针对线上服务器可选择性的灰度热部署上线,即:用户可以选择要部署的服务器进行操作;提供本次热部署操作结果检索、本次部署各集群服务器热部署详细状态结果检索(可查看本次操作各服务器部署是否成功);针对服务重启情况可以动态初始化此前最新一次成功部署jar包资源。
图6是本发明一实施例提供的jar包组件热部署系统的结构示意图。如图6所示,所述系统包括:用户终端10、服务器集群20及私服仓库30,其中:所述用户终端10用于发送发布请求至所述服务器集群20中的任意一个服务器,接收所述发布请求的服务器为发布请求接收服务器,所述发布请求包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息,或,所述发布请求包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在所述私服仓库30的存储地址,所述执行部署服务器集群是所述服务器集群20的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器;所述发布请求接收服务器用于将所述发布请求发送至所述执行部署服务器集群;所述执行部署服务器集群的各个服务器用于根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库30的存储地址,根据所述存储地址下载所述jar包组件并完成热部署操作,或,所述执行部署服务器集群的各个服务器用于根据所述jarurl地址下载所述jar包组件并完成热部署操作。。
本发明实施例通过在用户终端发送的发布请求中包含jar包三要素或jarurl地址,根据jar包三要素及私服仓库地址获取jar包组件在私服仓库的存储地址,进而下载jar包组件并完成热部署操作,或,根据jarurl地址下载jar包组件并完成热部署操作,实现了在不重启服务器模式下实现jar包部署上线正式环境,降低了对接业务方之间的沟通、对接、联调等成本。
进一步地,所述执行部署服务器集群的各个服务器在用于根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库30的存储地址时,具体用于:根据所述jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求所述私服仓库目录地址获取对应的html标签,解析所述html标签获取所述jar包组件在所述私服仓库30的存储地址。
在上述实施例的基础上,本发明实施例通过根据jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求私服仓库目录地址获取对应的html标签,解析html标签获取jar包组件在私服仓库的存储地址,实现了jar包组件在私服仓库的存储地址的快速获取。
进一步地,所述发布请求还包括用户终端标识,在所述发布请求接收服务器用于将所述发布请求发送至所述执行部署服务器集群之前,所述发布请求接收服务器还用于:将所述用户终端标识发送至权限控制中心,以供所述权限控制中心验证所述用户终端标识对应用户终端10的发布权限;在所述权限控制中心对所述用户终端标识对应用户终端10的发布权限验证通过后,接收所述权限控制中心发送的权限确认信息。
在上述实施例的基础上,本发明实施例通过在对用户终端进行发布权限验证后再将发布请求发送至执行部署服务器集群,提高了系统安全性。
进一步地,在所述发布请求接收服务器用于接收所述权限控制中心发送的权限确认信息之后、将所述发布请求发送至所述执行部署服务器集群之前,所述发布请求接收服务器还用于:获取发布锁,从而获取并行发送所述发布请求至所述执行部署服务器集群的权限;以及,在所述执行部署服务器集群中的各个服务器完成热部署操作之后,释放所述发布锁。
本发明实施例通过在将发布请求发送至执行部署服务器集群之前获取发布锁,在执行部署服务器集群中的各个服务器完成热部署操作之后释放发布锁,有利于节约系统资源。
进一步地,所述执行部署服务器集群的各个服务器在用于根据所述存储地址下载所述jar包组件并完成热部署操作之后或在用于根据所述jarurl地址下载所述jar包组件并完成热部署操作之后,所述执行部署服务器集群的各个服务器还用于将操作记录进行数据存储。
在上述实施例的基础上,本发明实施例通过在下载jar包组件并完成热部署操作之后,将操作记录进行数据存储,有利于jar包组件部署状态查询及管理。
进一步地,所述用户终端10还用于:向所述执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,以及接收所述任意服务器在接收到所述热部署操作结果查询请求后发送的热部署状态结果。
在上述实施例的基础上,本发明实施例通过用户终端向执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,进行热部署状态结果查询,实现了热部署状态有效管理。
进一步地,所述服务器集群20中的任意一个服务器还用于:在重启后,动态初始化最后一次成功部署的jar包组件。
在上述实施例的基础上,本发明实施例在服务器集群中的任意一个服务器重启后,动态初始化最后一次成功部署的jar包组件,保障了系统可靠性。
进一步地,所述服务器集群20中的各个服务器封装有jar包加载部署工具类,所述jar包加载部署工具类提供加载部署jar包组件、获取jar包组件内置类及卸载jar包组件功能,支持部署多业务不同jar包资源。
在上述实施例的基础上,本发明实施例通过设置jar包加载部署工具类进行加载部署jar包组件、获取jar包组件内置类及卸载jar包组件,以及支持部署多业务不同jar包资源,提高了实用性。
本发明实施例提供的系统是用于上述方法的,具体功能可参照上述方法流程,此处不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
1.一种jar包组件热部署方法,其特征在于,包括:
用户终端发送发布请求至服务器集群中的任意一个服务器,接收所述发布请求的服务器为发布请求接收服务器,所述发布请求包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息,或,所述发布请求包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在私服仓库的存储地址,所述执行部署服务器集群是所述服务器集群的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器;
所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群,所述执行部署服务器集群的各个服务器根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,根据所述存储地址下载所述jar包组件并完成热部署操作,或,所述执行部署服务器集群的各个服务器根据所述jarurl地址下载所述jar包组件并完成热部署操作。
2.根据权利要求1所述的jar包组件热部署方法,其特征在于,所述根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,具体包括:
根据所述jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求所述私服仓库目录地址获取对应的html标签,解析所述html标签获取所述jar包组件在所述私服仓库的存储地址。
3.根据权利要求1所述的jar包组件热部署方法,其特征在于,所述发布请求还包括用户终端标识,在所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群之前,所述方法还包括:
所述发布请求接收服务器将所述用户终端标识发送至权限控制中心,以供所述权限控制中心验证所述用户终端标识对应用户终端的发布权限;在所述权限控制中心对所述用户终端标识对应用户终端的发布权限验证通过后,所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息。
4.根据权利要求3所述的jar包组件热部署方法,其特征在于,在所述发布请求接收服务器接收所述权限控制中心发送的权限确认信息之后,所述发布请求接收服务器将所述发布请求发送至所述执行部署服务器集群之前,所述方法还包括:
所述发布请求接收服务器获取发布锁,从而获取并行发送所述发布请求至所述执行部署服务器集群的权限;以及,在所述执行部署服务器集群中的各个服务器完成热部署操作之后,释放所述发布锁。
5.根据权利要求1所述的jar包组件热部署方法,其特征在于,在所述根据所述存储地址下载所述jar包组件并完成热部署操作之后或在所述根据所述jarurl地址下载所述jar包组件并完成热部署操作之后,所述方法还包括:所述执行部署服务器集群中的各个服务器将操作记录进行数据存储。
6.根据权利要求5所述的jar包组件热部署方法,其特征在于,所述方法还包括:所述用户终端向所述执行部署服务器集群中的任意服务器发送热部署操作结果查询请求,所述任意服务器接收到所述热部署操作结果查询请求后,发送热部署状态结果至所述用户终端。
7.根据权利要求1所述的jar包组件热部署方法,其特征在于,所述方法还包括:
所述服务器集群中的任意一个服务器重启后,动态初始化最后一次成功部署的jar包组件。
8.根据权利要求1所述的方法,其特征在于,所述服务器集群中的各个服务器封装有jar包加载部署工具类,所述jar包加载部署工具类提供加载部署jar包组件、获取jar包组件内置类及卸载jar包组件功能,支持部署多业务不同jar包资源。
9.一种jar包组件热部署系统,其特征在于,包括用户终端、服务器集群及私服仓库,其中:
所述用户终端用于发送发布请求至所述服务器集群中的任意一个服务器,接收所述发布请求的服务器为发布请求接收服务器,所述发布请求包括待部署jar包组件的jar包三要素及执行部署服务器集群的信息,或,所述发布请求包括待部署jar包组件的jarurl地址及执行部署服务器集群的信息,所述jarurl地址是所述jar包组件在所述私服仓库的存储地址,所述执行部署服务器集群是所述服务器集群的子集,所述执行部署服务器集群包括至少一个待部署所述jar包组件的服务器;
所述发布请求接收服务器用于将所述发布请求发送至所述执行部署服务器集群;所述执行部署服务器集群的各个服务器用于根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址,根据所述存储地址下载所述jar包组件并完成热部署操作,或,所述执行部署服务器集群的各个服务器用于根据所述jarurl地址下载所述jar包组件并完成热部署操作。
10.根据权利要求9所述的jar包组件热部署系统,其特征在于,所述执行部署服务器集群的各个服务器在用于根据所述jar包三要素及私服仓库地址获取所述jar包组件在所述私服仓库的存储地址时,具体用于:根据所述jar包三要素及私服仓库地址拼接得到私服仓库目录地址,请求所述私服仓库目录地址获取对应的html标签,解析所述html标签获取所述jar包组件在所述私服仓库的存储地址。
技术总结