一种基于数据路由的传统BS应用多租户化系统技术方案

技术编号:20657350 阅读:52 留言:0更新日期:2019-03-23 08:44
本发明专利技术属于计算机软件领域,公开了一种基于数据路由的传统BS应用多租户化系统,包括:线程包装器:用于每次应用请求线程的安全性;数据库路由:用于RDMS运行时及持久化数据隔离;文件路由:用于文件运行时及持久化数据隔离;缓存路由:用于缓存运行时,缓存内容数据隔离。本发明专利技术实现对现有Web应用进行技术升级改造,由单租户模式升级为多租户模式;多租户化改造过程要降低对原有应用的影响,本发明专利技术可以支持经过最小的改动就能实现云化过程。

A Multi-tenancy System for Traditional BS Applications Based on Data Routing

The invention belongs to the field of computer software, and discloses a multi-tenancy system for traditional BS application based on data routing, which includes thread wrapper: security for each application request thread; database routing: data isolation for RDMS runtime and persistence; file routing: data isolation for file runtime and persistence; cache routing: data isolation for cache runtime. Cached content data isolation. The invention realizes the technical upgrading and transformation of the existing Web application from single tenant mode to multi-tenant mode, and the multi-tenant transformation process can support the cloud process through the smallest modification in order to reduce the impact on the original application.

【技术实现步骤摘要】
一种基于数据路由的传统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代理类的包路径。如果有使用缓存,改写现有代码本文档来自技高网
...

【技术保护点】
1.一种基于数据路由的传统BS应用多租户化系统,其特征在于,所述基于数据路由的传统BS应用多租户化系统包括:线程包装器:用于实现租户标识信息传递到后续应用程序中;数据库路由:采用Schema或独立DB instance模式,每个租户对应的数据库中的所有数据源建立一个资源池,根据路由映射表进行管理,实现RDMS运行时及持久化数据隔离;文件路由:提供文件读写接口,供应用程序调用,实现文件运行时及持久化数据隔离;缓存路由:提供缓存读写接口,供应用程序调用,实现缓存运行时,缓存内容数据隔离。

【技术特征摘要】
1.一种基于数据路由的传统BS应用多租户化系统,其特征在于,所述基于数据路由的传统BS应用多租户化系统包括:线程包装器:用于实现租户标识信息传递到后续应用程序中;数据库路由:采用Schema或独立DBinstance模式,每个租户对应的数据库中的所有数据源建立一个资源池,根据路由映射表进行管理,实现RDMS运行时及持久化数据隔离;文件路由:提供文件读写接口,供应用程序调用,实现文件运行时及持久化数据隔离;缓存路由:提供缓存读写接口,供应用程序调用,实现缓存运行时,缓存内容数据隔离。2.如权利要求是所述的基于数据路由的传统BS应用多租户化系统,其特征在于,数据库路由采用独立Schema方式定义租户数据库中,每一个租户定义一个DataSource,把租户标识ID和DataSource的实例信息存储到映射表中;在系统运行过程中,负责根据租户ID获取到对应的数据源连接实例,并执行租户数据SQL;数据库路由采用JDBC标准中,实现对多种RSDB的支持;为用户提供数据路由SDK包,并提供多租户数据源实现;同时提供数据源连接配置、数据源监控。3.如权利要求是所述的基于数据路由的传统BS应用多租户化系统,其特征在于,文件路由采用JavaIO接口实现文件的读写操作中,用于实现JavaIO接口的代理接口类,方法名称和参数保持一致;文件路由还通过线程的方式获取到租户标识ID;代理的接口用于实现类中重写文件读写操作,适配到特定的存储系统中;文件路由...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:西安中服软件有限公司
类型:发明
国别省市:陕西,61

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1