一种用于传统应用的多租户数据隔离方法及系统技术方案

技术编号:37861277 阅读:16 留言:0更新日期:2023-06-15 20:51
本发明专利技术公开了一种用于传统应用的多租户数据隔离方法及系统,属于云计算领域;所述的方法的具体步骤如下:S1管理维护租户、应用和数据源关系,应用初始化时默认连接基础数据库;S2租户登录应用系统时,请求并从header信息中获取租户ID并写入线程变量;S3根据appCode及tenantId查询基础数据库判断租户数据库是否已经存在;S4通过动态数据源切换工具,替换当前SQL执行器中数据源连接信息,执行SQL并返回执行结果,进入系统主页;S5访问系统中的其他功能则按照S1~S4依次执行;本发明专利技术方法采用配置文件+插件方式进行改造,即能够采用传统方式部署也能够采用多租户模式提供SaaS服务,降低了代码维护成本。降低了代码维护成本。降低了代码维护成本。

【技术实现步骤摘要】
一种用于传统应用的多租户数据隔离方法及系统


[0001]本专利技术公开一种用于传统应用的多租户数据隔离方法及系统,涉及云计算


技术介绍

[0002]多租户技术,或称多重租赁技术,是一种软件架构技术。其主要解决的是如何在多用户的环境下共用一个系统或者程序组件,并且确保各个用户数据的隔离性。在云计算迅速发展的今天,多租户技术被广为运用于开发云上各类服务,无论是IaaS、PaaS还是SaaS,都可以看到多租户技术的影子,其中SaaS应用与其它传统应用最大的差异特征就是多租户。
[0003]然而,目前存在大量的传统应用无法利用云计算带来的便利为用户提供SaaS服务,对于目前主流的多租户升级方案存在以下几点问题:
[0004]使用共享表方式,通过增加租户字段来进行隔离,此种方法对于全新的系统而言是一种较优选择,而对于历史项目而言,需要重新梳理业务逻辑并增加租户过滤条件,升级改造成本较高。
[0005]使用数据库中间件,如MyCat等中间件通过分库方式实现隔离,而此方法需要使用中间件支持的数据库,而业务系统也需要对数据库中间件进行适配,适用场景具有一定的局限性。
[0006]目前大多数的租户升级方案都需要对业务代码进行改造,改造后造成传统应用和SaaS服务需要维护两套代码,增加了代码维护成本。
[0007]故现专利技术一种用于传统应用的多租户数据隔离方法及系统,以解决上述问题。

技术实现思路

[0008]本专利技术针对现有技术的问题,提供一种用于传统应用的多租户数据隔离方法及系统,所采用的技术方案为:一种用于传统应用的多租户数据隔离方法,所述的方法的具体步骤如下:
[0009]S1管理维护租户、应用和数据源关系,应用初始化时默认连接基础数据库;
[0010]S2租户登录应用系统时,请求并从header信息中获取租户ID并写入线程变量;
[0011]S3根据appCode及tenantId查询基础数据库判断租户数据库是否已经存在;
[0012]S4通过动态数据源切换工具,替换当前SQL执行器中数据源连接信息,执行SQL并返回执行结果,进入系统主页;
[0013]S5访问系统中的其他功能则按照S1~S4依次执行。
[0014]所述S1基础数据库为应用初始化数据库,所述基础数据库中维护租户、应用及数据源的关系信息。
[0015]所述S2在租户登录系统后首先检查是否初始化租户数据库,若未初始化则自动创建租户数据库,否则进入系统主页。
[0016]所述S3的具体步骤如下:
[0017]S31租户数据库不存在,根据appCode和tenantId创建名称租户数据库并执行业务数据库初始化脚本;
[0018]S32租户数据库存在,从线程变量中获取应用ID和租户ID,根据appCode及tenantId从基础数据库中查询数据库连接信息,并创建数据源连接。
[0019]所述S32中根据应用ID和租户ID确定当前租户的数据源连接。
[0020]一种用于传统应用的多租户数据隔离系统,所述的系统具体包括数据管理模块、信息获取模块、数据处理模块、信息处理模块和循环执行模块:
[0021]数据管理模块:管理维护租户、应用和数据源关系,应用初始化时默认连接基础数据库;
[0022]信息获取模块:租户登录应用系统时,请求并从header信息中获取租户ID并写入线程变量;
[0023]数据处理模块:根据appCode及tenantId查询基础数据库判断租户数据库是否已经存在;
[0024]信息处理模块:通过动态数据源切换工具,替换当前SQL执行器中数据源连接信息,执行SQL并返回执行结果,进入系统主页;
[0025]循环执行模块:访问系统中的其他功能则按照数据管理模块、信息获取模块、数据处理模块、信息处理模块依次执行。
[0026]所述数据管理模块基础数据库为应用初始化数据库,所述基础数据库中维护租户、应用及数据源的关系信息。
[0027]所述信息获取模块在租户登录系统后首先检查是否初始化租户数据库,若未初始化则自动创建租户数据库,否则进入系统主页。
[0028]所述数据处理模块具体包括数据库处理模块和数据连接模块:
[0029]数据库处理模块:租户数据库不存在,根据appCode和tenantId创建名称租户数据库并执行业务数据库初始化脚本;
[0030]数据连接模块:租户数据库存在,从线程变量中获取应用ID和租户ID,根据appCode及tenantId从基础数据库中查询数据库连接信息,并创建数据源连接。
[0031]所述数据连接模块中根据应用ID和租户ID确定当前租户的数据源连接。
[0032]本专利技术的有益效果为:本专利技术方法能够通过少量的改动可以将传统应用提供SaaS服务,支持多种数据库,不依赖于第三方中间件;支持动态创建租户数据库,不需要提前预先创建租户数据库;维护一套业务代码,采用配置文件+插件方式进行改造,即能够采用传统方式部署也能够采用多租户模式提供SaaS服务,降低了代码维护成本。
附图说明
[0033]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0034]图1是本专利技术方法实施例的请求数据响应流程示意图;图2是本专利技术方法实施例的
企业级分层架构示意图;图3是本专利技术方法的实施流程图。
具体实施方式
[0035]下面结合附图和具体实施例对本专利技术作进一步说明,以使本领域的技术人员可以更好地理解本专利技术并能予以实施,但所举实施例不作为对本专利技术的限定。
[0036]实施例一:
[0037]一种用于传统应用的多租户数据隔离方法,所述的方法的具体步骤如下:
[0038]S1管理维护租户、应用和数据源关系,应用初始化时默认连接基础数据库;
[0039]S2租户登录应用系统时,请求并从header信息中获取租户ID并写入线程变量;
[0040]S3根据appCode及tenantId查询基础数据库判断租户数据库是否已经存在;
[0041]S4通过动态数据源切换工具,替换当前SQL执行器中数据源连接信息,执行SQL并返回执行结果,进入系统主页;
[0042]S5访问系统中的其他功能则按照S1~S4依次执行;
[0043]本专利技术方法提供一种用于传统应用的多租户数据隔离方法,请求数据响应流程,如图1所示,数据源管理维护租户、应用和数据源之间的关系,确保租户在访问多个服务时能够连接到对应的数据源;一个业务系统可能由多个应用构成,每个应用可能共享数据源,也可能使用独立的数据源,因此需要兼容这两种场景;数据源管理主要包括租户信息表和数据源信息表;租本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于传统应用的多租户数据隔离方法,其特征是所述的方法的具体步骤如下:S1管理维护租户、应用和数据源关系,应用初始化时默认连接基础数据库;S2租户登录应用系统时,请求并从header信息中获取租户ID并写入线程变量;S3根据appCode及tenantId查询基础数据库判断租户数据库是否已经存在;S4通过动态数据源切换工具,替换当前SQL执行器中数据源连接信息,执行SQL并返回执行结果,进入系统主页;S5访问系统中的其他功能则按照S1~S4依次执行。2.根据权利要求1所述的方法,其特征是所述S1基础数据库为应用初始化数据库,所述基础数据库中维护租户、应用及数据源的关系信息。3.根据权利要求1所述的方法,其特征是所述S2在租户登录系统后首先检查是否初始化租户数据库,若未初始化则自动创建租户数据库,否则进入系统主页。4.根据权利要求1所述的方法,其特征是所述S3的具体步骤如下:S31租户数据库不存在,根据appCode和tenantId创建名称租户数据库并执行业务数据库初始化脚本;S32租户数据库存在,从线程变量中获取应用ID和租户ID,根据appCode及tenantId从基础数据库中查询数据库连接信息,并创建数据源连接。5.根据权利要求4所述的方法,其特征是所述S32中根据应用ID和租户ID确定当前租户的数据源连接。6.一种用于传统应用的多租户数据隔离系统,其特征是所述的系统具体包括数据管理模块、信息获取模块、数据处理模块、信息处理模块和循环...

【专利技术属性】
技术研发人员:颜亮玄德肖传楠高传集江燕
申请(专利权)人:上海浪潮云计算服务有限公司
类型:发明
国别省市:

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

1