一、对多租户的理解

  多租户定义:多租户技术或称多重租赁技术,简称SaaS,是一种软件架构技术,是实现如何在多用户环境下(此处的多用户一般是面向企业用户)共用相同的系统或程序组件,并且可确保各用户间数据的隔离性。简单讲:在一台服务器上运行单个应用实例,它为多个租户(客户)提供服务。从定义中我们可以理解:多租户是一种架构,目的是为了让多用户环境下使用同一套程序,且保证用户间数据隔离。那么重点就很浅显易懂了,多租户的重点就是同一套程序下实现多用户数据的隔离。对于实现方式,我们下面会讨论到。

  在了解详细一点:在一个多租户的结构下,应用都是运行在同样的或者是一组服务器下,这种结构被称为“单实例”架构(Single Instance),单实例多租户。多个租户的数据是保存在相同位置,依靠对数据库分区来实现隔离操作。既然用户都在运行相同的应用实例,服务运行在服务供应商的服务器上,用户无法去进行定制化的操作,所以这对于对该产品有特殊需要定制化的客户就无法适用,所以多租户适合通用类需求的客户。那么缺点来了,多租户下无法实现用户的定制化操作。

  在翻阅多租户的资料时,还有一个名词与之相对应,那就是单租户SaaS架构(也被称作多实例架构(Multiple Instance))。单租户架构与多租户的区别在于,单租户是为每个客户单独创建各自的软件应用和支撑环境。单租户SaaS被广泛引用在客户需要支持定制化的应用场合,而这种定制或者是因为地域,抑或是他们需要更高的安全控制。通过单租户的模式,每个客户都有一份分别放在独立的服务器上的数据库和操作系统,或者使用强的安全措施进行隔离的虚拟网络环境中。因为本篇主要是讨论多租户,所以单租户的相关知识就简单了解一下,不做过多的阐述了。

二、多租户数据隔离的三种方案

  在当下云计算时代,多租户技术在共用的数据中心以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍可以保障客户的数据隔离。目前各种各样的云计算服务就是这类技术范畴,例如阿里云数据库服务(RDS)、阿里云服务器等等。

  多租户在数据存储上存在三种主要的方案,分别是:

  1. 独立数据库

  这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高。
  优点:
    为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;如果出现故障,恢复数据比较简单。
  缺点:
    增多了数据库的安装数量,随之带来维护成本和购置成本的增加。
  这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的。

  2. 共享数据库,独立 Schema
  这是第二种方案,即多个或所有租户共享Database,但是每个租户一个Schema(也可叫做一个user)。底层库比如是:DB2、ORACLE等,一个数据库下可以有多个SCHEMA
  优点:
    为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可支持更多的租户数量。
  缺点:
    如果出现故障,数据恢复比较困难,因为恢复数据库将牵涉到其他租户的数据;
  如果需要跨租户统计数据,存在一定困难。

  3. 共享数据库,共享 Schema,共享数据表
  这是第三种方案,即租户共享同一个Database、同一个Schema,但在表中增加TenantID多租户的数据字段。这是共享程度最高、隔离级别最低的模式。
  即每插入一条数据时都需要有一个客户的标识。这样才能在同一张表中区分出不同客户的数据。
  优点:
    三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
  缺点:
    隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量; 数据备份和恢复最困难,需要逐表逐条备份和还原。

  如果希望以最少的服务器为最多的租户提供服务,并且租户接受牺牲隔离级别换取降低成本,这种方案最适合。
    
  在SaaS实施过程中,有一个显著的考量点,就是如何对应用数据进行设计,以支持多租户,而这种设计的思路,是要在数据的共享、安全隔离和性能间取得平衡。

  因为我们用的底层库是MySQL,且要保证数据的完全隔离,所以用的方案属于第一种。独立数据库。因为MySQL下SCHEMA就是他的数据库名。所以每多服务一个用户,都需要新建一个数据库。如果是DB2或者是ORACLE的话,一个数据库下,可以采用独立的SCHEMA来进行数据隔离,这样会相对节省成本,且数据隔离的强度高。

三、选择合理的实现模式
  衡量三种模式主要考虑的因素是隔离还是共享。

  成本角度因素

    隔离性越好,设计和实现的难度和成本越高,初始成本越高。共享性越好,同一运营成本下支持的用户越多,运营成本越低。

  安全因素

    要考虑业务和客户的安全方面的要求。安全性要求越高,越要倾向于隔离。

  从租户数量上考虑
    主要考虑下面一些因素
    系统要支持多少租户?上百?上千还是上万?可能的租户越多,越倾向于共享。
    平均每个租户要存储数据需要的空间大小。存贮的数据越多,越倾向于隔离。
    每个租户的同时访问系统的最终用户数量。需要支持的越多,越倾向于隔离。
    是否想针对每一租户提供附加的服务,例如数据的备份和恢复等。这方面的需求越多, 越倾向于隔离

  技术储备
    共享性越高,对技术的要求越高。

saas架构理解与设计相关推荐

  1. 彻底理解微商城多租户Saas架构设计

    彻底理解微商城多租户Saas架构设计 原文链接:https://blog.csdn.net/haponchang/article/details/104246317,感谢作者提供这么好的总结! 1.具 ...

  2. mybatis 多租户saas_彻底理解微商城多租户Saas架构设计

    原文链接:https://blog.csdn.net/haponchang/article/details/104246317,感谢作者提供这么好的总结! 1.具体的SaaS架构必须 1.先仔细选择最 ...

  3. 云技术-SaaS架构初步理解

    最近公司准备整一个SaaS的东西.有幸参入这一块东西的搭建,借着這个机会也重新好好梳理了一下对SaaS的认识.今天整理一下! 一.云计算与SaaS 说起SaaS,就得先说说云计算了.关于云计算分为三层 ...

  4. 《SaaS架构设计》试读:前 言

     SaaS源于一种简单的思想:软件即服务!但SaaS的出现彻底改变了人们对软件的观念,使用软件的人从产品消费者转换为服务消费者,而开发软件的人从产品提供者转换为服务提供者.当然,SaaS带来的改变不仅 ...

  5. 什么是多租户saas架构设计

    本文来说下什么是多租户saas架构设计 文章目录 概述 多租户架构 多租户,多组织,用户区别 多租户和多组织 租户和用户 SaaS应用和PaaS平台的多租户 多租户架构设计和资源隔离 共享资源时候的资 ...

  6. 元数据驱动的SaaS架构如何设计

    元数据驱动的SaaS架构如何设计 作为业务系统技术开发同学,面向当下:首先应该是快速搭建业务通路,让线上业务跑起来,快速试错,解决生存问题:第二步是在链路通了,业务基本跑起来的基础上如何支撑业务跑更快 ...

  7. 迟到的书评:互联网时代的革命-SaaS架构设计

        3月2日,阿里巴巴发布公告称将于4月30日起关闭阿里软件互联平台并终止提供相关服务.公告显示,届时包括阿里软件社区.软件互联平台.软件开发平台在内的各项服务和功能将不可使用,相关数据和信息可能 ...

  8. 作《互联网时代的软件革命--SaaS架构设计》上市了

    拙作<互联网时代的软件革命--SaaS架构设计>借CSDN举办的'软件开发2.0大会2008'的东风上市了.本书12月5日的签销也比较火爆. 本书官方网站:http://www.broad ...

  9. 《SAAS 架构设计》读后感

    最近读了一下 <SAAS架构设计> 这本书,总体感觉这本书,还算可以,前面几章写的还不错,后面章节写的没有耐心. 整本书说的内容说的都比较简单,看了之后很多东西都没有印象,并且对于如果运营 ...

最新文章

  1. 微信小程序picker 轮滑1-100的实现
  2. Socket桥(转载)
  3. OpenGL次表面散射
  4. 用javascript实现一个stack overflow的例子
  5. java mysql dao_Java DAO 模式
  6. PyCaret 2.0在这里-新增功能?
  7. python现在时间 命令_Python3 - 时间处理与定时任务
  8. 说一下朗数可视化快速开发平台
  9. gnome-mplayer 挂载 srt字幕 乱码
  10. 项目管理工具——PDCA管理循环
  11. Oracle 创建新用户后无法登入,显示user lacks CREATE SESSION privilege; logon denied
  12. android 小说下载器 源码 分享
  13. 成都市金牛区2018年小学入学划片范围
  14. ToC产品和ToB产品的区别
  15. Android权限 - AppOps介绍
  16. 好用的z3数独求解器
  17. Freemarker讲解
  18. Linux traceroute no reply
  19. Linux嵌入式开发——vim编辑器
  20. 共话5G安全,开源网安亮相第31届中国国际信息通信展览会

热门文章

  1. 回滚保存点后究竟发生了什么?
  2. csc和acsc--余割和反余割函数
  3. 工业智能网关BL110应用之13:实现三菱 PLC FX3S 接入华为云平台
  4. GKCTF domo
  5. 在 KubeSphere 中使用 Rook 构建云原生存储环境
  6. 技术交底书怎么撰写?看这一篇就够了
  7. 豆芽儿 - 高端IT人才成长社区 上线啦!
  8. java获取emf中的文字_一键提取图片中的文字的5种方法!
  9. 英语字母c的语言教案,幼儿园小班英语单词教案五篇
  10. 心脏病_冠心病智能预测模型(人工智能,机器学习,用于论文作业_专利_企业建模__项目申报_科研报告)