点击上方蓝字关注我们
1. 多租户技术概述
随着近几年云计算技术的不断发展和成熟。云计算多租户技术在 SaaS 服务领域获得得快速的发展和广泛的应用。基于多租户技术的业务平台首先要保证不同租户业务的隔离,业务隔离主要包括下面 2 个方面:
❶ 物理隔离,租户开展业务所依赖的全部计算资源全然独立;
❷ 逻辑隔离,通过技术手段,隔离租户业务流程和业务数据。一个租户仅仅能访问自身的数据。
业务平台在设计时,需要能够依据客户需求提供不同形式的服务,即支持计算资源共享模式,也可支持计算资源独享模式。
所以在业务设计时,从数据库表结构到服务请求都需要提供租户标识。通过租户标识,可以实现不同租户的业务数据逻辑隔离的需求。那么对于租户独享计算资源模式,则通过为其部署单独的应用实例予以解决,业务平台通过统一的云公共管理模块进行多应用实例管理。从而解决大规模业务资源管理问题。
那么什么是多租户技术?多租户技术包括哪几种数据隔离方案?多租户技术具有哪些特点?下面小编将带您了解多租户技术。
多租户技术定义:多租户技术或称多重租赁技术,它是一种软件架构技术,是实现如何在多用户环境下(一般是面向企业用户)共用相同的系统或应用组件,并且可确保各用户间数据的隔离性。
简单来说就是,在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套应用程序,且保证用户间数据隔离。那么关于多租户的重点就显得浅显易懂了,多租户的重点就是同一套应用下实现多用户数据的隔离。
形象点的说,“租户”和我们多个人合租一套房子相似,张三和李四同租一套房子,各住一个卧室,互相不干扰,客厅、厨房为公共区域,大家可以一起共用一些公共的生活设施。
租房中的租户概念(来源于网络)
下面我们将论述多租户应用架构的数据隔离方案。
2. 多租户应用架构的数据隔离方案
在当下云计算时代,多租户技术在共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可以保障客户的数据隔离。目前各种各样的云计算服务就是这类技术范畴,例如阿里云数据库服务、百度云数据库服务、腾讯云数据库服务、阿里云服务器等等。
多租户在数据存储上存在三种主要的方案,如下所示:
多租户数据存储方案
独立数据库
独立数据库即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高。
独立数据库方式
优点:
(1). 为不同租户提供独立数据库,有助于简化数据模型的扩展设计,满足个性化需求;
(2). 如果遇到故障时,数据恢复简单。
缺点:
(1).扩大了数据库的安装和运维数量,随之带来维护成本和购置成本的增加。
共享数据库,隔离数据架构
多个租户或所有租户共享数据库,但每一个租户提供一个Schema的方式。
共享数据库,隔离数据架构
优点:
(1).一定程度的逻辑数据隔离(并非完全),可满足较高程度的安全性保障;
(2).每个数据库,可支持更多租户数量;
缺点:
(1).恢复数据较困难,因为将牵扯到其他租户数据;
(2).跨租户统计数据,应用实现难度大,耗费成本高。
共享数据库,共享数据架构
所有的租户共享同一个数据库、同一个Schema,但是租户之间的数据隔离通过在数据表中添加TenantID属性进行实现。
共享数据库,共享数据架构
优点:
(1).每个数据库可支持租户数量多,维护和购置成本低;
缺点:
(1).隔离级别低,数据安全性低,在应用开发时需做大量安全开发工作,提高研发成本;
(2).需要逐表逐条备份和还原数据,数据备份和恢复困难。
说明:如果Saas应用提供商希望以最少的服务器为最多的租户提供服务,并且租户可以接受牺牲隔离级别用于换取降低成本,这种数据隔离方案最为适合。
多租户数据隔离方案选型
基于上述方案进行论述,通过三种方案的公优缺点进行对比,我们从资源共享、数据隔离、应用复杂性、应用成本四个方面进行对比总结。通过下面一张图来概括说明 。
多租户数据隔离方案选型
上图所总结的是一般性的结论,而在常规场景下需要综合考虑才能决定那种方式是最合适的方案。关于多租户方案的选型,主要考虑的方面是成本因素,对于大多数场景而言,共享度越高,软硬件资源的利用效率更好,成本也更低。但同时也要考虑和解决好多租户资源共享和隔离所带来的安全与性能、扩展性、技术储备等方面问题。
通过多租户技术的数据隔离方案的讲解和对比,我们总结一下多租户技术的特点。
3. 多租户技术的特点
1.由于多租户技术可以让多个租户共用一个应用程序或运算环境,且租户大多不会使用太多运算资源的情况下,对Saas服务提供商来说多租户技术可以有效的降低环境配置的成本,包含硬件本身的成本、操作系统与相关软件的授权成本都可以因为多租户技术而由多个租户一起分担。
2.通过不同的数据管理手段,多租户之间的数据可以采用不同的方式进行数据隔离,在Saas服务提供商的架构设计下,数据的隔离方式也会不同,而良好的数据隔离机制可以降低Saas服务提供商的维护成本(包含设备与人力),而Saas服务提供商可以在合理的授权范围内利用这些数据进行数据分析,以作为改善应用服务的依据。
3.多租户架构下所有用户都共用相同的软件环境,因此在软件升级或改版时可以只发布一次,就能在所有租户的环境上生效。
4.具有多租户架构的应用软件虽然在某一种程度上可以根据客户需求进行定制化开发,但定制化难度比较高,通常需要Saas平台层的支持与工具的支持,才可降低定制化所带来的应用复杂度。
4. 总结
上面我们介绍了多租户技术的定义、数据隔离方案和特点,我们对于多租户技术有了一定的了解。在实际的运用中,多租户技术最为成功的应用案例就是由Salesforce所提供的在线CRM应用系统,该公司除了Salesforce的CRM软件以外,它还提供了SalesForce平台即服务(PaaS)架构,以支持开发人员在基于SalesForce平台的基础上进行应用定制。在云计算的加持之下,多租户技术被广为运用于开发各种各样的云服务,不论是IaaS(基础设施即服务)、PaaS(平台即服务)还是SaaS(软件即服务),它们都可以看到多租户技术的影子。
SpringBoot 集成 Redis 实现消息队列
无须下载,浏览器就能完成接口调试,快来试试
Spring Boot如何利用AOP巧妙记录操作日志?
用Redis实现一个轻量级的搜索引擎
戳这儿