一种快速多租户的web应用环境的实现方法
文献发布时间:2024-04-18 20:02:40
技术领域
本发明属于IT服务器技术领域,尤其涉及一种快速多租户的web应用环境的实现方法。
背景技术
多租户技术是一种软件架构技术,它可以实现在共用的数据中心内,以单一系统架构与服务给多个客户端提供相同服务,甚至可定制化的服务,并且仍然可以保障客户的数据隔离。
随着互联网规模的不断增大,多租户技术的使用的范围越来愈大随之而来的一些问题也产生了。多租户架构的应用软件虽可定制,但定制难度较高,通常需要平台层的支持与工具的支持,才可降低定制化的复杂度。
目前主流服务器服务器如tomcat,jetty等都不能在一容器中启动一个应用多个实例,也不能很人性化的改动服务端口,因为服务端口需要提前注册到tomcat,jetty的静态配置setting.xml文件中,如果改动则需要该更配置文件,然后重新启动。而应用在配置文件中对应的id必须唯一,这样某种程度上造成一个应用不能起多个实例。
随着应用和服务量越来越大,应用集群化的需求越来越迫切,上述tomcat和jetty也不支持构建一个混合的应用集群。
发明内容
本发明所要解决的技术问题是针对背景技术的不足提供一种快速多租户的web应用环境的实现方法;在遵循Java标准,可运行标准的jar/war包的容器的基础上,支持通过启动命令实现一个应用可以部署多个实例,支持可以动态配置服务端口,支持快速部署一个应用集群,实现应用集群化,服务负载均衡化。
本发明为解决上述技术问题采用以下技术方案:
一种快速多租户的web应用环境的实现方法,具体包含如下步骤;
步骤1,根据应用目录的结构,将多个应用的发布包按照应用id,版本进行存放;
步骤2,在运行时,启动指定应用id,指定版本的应用包;
步骤3,在启动时,应用环境ketty为不同的应用实例自动选择服务端口,并将服务信息注册到ZooKeeper目录中,用于服务发现和负载均衡,实现集群多租户。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤1中,应用目录的结构采用可运行标准的jar/war包。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤2中,运行流程具体如下:
步骤2.1,输入启动命令;
步骤2.2,判断port是否为空,如果为空,则服务器按一定规则动态分配一个空闲端口;如果不为空,则使用指定的端口;
步骤2.3,判断version是否为空,如果为空则选用.version文件里面指定的版本,如果不为空则用输入命令中指定的版本;
步骤2.4,载入3中指定应用的运行包,在指定端口启动该应用;
步骤2.5,通过步骤2.1至步骤2.5,实现一个应用部署多个实例,和动态指定应用的服务端口。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤2.1中,命令包含必须参数app:应用id,可配参数port:端口,version:版本号,labels:标注。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤3中,搭建集群模式运行,具体如下:
步骤3.1,当在ketty中启动一个应用实例的时候,ketty通过armClient会把该实例的相关信息注册到Zookeeper中。
步骤3.2,当前端接收到服务请求的时候,通过ARM了解到之前在Zookeeper中注册过的信息,LoadBalance Agent再根据一定的规则去某个实例访问服务,实现的服务的负载均衡。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤1中,目录结构包含:alogic-apps:存放jar包顶级目录。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤1中,目录结构包含:alogic-webapps:存放war包顶级目录。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤1中,目录结构包含<应用id>:应用id。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤1中,目录结构包含:.version:记录默认运行版本号。
作为本发明快速多租户的web应用环境的实现方法的进一步优选方案,在步骤1中,目录结构包含:<应用版本>:版本号,里面存放着对应的应用包。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
1、本发明在遵循Java标准,可运行标准的jar/war包的容器的基础上,支持通过启动命令实现一个应用可以部署多个实例,支持可以动态配置服务端口,支持快速部署一个应用集群,实现应用集群化,服务负载均衡化;
2、本发明提供了针对应用可以部署多个实例,支持各个版本的灰度发布;基于YARN提供弹性,可扩展的运行容器,应用可根据业务需求快速横向扩展或缩减部署规模;
3、本发明能当一个通用的Java Servlet容器,运行jar/war包;能实现应用多版本部署、灰度发布等,提供集群管理模式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种k8s工作负载可用性检测方法及系统的方法控制流程图;
图2是本发明最小堆算法的排列图;
图3是本发明基于可变加权的最小堆算法对比常规方法的实验图。
具体实施方式
下面结合附图对本发明的技术方案做进一步的详细说明:
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的应用场景:
多租户技术是一种软件架构技术,它可以实现在共用的数据中心内,以单一系统架构与服务给多个客户端提供相同服务,甚至可定制化的服务,并且仍然可以保障客户的数据隔离。多租户架构的应用软件虽可定制,但定制难度较高,通常需要平台层的支持与工具的支持,才可降低定制化的复杂度。
解决的问题:
现有的多租户技术存在以下一些问题:
当前主流服务器如tomcat,jetty不能在同一部署下启动多个实例(因为服务端口是静态写在配置文件中的,需要有多套配置文件)。
当前主流服务器如tomcat,jetty不能构建一个混合应用集群,实现集群的多租户(其采用传统方式构建的是单一应用集群)。
本发明提出一种支持快速构建多租户Web应用的应用服务器ketty实现。
该技术包括:
1)Ketty是一个标准的Java应用服务器,根据应用目录标准,支持将多个应用的发布包按照应用id,版本进行存放,在运行时,可以根据需要启动指定id,指定版本的应用包。
2)在启动时,ketty为不同的应用实例自动选择服务端口(如指定端口则用该端口),并将服务信息注册到ZooKeeper目录中,用于服务发现和负载均衡,实现集群多租户。
针对上述的一些问题,本发明主要是解决一下的问题:
在遵循Java标准,可运行标准的jar/war包的容器的基础上,支持通过启动命令实现一个应用可以部署多个实例,支持可以动态配置服务端口。
支持快速部署一个应用集群,实现应用集群化,服务负载均衡化。
托管jar/war包:应用目录的结构,具体如下:
有图1目录结构可以看到:
alogic-apps:存放jar包顶级目录;
alogic-webapps存放war包顶级目录;
<应用id>:应用id;
.version:记录默认运行版本号;
<应用版本>:版本号,里面存放着对应的应用包。
运行流程如下:根据图2流程图:
输入启动命令,命令中包含必须参数app:应用id,可配参数port:端口,version:版本号,labels:标注;
判断port是否为空,如果为空,则服务器按一定规则动态分配一个空闲端口。如果不为空,则使用指定的端口。
判断version是否为空,如果为空则选用.version文件里面指定的版本,如果不为空则用输入命令中指定的版本。
载入3中指定应用的运行包,在指定端口启动该应用。
通过上述步骤,我们就能实现一个应用部署多个实例,和动态指定应用的服务端口。
搭建集群模式:从图3可以看到集群模式运行如下:
当在ketty中启动一个应用实例的时候,ketty通过armClient会把该实例的相关信息注册到Zookeeper中;zookeeper是一个分布式协调服务。
当前端接收到服务请求的时候,通过ARM了解到之前在Zookeeper中注册过的信息,然后LoadBalance Agent再根据一定的规则去某个实例访问服务,从而实现的服务的负载均衡。
通过上述和tomcat和jetty对比,我们的方案还是很有创造性的,主要体现在以下几个方面:
本发明提供了针对应用可以部署多个实例,支持各个版本的灰度发布。基于YARN提供弹性,可扩展的运行容器,应用可根据业务需求快速横向扩展或缩减部署规模。能快速构建一个应用集群,能提供负载均衡等。
本方案是集团企业信息化部IT研发中心服务框架及分布式服务容器专题研究结果且技术已经实现。ketty服务器能当做一个通用的Java Servlet容器,运行war包和jar包。能实现应用多版本部署、灰度发布等,提供集群管理模式,等等场景中都能发挥很好作用。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内本实施例中的所有技术特征均可根据实际需要而进行自由组合。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种多租户的数据库分库实现方法
- 一种智能电视上实现快速WEB认证的方法
- 一种智能电视上实现快速WEB认证的方法