一种基于数据路由的传统BS应用多租户化系统的制作方法

文档序号:17180320发布日期:2019-03-22 20:50阅读:258来源:国知局
一种基于数据路由的传统BS应用多租户化系统的制作方法

本发明属于计算机软件领域,尤其涉及一种基于数据路由的传统bs应用多租户化系统。



背景技术:

目前,业内常用的现有技术是这样的:

在云计算没提出之前,基于j2ee架构体系的web应用产品就很多,都是卖许可的模式。云时代下,提倡产品由卖许可的模式转换为卖服务模式,即实现线上租用,需要产品具备多租户特性。

多租户特性是云计算技术中核心的功能特性,存量系统需要云化,需要多租户化,就需要有好的技术来解决。传统b/s软件的多租户化要考虑到现有软件的技术多样性,同时又可以融合现有云计算技术。

综上所述,现有技术存在的问题是:

采用现有技术,一个web软件产品由单租户模式升级为多租户模式需要很大的工作量。一种方式是调整数据结构、重构程序,一种方式是引入中间件技术和平台进行包装。

程序调整,代码重构,除了大量的开发工作以外,还需要进行详尽的测试工作,整个软件工程周期下来会耗费大量的人力。而且还需要很好的规划和架构,会存在很大的风险。

采用中间技术平台,主流的是采用docker容器技术来实现多租户。web应用开发技术团队需要熟悉docker整个技术体系,要额外搭建docker平台,还需要对容器复制接口进行包装。实现完整多租户特性需要付出很大的技术成本。

docker镜像模式实现多租户是资源独享模式,很耗费资源,为用户增加了额外的资源成本,同类产品价格上会失去优势,降低了可运营性。

在升级方面,每个租户都是一套程序实例,租户越多版本管理越复杂。会增加很多运维成本。

解决上述技术问题的意义:

采用数据路由实现web应用多租户化,是资源共享模式,是高资源利用率的技术实现方式,可复制性很强。

快速低成本将web应用多租户化,企业改变软件产品的销售模式,从软件卖许可模式变为租用模式,提升企业竞争力。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于数据路由的传统bs应用多租户化系统。因此发明数据路由技术来实现资源共享模式,提高资源利用率,同时可实现docker容器机制的无缝切换,满足实际运营过程中用户的各类需求。

本发明是这样实现的,一种基于数据路由的传统bs应用多租户化系统,其所述基于数据路由的传统bs应用多租户化系统包括:

线程包装器:线程包装是为了实现租户标识隐式传递到后续应用程序中。每个bs应用多租户化改造都需要进行线程安全检查和包装工作,并在http线程中设置租户标识信息,运行线程及子线程树里的任何位置都可以获取到租户标识并使用。

数据库路由:多租户数据库模型采用schema或独立dbinstance模式,每个租户对应的数据库实现一个数据源。将所有数据源建立一个资源池根据路由映射表管理起来,提供给需要使用数据源的程序使用,实现rdms运行时及持久化数据隔离。

文件路由:提供文件读写接口,供应用程序调用,实现文件运行时及持久化数据隔离;

缓存路由:提供缓存读写接口,供应用程序调用,实现缓存运行时,缓存内容数据隔离。

进一步,数据库路由:

采用独立schema方式定义租户数据库,每一个租户定义一个datasource,把租户标识id和datasource的实例信息存储到映射表中;在系统运行过程中,负责根据租户id获取到对应的数据源连接实例,并执行租户数据sql;

采用jdbc标准,实现对多种rsdb的支持;为用户提供数据路由sdk包,并提供多租户数据源实现;同时提供数据源连接配置、数据源监控。

进一步,文件路由:

采用javaio接口实现文件的读写操作;实现javaio接口的代理接口类,方法名称和参数保持一致;

通过线程的方式获取到租户标识id,代理的接口实现类中重写文件读写操作,适配到特定的存储系统中;

以目录方式对租户文件进行隔离,同时提供数据的导入导出接口,数据统计接口,以sdk包的形式提供给用户。

进一步,缓存路由:

缓存路由提供标准接口,进行多个缓存框架的基本动作和属性,同时实现多缓存框架的适配;以sdk包的形式提供给用户。

进一步,线程包装器:

采用线程机制配合到数据路由,对数据库操作部分实现零代码改造,实现数据隔离;

在功能请求阶段,将租户标识id放入线程中,在数据存储之前,数据路由从线程中取出租户标识id,并传递给后续逻辑处理;

webhttp请求中增加filter,实现线程包装和参数传递,实现每次http请求线程安全;

非http请求实现应用代理类,代理类中的每个方法都增加tenantid参数,显式传递租户标识id;以sdk包的形式提供给用户。

本发明的另一目的在于提供一种实现所述基于数据路由的传统bs应用多租户化系统运行功能的计算机程序。

本发明的另一目的在于提供一种实现所述基于数据路由的传统bs应用多租户化系统运行功能的信息数据处理终端。

本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于数据路由的传统bs应用多租户化系统运行功能。

本发明的另一目的在于提供一种搭载项所述基于数据路由的传统bs应用多租户化系统的多租户数据信息共享平台。

综上所述,本发明的优点及积极效果为:

本发明基于java技术体系提供通用框架和改造技术方法,实现对现有web应用进行技术升级改造,由单租户模式升级为多租户模式。多租户化改造过程要降低对原有应用的影响,技术方法和框架可以支持经过最小的改动就能实现云化过程。

多租户化过程主要是实现租户数据运行时和持久化隔离的问题,在不破坏原有系统运行逻辑的前提下,多个租户可以同时使用一套系统实例,为每个租户提供一个独立的虚拟通道,实现运行时数据和持久化数据的隔离。

传统b/s架构web软件是非云架构,引入路由机制,可升级成云架构,帮助企业实现产品由卖许可模式转变为在线运营租用模式。

帮助软件企业实现现有产品快速多租户化云化,减少技术改造投入成本;

借助数据路由,将web应用多租户化需要1~2人周时间,比自主改造模式简单,好操作,时间能节省4人月左右。

提高云模式下接入系统的资源利用率,比docker模式高出20倍。

对比效果说明:

附图说明

图1是本发明实施例提供的于数据路由的传统bs应用多租户化系统示意图。

图中:1、线程包装器;2、数据库路由;3、文件路由;4、缓存路由。

图2是本发明实施例提供的于数据路由的传统bs应用多租户化系统的数据路由示意图。

图3是本发明实施例提供的文件路由示意图。

图4是本发明实施例提供的线程包装器示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明基于java技术体系提供通用框架和改造技术方法,实现对现有web应用进行技术升级改造,由单租户模式升级为多租户模式。多租户化改造过程要降低对原有应用的影响,技术方法和框架可以支持经过最小的改动就能实现云化过程。

根据技术方法的定义,已经提供了默认的数据路由和线程包装器sdk,web应用改造者可以直接根据技术方法对代码进行微调,同时加入现有框架包,实现多租户化改造。

改造datasource:找到数据源配置点,更改成mulittenantdatasource。

扫描代码,查找javaio调用的地方,把包路径替换成javaio代理类的包路径。

如果有使用缓存,改写现有代码,直接使用缓存框架的接口,并修改参数适配到当前使用的缓存框架。

修改web.xml增加线程包装器filter。

也可以根据技术方法的定义,重新实现数据路由和线程包装器,和现有工程应用做深度融合。

下面结合具体分析对本发明的应用作进一步描述。

如图1,本发明实施例提供的于数据路由的传统bs应用多租户化系统,包括:

线程包装器1:确保每次应用请求都是线程安全的。

数据库路由2:确保rdms运行时及持久化的数据隔离。

文件路由3:确保文件运行时及持久化的数据隔离。

缓存路由4:确保缓存的运行时及缓存内容数据隔离。

其中,

1)数据路由

数据路由是持久化数据隔离的关键点,隔离的数据包括存储到数据库的数据,文件系统的数据和缓存中间件中的数据。不同类型的数据存储隔离需要不同的技术机制实现。

数据库路由:

采用独立schema方式定义租户数据库,每一个租户定义一个datasource,把租户标识id和datasource的实例信息存储到映射表中。在系统运行过程中,数据路由负责根据租户id获取到对应的数据源连接实例,并执行租户数据sql。如图2。

采用jdbc标准,实现对多种rsdb的支持;为用户提供数据路由sdk包,并提供多租户数据源实现;同时要提供数据源连接配置,数据源监控等辅助工具。

文件路由:

web应用中都采用javaio接口实现文件的读写操作。实现一个javaio接口的代理接口类,方法名称和参数保持一致,通过线程的方式获取到租户标识id,代理的接口实现类中重写文件读写操作,适配到特定的存储系统中。如图3.

以目录方式对租户文件进行隔离,同时提供数据的导入导出接口,数据统计接口,以sdk包的形式提供给用户使用。

缓存路由:

由于缓存没有固定的标准规范,java技术体系内有多个缓存框架。缓存路由提供一个标准接口,抽象多个缓存框架的基本动作和属性,同时实现多缓存框架的适配。以sdk包的形式提供给用户使用。

线程包装器:

web多租户化改造的难点是如何降低对原有代码的影响,采用线程机制配合到数据路由,对数据库操作部分实现零代码改造,实现数据隔离。在功能请求阶段,将租户标识id放入线程中,在数据存储之前,数据路由从线程中取出租户标识id,并传递给后续处理逻辑使用。如图4.

webhttp请求过程中增加filter,实现线程包装和参数传递,确保每次http请求都是线程安全的。非http请求需实现应用代理类,代理类中的每个方法都要多增加一个tenantid参数,来显式传递租户标识id。线程包装器以sdk包的形式提供给用户使用。

中服云的软件超市里的部分软件就是使用路由模式实现多租户云化的。具体的实现软件包括综合办公管理、合同管理、中服hr高校版、crm系统等。产品租户云化完可以上架中服软超,也可以自主搭建独立运营。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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