CN111491012A - SaaS多租户数据隔离访问方法、装置、电子设备及存储介质 - Google Patents
SaaS多租户数据隔离访问方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111491012A CN111491012A CN202010232164.2A CN202010232164A CN111491012A CN 111491012 A CN111491012 A CN 111491012A CN 202010232164 A CN202010232164 A CN 202010232164A CN 111491012 A CN111491012 A CN 111491012A
- Authority
- CN
- China
- Prior art keywords
- tenant
- data source
- data
- information
- dynamically
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及一种SaaS多租户数据隔离访问方法、装置、电子设备及存储介质,属于计算机技术领域,该方法包括接收租户发起的访问请求;获取访问请求中携带的租户信息;根据所述租户信息,判断该租户的数据源配置信息是否已缓存;若未缓存,则动态创建所述租户的数据源;以及根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。本发明能够动态获取数据源配置信息从而动态创建数据源,实现数据源的动态切换,较为有效的提升了数据源切换的效率和扩展性。
Description
技术领域
本发明涉及计算机技术的技术领域,尤其是涉及一种SaaS多租户数据隔离访问方法、装置、电子设备及存储介质。
背景技术
SaaS 是一种软件布局模型,其应用专为网络交付而设计,便于用户通过互联网托管、部署及接入。SaaS服务通常基于一套标准软件系统为成百上千的不同客户(又称租户)提供服务。这要求SaaS服务要能够支持不同租户之间数据和配置的隔离,从而保证每个租户数据的安全与隐私,以及用户对诸如界面、业务逻辑、数据结构等的个性化需求。
多租户数据隔离主要分为两种:第一种是多个租户共享同一个数据库,产生的业务数据都在相同的数据库中,通过租户ID做数据隔离;第二种是每个租户都使用独占的数据库,各租户产生的数据都在自己的数据库中,通过独立的数据库天然实现数据隔离。目前,更多的系统采用第二种方式实现数据的隔离,那么实现多租户数据库的访问切换成为关键。
现有的方案中,可以通过硬编码方式将所有的租户的数据源访问配置信息写入代码中,在访问租户数据库时通过程序硬编码实现切换到各租户的数据源,当增加、删除或修改租户数据源配置信息时,每次都需要重新修改代码,重新部署应用,效率低下且扩展性极差。
发明内容
本发明目的一是提供一种SaaS多租户数据隔离访问方法,便于提高租户数据的隔离效果,实现各个租户的数据隔离访问,并能够动态获取数据源配置信息从而动态创建数据源,实现数据源的动态切换,较为有效的提升了数据源切换的效率和扩展性。
本发明的上述发明目的一是通过以下技术方案得以实现的:
一种SaaS多租户数据隔离访问方法,所述多租户的每个租户均配置一个独占的数据库,该方法包括以下步骤:接收租户发起的访问请求;获取访问请求中携带的租户信息;根据所述租户信息,判断该租户的数据源是否已缓存;若未缓存,则动态创建所述租户的数据源;以及,根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。
通过采用上述技术方案,每个租户配置一个独占数据库,各个租户产生的数据都存储在自己的数据库中,通过独立的数据库天然实现数据的隔离,通过租户应用在访问数据库时,对数据源配置信息的查找,能够动态切换到租户自己的数据源,实现各个租户的数据的隔离访问;并且,能够在判断租户数据源未缓存时,动态创建对应租户的数据源,实现租户的数据库的切换,克服了传统的通过程序硬编码切换到各租户数据源产生的不利情况,较为有效的提升了数据源切换的效率和扩展性。
本发明在一较佳示例中可以进一步配置为:所述获取访问请求中携带的租户信息的步骤,具体包括:拦截所述租户发起的访问请求中携带的租户信息;以及,将所述租户信息设置到本次访问请求的线程本地变量中。
本发明在一较佳示例中可以进一步配置为:所述获取访问请求中携带的租户信息的步骤,具体包括:在Spring框架中选择继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类,重写它的 preHandle来实现访问请求中的租户信息的拦截,并将租户信息设置到本次请求的线程本地变量ThreadLocal中。
本发明在一较佳示例中可以进一步配置为:所述动态创建所述租户的数据源的步骤,具体包括:查询数据源配置服务;获取数据源配置服务反馈的当前租户的数据源配置信息;根据所述数据源配置信息,动态生成当前租户的数据源;以及,将动态生成的当前租户的数据源加入数据源缓存中。
通过采用上述技术方案,在进行动态创建数据源时,首先判断缓存中是否存在该租户的数据源,如果不存在,则需要请求数据源配置服务来获取数据源配置信息,数据源配置服务,可以理解为一个具有数据源配置信息管理能力的系统,其根据应用提出的请求将对应的数据源配置信息进行反馈,以此来生成数据源,实现租户的动态数据源切换。
本发明在一较佳示例中可以进一步配置为:所述数据源配置服务为基于SpringBoot构建的微服务应用所配置的独立的应用服务,用于实时对各租户的数据源配置信息进行管理。
通过采用上述技术方案,将租户的数据源配置服务作为一个独立的应用服务来运行,可以较为简单地随时对各个租户的数据源配置信息进行管理,实现租户的动态上线,对应用做到无感知随时切换,相比于现有的引入中间件的方案导致的增加了方案的复杂性,降低了方案的可控性而言,采用独立的数据源配置服务应用能够契合全局的配置管理,编程难度降低、维护难度降低,具有了较强的可控性
本发明在一较佳示例中可以进一步配置为:所述微服务应用通过数据源配置服务应用开放的接口进行租户的数据源配置信息的查询;所述微服务应用监听数据源配置服务应用中租户的数据源配置信息变更事件,同步更新对应微服务应用的数据源缓存。
本发明在一较佳示例中可以进一步配置为:根据所述数据源配置信息,动态生成当前租户的数据源的步骤,具体包括:继承Spring提供的扩展类 org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource,重写 protected ObjectdetermineCurrentLookupKey()和protected DataSourcedetermineTargetDataSource()这两个方法,实现定制的动态数据源类;根据SpringBoot自动配置原理,然后将其配置为默认的数据源配置类。
通过采用上述技术方案,本技术方案的动态数据源路由的实现,是基于Spring框架预留的扩展点采用的是继承Spring框架提供的AbstractRoutingDataSource类来切入实现数据源路由,更加贴合框架,结合SpringBoot框架实现动态数据源路由自动配置,相比于传统方案采用的自定义动态数据源而言,本方案较需要编写的代码量大幅减少,方案简洁。
本发明目的二是提供一种SaaS多租户数据隔离访问装置,便于提高租户数据的隔离效果,实现各个租户的数据隔离访问,并能够动态获取数据源配置信息从而动态创建数据源,实现数据源的动态切换,较为有效的提升了数据源切换的效率和扩展性。
本发明的上述发明目的二是通过以下技术方案得以实现的:
一种SaaS数据隔离访问装置,所述多租户的每个租户均配置一个独占的数据库,所述装置包括:
接收模块,用于接收租户发起的访问请求;
获取模块,用于获取访问请求中携带的租户信息;
判断模块,用于根据所述租户信息,判断该租户的数据源是否已缓存;
创建模块,用于在所述租户的数据源未缓存时,动态创建所述租户的数据源;以及,
切换模块,用于根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。
本发明目的三是提供一种电子设备,本发明的上述发明目的三是通过以下技术方案得以实现的:
一种电子设备,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如上述方法的计算机程序。
本发明目的四是提供一种计算机存储介质,本发明的上述发明目的四是通过以下技术方案得以实现的:
一种计算机可读存储介质,存储有能够被处理器加载并执行上述方法的计算机程序。
综上所述,本发明包括以下至少一种有益技术效果:
1.本发明通过选择Spring框架提供的拦截器机制以及抽象数据源路由扩展点来实现多租户下的数据源动态切换方案,整体方案较为简洁,数据管理的可控性得到了提高;采用动态实现数据源的切换来进行各租户数据库的隔离访问,较为有效的提升了数据源切换的效率和扩展性。
2.本发明将数据源配置服务作为一个独立的应用服务来运行,能够实现对各个租户数据源配置信息的随时、灵活管理,克服了传统方案引入中间件带来的管理不便、bug难修复等情况。
附图说明
图1为本公开一实施例提供的一种SaaS数据隔离访问方法的流程图。
图2为本公开一实施例提供的获取访问请求中携带的租户信息的具体步骤的流程图。
图3为本公开一实施例提供的动态创建所述租户的数据源的具体步骤的流程图。
图4为本公开一实施例提供的数据源配置服务的系统图。
图5为本公开一实施例提供的一种SaaS数据隔离访问装置的结构框图。
图6为本公开一实施例提供的一种电子设备的示意性框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本发明实施例作进一步详细描述。
本发明实施例提及的TCH(Tomorrow Health Care)系统,是指由多个基于SpringBoot的微服务(Microservice)应用、通过SpringCloud构建的分布式微服务架构系统。Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩。SpringCloud是基于SpringBoot的一整套实现微服务的框架。它提供了微服务开发所需的配置管理、服务发现、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。TCH系统中的每个租户(应用)均配置一个独占的数据库,即可以为每个租户连接的数据库创建对应的数据库用户。
下面结合说明书附图对本发明实施例作进一步详细描述。
图1为本公开一实施例提供的一种SaaS数据隔离访问方法的流程图。如图1所示,本实施例的一种SaaS多租户数据隔离访问方法,该方法的主要流程描述如下。
S101、接收租户发起的访问请求;
S102、获取访问请求中携带的租户信息;
S103、根据所述租户信息,判断该租户的数据源是否已缓存;
S014、若未缓存,则动态创建所述租户的数据源;
S105、根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。
具体的,以THC系统从单租户升级到SAAS模式多租户时的数据隔离访问为例,在THC系统中,每当新建一个租户时,均会为每个租户配置租户信息,租户信息包括租户id,租户根据租户id进行系统的登录。租户的所有访问请求需要进行拦截,从而获得请求中携带的租户id,根据租户id 来判断当前的访问请求是由哪个租户发起的。通过租户id能够查询是否已经缓存了该租户的数据源,若已缓存,则直接从缓存序列中获得该租户的数据源,并根据该数据源切换到该租户的独立的数据库,租户通过访问该数据库,进行相关的业务办理;若未缓存,则动态的创建租户的数据源,并且根据动态创建的该租户的数据源切换到该租户的独立的数据库,租户通过访问该数据库,进行相关业务的办理。
图2为本公开一实施例提供的获取访问请求中携带的租户信息的具体步骤的流程图。如图2所示,在S102中,获取访问请求中携带的租户信息的步骤,具体包括:
S201、拦截所述租户发起的访问请求中携带的租户信息;
S202、判断访问请求中是否包含租户信息;
S202、若是,则将所述租户信息设置到本次访问请求的线程本地变量中。
具体的,租户信息的拦截通过租户拦截器进行,在基于Spring框架中,可以选择继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类,重写它的 preHandle来实现,租户拦截器拦截时,需要判断是否从访问请求中拦截到租户信息,若拦截到租户信息,则将租户信息设置到本次请求的线程本地变量中(ThreadLocal);若未拦截到租户信息,则访问请求结束,提示请求中未获取到租户信息。
图3为本公开一实施例提供的动态创建所述租户的数据源的具体步骤的流程图。如图3所示,在S104中,动态创建所述租户的数据源的步骤具体包括:
S301、查询数据源配置服务。
具体的,当在缓存序列中未查找到租户的数据源后,需要查找数据源配置服务来获取数据源配置信息以实现动态生成数据源,数据源配置服务应用可以根据租户id进行查询。图4为本公开一实施例提供的数据源配置服务的系统图,如图4所示,该数据源配置服务为一个独立的应用,其是基于SpringBoot构建的微服务应用,内部存储有所有租户的数据源配置信息,并且通过租户id与对应的数据源配置信息建立对应关系;管理员能够通过登陆访问该数据源配置服务应用,对THC系统中的各个租户的数据源配置信息进行管理,并将配置信息持久化存储到数据库中。THC系统中的各个微服务应用均通过数据源配置服务应用开放的接口进行租户数据源的信息的查询;同时,各个微服务应用监听数据源配置服务应用中的租户的数据源配置信息变更时间,同步更新对应微服务应用的数据源缓存。相比于现有技术中的引入第三方中间件实现,例如:第三方中间件Zookeeper,引入第三方中间件的方案会带来开发和运维上的成本,需要开发和运维熟悉相关中间件的技术;还带来技术上的风险,如中间件存在的Bug如何修复、相关的技术支持是否到位等。THC系统采用的独立的、专用于数据源配置信息管理的数据源配置服务应用来管理各个租户的数据源配置信息,方案更加简洁,可控性更强。
S302、获取数据源配置服务反馈的当前租户的数据源配置信息。
S303、根据所述数据源配置信息,动态生成当前租户的数据源。
S304、将动态生成的当前租户的数据源加入数据源缓存中。
具体的,根据租户id查询数据源配置服务应用,数据源配置服务应用根据租户id查找对应的数据源配置信息,根据数据源配置服务应用返回的租户数据源配置信息,动态生成租户的数据源,在基于Spring框架中,继承Spring提供的扩展类 org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource,重写 protected ObjectdetermineCurrentLookupKey()和protected DataSourcedetermineTargetDataSource()这两个方法,实现定制的动态数据源类;并根据SpringBoot自动配置原理,然后将其配置为默认的数据源配置类;动态生成数据源之后,将动态生成的数据源加入到数据源缓存中以供查询。本发明实施例的THC系统采用继承Spring框架提供的AbstractRoutingDataSource类来切入实现数据源路由,更加贴合框架,结合SpringBoot框架实现动态数据源路由自动配置,整体方案代码量较少,实现方式较为简洁。
本发明实施例的方法是根据THC系统是基于SpringBoot开发的微服务应用,因此选择了Spring框架提供的拦截器机制以及抽象数据源路由扩展点来实现多租户下的数据源动态切换方案,方案简洁、且具有良好的数据隔离效果。
图5为本公开一实施例提供的一种SaaS数据隔离访问装置的结构框图。该装置包括接收模块501、获取模块502、判断模块503,创建模块504以及切换模块505。其中,接收模块501,用于接收租户发起的访问请求;获取模块502,用于获取访问请求中携带的租户信息;判断模块503,用于根据所述租户信息,判断该租户的数据源是否已缓存;创建模块504,用于在所述租户的数据源未缓存时,动态创建所述租户的数据源;切换模块505,用于根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。
前述实施例中的方法中的各种变化方式和具体实例同样适用于本实施例的SaaS数据隔离访问装置,通过前述对SaaS数据隔离访问方法的详细描述,本领域技术人员可以清楚的知道本实施例中的SaaS数据隔离访问装置的实施方法,所以为了说明书的简洁,在此不再详述。
图6为本公开一实施例提供的一种电子设备的示意性框图。如图6所示,该电子设备包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM603中,还可以存储设备操作所需的各种程序和数据。CPU601、ROM602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元601执行上文所描述的各个方法和处理,例如SaaS数据隔离访问方法。例如,在一些实施例中,SaaS数据隔离访问方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM602和/或通信单元609而被载入和/或安装到设备上。当计算机程序加载到RAM603并由CPU601执行时,可以执行上文描述的SaaS数据隔离访问方法的一个或多个步骤。备选地,在其他实施例中,CPU601可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行SaaS数据隔离访问方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (10)
1.一种SaaS多租户数据隔离访问方法,所述多租户的每个租户均配置一个独占的数据库,其特征在于,该方法包括以下步骤:
接收租户发起的访问请求;
获取访问请求中携带的租户信息;
根据所述租户信息,判断该租户的数据源是否已缓存;
若未缓存,则动态创建所述租户的数据源;以及,
根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。
2.根据权利要求1所述的SaaS多租户数据隔离访问方法,其特征在于,所述获取访问请求中携带的租户信息的步骤,具体包括:
拦截所述租户发起的访问请求中携带的租户信息;以及,
将所述租户信息设置到本次访问请求的线程本地变量中。
3.根据权利要求2所述的SaaS多租户数据隔离访问方法,其特征在于,所述获取访问请求中携带的租户信息的步骤,具体包括:在Spring框架中选择继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类,重写它的 preHandle来实现访问请求中的租户信息的拦截,并将租户信息设置到本次请求的线程本地变量ThreadLocal中。
4.根据权利要求1所述的SaaS多租户数据隔离访问方法,其特征在于,所述动态创建所述租户的数据源的步骤,具体包括:
查询数据源配置服务;
获取数据源配置服务反馈的当前租户的数据源配置信息;
根据所述数据源配置信息,动态生成当前租户的数据源;以及,
将动态生成的当前租户的数据源加入数据源缓存中。
5.根据权利要求4所述的SaaS多租户数据隔离访问方法,其特征在于,所述数据源配置服务为基于SpringBoot构建的微服务应用所配置的独立的应用服务,用于实时对各租户的数据源配置信息进行管理。
6.根据权利要求5所述的SaaS多租户数据隔离访问方法,其特征在于,所述微服务应用通过数据源配置服务应用开放的接口进行租户的数据源配置信息的查询;所述微服务应用监听数据源配置服务应用中租户的数据源配置信息变更事件,同步更新对应微服务应用的数据源缓存。
7.根据权利要求4所述的SaaS多租户数据隔离访问方法,其特征在于,根据所述数据源配置信息,动态生成当前租户的数据源的步骤,具体包括:继承Spring提供的扩展类 org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource,重写protected Object determineCurrentLookupKey()和protected DataSourcedetermineTargetDataSource()这两个方法,实现定制的动态数据源类;根据SpringBoot自动配置原理,然后将其配置为默认的数据源配置类。
8.一种SaaS多租户数据隔离访问装置,所述多租户的每个租户均配置一个独占的数据库,其特征在于,所述装置包括:
接收模块(501),用于接收租户发起的访问请求;
获取模块(502),用于获取访问请求中携带的租户信息;
判断模块(503),用于根据所述租户信息,判断该租户的数据源是否已缓存;
创建模块(504),用于在所述租户的数据源未缓存时,动态创建所述租户的数据源;以及,
切换模块(505),用于根据动态创建的所述租户的数据源,切换到所述租户的数据库,以供租户访问。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器上存储有能够被处理器加载并执行如权利要求1至8中任一种方法的计算机程序。
10.一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行如权利要求1至8中任一种方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232164.2A CN111491012B (zh) | 2020-03-27 | 2020-03-27 | SaaS多租户数据隔离访问方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010232164.2A CN111491012B (zh) | 2020-03-27 | 2020-03-27 | SaaS多租户数据隔离访问方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111491012A true CN111491012A (zh) | 2020-08-04 |
CN111491012B CN111491012B (zh) | 2023-05-09 |
Family
ID=71811652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010232164.2A Active CN111491012B (zh) | 2020-03-27 | 2020-03-27 | SaaS多租户数据隔离访问方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111491012B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182375A (zh) * | 2020-09-27 | 2021-01-05 | 中国建设银行股份有限公司 | 一种综合服务平台的需求响应方法、装置、介质及平台 |
CN112905708A (zh) * | 2021-03-31 | 2021-06-04 | 浙江太美医疗科技股份有限公司 | 基于SaaS系统的数据库操作方法及系统 |
CN113379507A (zh) * | 2021-06-30 | 2021-09-10 | 特赞(上海)信息科技有限公司 | 适用于企业级多租户产品的客制化方法、装置及电子设备 |
CN114765630A (zh) * | 2022-02-16 | 2022-07-19 | 杭州湖畔网络技术有限公司 | 多租户平台的数据访问方法、多租户平台及服务器 |
CN116401231A (zh) * | 2023-03-20 | 2023-07-07 | 一临云(深圳)科技有限公司 | 数据源管理方法、设备及存储介质 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620609A (zh) * | 2008-06-30 | 2010-01-06 | 国际商业机器公司 | 多租户数据存储和访问方法和装置 |
CN101777047A (zh) * | 2009-01-08 | 2010-07-14 | 国际商业机器公司 | 多租户环境下访问数据库的系统、设备和方法 |
CN102456028A (zh) * | 2010-10-27 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种面向多租户的数据获取方法、装置及系统 |
CN102708316A (zh) * | 2012-04-19 | 2012-10-03 | 北京华胜天成科技股份有限公司 | 一种用于多租户架构中数据隔离的方法 |
CN103399942A (zh) * | 2013-08-14 | 2013-11-20 | 山大地纬软件股份有限公司 | 一种支持SaaS多租户的数据引擎系统及其工作方法 |
US8966464B1 (en) * | 2014-03-21 | 2015-02-24 | Amazon Technologies, Inc. | Isolating tenants executing in multi-tenant software containers |
CN106503163A (zh) * | 2016-10-31 | 2017-03-15 | 用友网络科技股份有限公司 | 基于SaaS应用的全局配置多租户动态数据源系统 |
CN106529331A (zh) * | 2016-10-31 | 2017-03-22 | 用友网络科技股份有限公司 | 一种应用于PaaS平台的多租户数据隔离方案 |
US9703611B1 (en) * | 2014-03-21 | 2017-07-11 | Amazon Technologies, Inc. | Isolating resources for utilization by tenants executing in multi-tenant software containers |
CN106951555A (zh) * | 2017-03-29 | 2017-07-14 | 北京亿科天元信息技术有限公司 | 基于结构化数据的SaaS模式内容管理系统 |
US9754122B1 (en) * | 2014-03-21 | 2017-09-05 | Amazon Technologies, Inc. | Isolating tenants executing in multi-tenant software containers |
CN107203575A (zh) * | 2016-03-18 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 一种用于隔离多租户数据的系统、设备和方法 |
CN107682397A (zh) * | 2017-08-28 | 2018-02-09 | 平安科技(深圳)有限公司 | 客户资源获取方法、装置、终端设备及存储介质 |
US20180367363A1 (en) * | 2016-06-28 | 2018-12-20 | Virtustream Ip Holding Company Llc | Standardized microservices for controlling components of distinct applications in multi-tenant clouds |
CN109688162A (zh) * | 2019-02-19 | 2019-04-26 | 山东浪潮通软信息科技有限公司 | 一种多租户的数据分库实现方法和系统 |
CN110533509A (zh) * | 2019-08-28 | 2019-12-03 | 上海仪电智能科技有限公司 | 一种多租户用户管理服务系统 |
CN110719263A (zh) * | 2019-09-17 | 2020-01-21 | 平安科技(深圳)有限公司 | 多租户dns安全管理方法、装置及存储介质 |
WO2020019993A1 (en) * | 2018-07-27 | 2020-01-30 | Huawei Technologies Co., Ltd. | Virtual machine container for applications |
CN110765489A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海环融联易信息科技服务有限公司 | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 |
CN110809017A (zh) * | 2019-08-16 | 2020-02-18 | 云南电网有限责任公司玉溪供电局 | 一种基于云平台和微服务构架的数据分析应用平台系统 |
-
2020
- 2020-03-27 CN CN202010232164.2A patent/CN111491012B/zh active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620609A (zh) * | 2008-06-30 | 2010-01-06 | 国际商业机器公司 | 多租户数据存储和访问方法和装置 |
CN101777047A (zh) * | 2009-01-08 | 2010-07-14 | 国际商业机器公司 | 多租户环境下访问数据库的系统、设备和方法 |
CN102456028A (zh) * | 2010-10-27 | 2012-05-16 | 金蝶软件(中国)有限公司 | 一种面向多租户的数据获取方法、装置及系统 |
CN102708316A (zh) * | 2012-04-19 | 2012-10-03 | 北京华胜天成科技股份有限公司 | 一种用于多租户架构中数据隔离的方法 |
CN103399942A (zh) * | 2013-08-14 | 2013-11-20 | 山大地纬软件股份有限公司 | 一种支持SaaS多租户的数据引擎系统及其工作方法 |
US9754122B1 (en) * | 2014-03-21 | 2017-09-05 | Amazon Technologies, Inc. | Isolating tenants executing in multi-tenant software containers |
US9703611B1 (en) * | 2014-03-21 | 2017-07-11 | Amazon Technologies, Inc. | Isolating resources for utilization by tenants executing in multi-tenant software containers |
US8966464B1 (en) * | 2014-03-21 | 2015-02-24 | Amazon Technologies, Inc. | Isolating tenants executing in multi-tenant software containers |
CN107203575A (zh) * | 2016-03-18 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 一种用于隔离多租户数据的系统、设备和方法 |
US20180367363A1 (en) * | 2016-06-28 | 2018-12-20 | Virtustream Ip Holding Company Llc | Standardized microservices for controlling components of distinct applications in multi-tenant clouds |
CN106529331A (zh) * | 2016-10-31 | 2017-03-22 | 用友网络科技股份有限公司 | 一种应用于PaaS平台的多租户数据隔离方案 |
CN106503163A (zh) * | 2016-10-31 | 2017-03-15 | 用友网络科技股份有限公司 | 基于SaaS应用的全局配置多租户动态数据源系统 |
CN106951555A (zh) * | 2017-03-29 | 2017-07-14 | 北京亿科天元信息技术有限公司 | 基于结构化数据的SaaS模式内容管理系统 |
CN107682397A (zh) * | 2017-08-28 | 2018-02-09 | 平安科技(深圳)有限公司 | 客户资源获取方法、装置、终端设备及存储介质 |
WO2020019993A1 (en) * | 2018-07-27 | 2020-01-30 | Huawei Technologies Co., Ltd. | Virtual machine container for applications |
US20200034166A1 (en) * | 2018-07-27 | 2020-01-30 | Futurewei Technologies, Inc. | Virtual machine container for applications |
CN109688162A (zh) * | 2019-02-19 | 2019-04-26 | 山东浪潮通软信息科技有限公司 | 一种多租户的数据分库实现方法和系统 |
CN110809017A (zh) * | 2019-08-16 | 2020-02-18 | 云南电网有限责任公司玉溪供电局 | 一种基于云平台和微服务构架的数据分析应用平台系统 |
CN110533509A (zh) * | 2019-08-28 | 2019-12-03 | 上海仪电智能科技有限公司 | 一种多租户用户管理服务系统 |
CN110719263A (zh) * | 2019-09-17 | 2020-01-21 | 平安科技(深圳)有限公司 | 多租户dns安全管理方法、装置及存储介质 |
CN110765489A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海环融联易信息科技服务有限公司 | 多租户数据库隔离方法、系统、电子设备及计算机存储介质 |
Non-Patent Citations (6)
Title |
---|
史玉良,王 捷: ""一种多租户云数据存储缓存管理机制"", 《计算机研究与发展》 * |
周学权;战德臣;聂兰顺;孟凡超;: "面向多租户的多层次可伸缩SaaS软件架构研究" * |
姚金成,等: ""基于Chunk Folding的多租户数据库缓存管理机制"", 《计算机学报》 * |
明湖居士2018: ""实战saas系统多租户数据隔离(一)数据隔离方案"", 《CSDN》 * |
明湖居士2018: ""实战saas系统多租户数据隔离(三)每个租户使用独立的表空间"", 《CSDN》 * |
明湖居士2018: ""实战saas系统多租户数据隔离(二)使用租户id字段区分租户数据"", 《CSDN》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182375A (zh) * | 2020-09-27 | 2021-01-05 | 中国建设银行股份有限公司 | 一种综合服务平台的需求响应方法、装置、介质及平台 |
CN112905708A (zh) * | 2021-03-31 | 2021-06-04 | 浙江太美医疗科技股份有限公司 | 基于SaaS系统的数据库操作方法及系统 |
CN113379507A (zh) * | 2021-06-30 | 2021-09-10 | 特赞(上海)信息科技有限公司 | 适用于企业级多租户产品的客制化方法、装置及电子设备 |
CN114765630A (zh) * | 2022-02-16 | 2022-07-19 | 杭州湖畔网络技术有限公司 | 多租户平台的数据访问方法、多租户平台及服务器 |
CN114765630B (zh) * | 2022-02-16 | 2024-04-26 | 杭州湖畔网络技术有限公司 | 多租户平台的数据访问方法、多租户平台及服务器 |
CN116401231A (zh) * | 2023-03-20 | 2023-07-07 | 一临云(深圳)科技有限公司 | 数据源管理方法、设备及存储介质 |
CN116401231B (zh) * | 2023-03-20 | 2024-04-26 | 一临云(深圳)科技有限公司 | 数据源管理方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111491012B (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111491012B (zh) | SaaS多租户数据隔离访问方法、装置、电子设备及存储介质 | |
US9471647B2 (en) | Node-level sub-queries in distributed databases | |
US10536545B2 (en) | Cloud database connection multiplexing | |
WO2018233364A1 (zh) | 索引更新方法、系统及相关装置 | |
CN103577457A (zh) | 用于对多租户数据库进行操控的方法和系统 | |
US11151098B2 (en) | Enabling multi-tenant access to respective isolated data sets organized using different application schemas | |
WO2015149505A1 (zh) | Sdn应用集成管理和控制的方法、系统及设备 | |
US11843674B2 (en) | Virtual workspace experience visualization and optimization | |
US11546228B2 (en) | Zero-touch configuration of network devices using hardware metadata | |
US11588688B2 (en) | Device connector service for device and management service integration | |
US11782767B2 (en) | Techniques for consistent multi-tenant behavior in microservices based applications | |
CN113760901A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN102664952B (zh) | 一种对嵌入式设备集群管理及监控的方法 | |
US9715513B2 (en) | System, method and computing apparatus to isolate a database in a database system | |
US10289617B2 (en) | Accessing on-premise and off-premise datastores that are organized using different application schemas | |
KR102583532B1 (ko) | 스케줄링 방법, 장치, 기기, 기록 매체 및 컴퓨터 프로그램 | |
CN111031126B (zh) | 集群缓存共享方法、系统、设备及存储介质 | |
CN110096543B (zh) | 应用程序的数据操作方法、装置、服务器和介质 | |
US20220311662A1 (en) | Network configuring method for cloud mobile phone, device and storage medium | |
US11977559B2 (en) | Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs | |
CN114070889A (zh) | 配置方法、流量转发方法、设备、存储介质及程序产品 | |
US20220138220A1 (en) | Dedicated replication channels for replicating records between regions | |
US10884621B2 (en) | Block volume mount synchronization to prevent data corruption | |
US11861045B2 (en) | Method, electronic device, and computer program product for system feature management | |
US20240143352A1 (en) | Unified Management Interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |