• 多租户架构


    一、什么是多租户?

    多租户简称SaaS,是一种软件架构技术,简单来说是指一个单独的实例可以为多个租户服务,并且可以保证租户间数据的隔离性,通过使用多租户技术可以保证系统共性的部分被共享,个性的部分被单独隔离。

    二、租户和用户的区别

    租户和用户实际是不同的两个概念,租户更多的是为了资源管理和计费计量使用,而用户更多的是为了业务功能和授权使用。

    租户和用户有时候也是一一对应的关系,比如你开发一个面向个人用户的在线邮箱SaaS应用,那么这个时候租户和用户本身是对应的,租户即用户。

    但是如果你开发的是一个面向企业的SaaS应用系统,那么这个时候租户对应的是组织这个层面,即入驻的企业是租户,对应企业入驻后,SaaS应用会先给企业分配一个管理员账号,这个时候管理员再去详细的录入企业里面的具体用户账号。

    也就是说租户是第一层,而下面的组织架构和用户是第二层。

    三、多租户的好处

    1、多租户技术可以实现多个租户之间共享系统实例,同时又可以实现租户的个性化定制

    2、通过在多个租户之间的资源复用,减少运营管理维护成本,有效节省开发应用的成本。当系统升级时,只需要升级相同的核心代码即可让所有租户都同时升级。

    比如我们开发一个SaaS云服务的CRM系统。这个系统部署在公有云端可以开放给多个企业客户使用。那么我们就遇到了一个关键问题。即是否当新入驻一个新的企业客户的时候,我们都需要重新在部署一套应用给这个客户使用?

    如果是这样,那么当新客户入驻的时候,将带来具体的人工投入和资源投入成本。

    因此实际的情况是我们希望新增加客户的时候,仍然还是已有的那套应用系统。但是对于最终的入驻客户来说,我们又希望客户完全感知不到这点,就像是单独给他们部署了一套系统一样。虽然很多客户使用同一套应用,但是能够很好地做到资源和数据的隔离。

    四、多租户的重点和难点概述

    第一个重点是上面提到的多租户的隔离

    第二个重点就是能够为各个租户按需要实时地提供各种计算资源和存储资源,而且有清楚定义的数据采集和计费模型。由于资源池是共享的,我们必须要能够准确地采集到各个租户对实际资源的使用情况,以方便进行多租户的计费

    五、多租户重点------隔离的实现方式

    1、独立数据库

    2、共享数据库,隔离数据架构(独立表空间)

    3、共享数据库,共享数据架构(共享表空间,按租户id字段区分租户) 

     

     4、各种隔离方式的优缺点总结

    隔离方案成本支持租户的数量优点缺点
    1、独立数据库1、这种方案的用户数据隔离级别最高,安全性最好,

    2、为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;

    3、如果出现故障,恢复数据比较简单。

    1、昂贵。一台服务器支持的数据库数量有限,这意味着这种解决方案将需要更多的硬件(而不是将所有内容存储在一个数据库中的方法),更多的硬件-更多的管理员,服务器机房空间和电费
    2、再次昂贵。当一台服务器上有多个数据库,其总容量大于RAM大小时,数据将被转储到交换文件中,因此访问硬盘非常慢。出路是购买更多服务器
    2、共享数据库,隔离数据架构较多

    1、供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。

    2、访问共享发生在DBMS级别,因此不需要我们进行其他开发(我们节省了工时)
    3、更少的数据库-更少的硬件资源
    4、可扩展性不错-在添加客户端时,我们会基于标准架构创建一个新架构,配置访问权限,然后完成。尽管所有架构都基于标准架构,但由于保留了隔离性,因此它们可能会发生一些更改,因此可以编辑列,表等。

    1、如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其他租户的数据;(因为只有一个数据库,所以如果来自一个客户端的表已折叠,则数据库的简单回滚将把所有客户端的数据返回到过去,这是不可接受的。在这里,您将需要选择性地回滚以及合并新旧数据。该过程比仅回滚整个数据库要复杂一些。)

    2、如果需要跨租户统计数据,存在一定困难。

    3、共享数据库,共享数据架构非常多

    1、维护和购置成本最低,允许每个数据库支持的租户数量最多。

    2、当我们将所有信息存储在一组表中时,更易于开发,更新和维护
    3、添加客户就像在客户表中创建新记录一样简单

    1、隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;

    2、没有灵活性,所有客户端都使用同一组表和列。出现了非典型客户会导致问题和打补丁。
    3、浪费人力和精力开发自己的权限分离系统

    4、备份和恢复问题。一个表不能简单地删除和创建,因为它包含其他客户端的数据。您必须查找所需的行并将其覆盖,这很麻烦。

     

  • 相关阅读:
    SQL SERVER中存储过程的使用场景
    数字人惯性动作捕捉技术服务,激发吉祥物IP创新活力
    数学中的基
    HTTP——HTTP的请求报文和响应报文的内容
    06.数据解析-xpath
    给Windows文件夹添加备注信息
    git上传代码冲突
    ELK SpringData框架 Springboot集成elasticSearch (六)
    Qt实现2D绘图
    记录协助Javaer硬件快速开发过程之Web技术栈对接施耐德网络IO网关
  • 原文地址:https://blog.csdn.net/qq_44818449/article/details/125886444