浅谈 SaaS 多租户数据隔离和共享
前段时间第一次看到多租户时,觉得挺有趣,便想着一探究竟。当我检索资料,结合公司研发时,公司产品进行了架构升级,构造出多租户架构诸多案例,对多租户的有了更深的理解。新年期间一直在思索,还是略懂皮毛而已。
OK,Let's start(开始吧),让我们从提问的角度来阐述问题。
一、什么叫多租户
多租户技术或称多重租赁技术,简称 SaaS,是一种软件架构技术,是实现如何在多用户环境下共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。
简单描述下:多租户是一种架构,重点就是同一套程序下实现多用户数据的隔离。
翻阅多租户的资料后进一步了解道:
在一个多租户的结构下,应用都是运行在同样的或者是一组服务器下,这种结构被称为“单实例”架构(Single Instance),单实例多租户。多个租户的数据是保存在相同位置,依靠对数据库分区来实现隔离操作。
既然用户都在运行相同的应用实例,服务运行在服务供应商的服务器上,用户无法去进行定制化的操作,所以这对于对该产品有特殊需要定制化的客户就无法适用,所以多租户适合通用类需求的客户。
二、既然是数据隔离,那多租户有几种方案
在当下云计算时代,多租户技术在共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可以保障客户的数据隔离。目前各种各样的云计算服务就是这类技术范畴,例如阿里云数据库服务(RDS)、阿里云服务器、华为云数据库 GaussDB 等等。
多租户在数据存储上存在三种主要的方案:
举个简单的例子:
三种方案好比学生分宿舍,隔离数据库就好比 10 名学生一人一个宿舍,每个人拿着自己宿舍的钥匙,一般贵族学校才有的待遇,学生都得是土豪;
共享数据库,隔离数据架构就好比 10 名学生一个宿舍,每人一把宿舍钥匙,一般家庭的学生都能住;
共享数据库,共享数据架构就是家里条件比较差的学生,10 个人一个宿舍,连宿舍钥匙都配不起,大家只有一把钥匙。
三种方案各有优缺点,根据实际情况选择合适的方案。在 SaaS 实施过程中,有一个显著的考量点,就是如何对应用数据进行设计,以支持多租户,而这种设计的思路,是要在数据的共享、安全隔离和性能间取得平衡。
三、选择合理的实现模式
衡量三种模式主要考虑的因素是隔离还是共享。
成本角度因素:隔离性越好,设计和实现的难度和成本越高,初始成本越高。共享性越好,同一运营成本下支持的用户越多,运营成本越低。
安全因素:要考虑业务和客户的安全方面的要求。安全性要求越高,越要倾向于隔离。
从租户数量上考虑:
● 系统要支持多少租户?上百?上千还是上万?可能的租户越多,越倾向于共享。
● 平均每个租户要存储数据需要的空间大小。存贮的数据越多,越倾向于隔离。
● 每个租户的同时访问系统的最终用户数量。需要支持的越多,越倾向于隔离。
● 是否想针对每一租户提供附加的服务,例如数据的备份和恢复等。这方面的需求越多,越倾向于隔离。
技术储备:共享性越高,对技术的要求越高。
文章来源:安知有话说
评论