• SaaS “可配置”和“多租户”架构的几种技术实现方式


    1、数据存储方式的选择

    多租户(Multi-Tenant ),即多个租户共用一个实例,租户的数据既有隔离又有共享,说到底是要解决数据存储的问题。

    常用的数据存储方式有三种。

    方案一:独立数据库

     

    一个Tenant,一个Database“的数据存储方式。隔离级别最高、最安全,但成本也高。

    优点:

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

    b.数据恢复简单;

    缺点:增大了数据库的安装数量,购置和维护成本高;

    方案二:共享数据库,隔离数据架构

     
     

    多个租户或所有租户共享Database,但一个Tenant,一个Schema的方式。

    优点:

    a.一定程度的逻辑数据隔离(并非完全),可满足较高程度的安全性保障;

    b.每个数据库,可支持更多租户数量;

    缺点:

    a.恢复数据较困难,因为将牵扯到其他租户数据;

    b.跨租户统计数据,实现难度大;

    方案三:共享数据库,共享数据架构

     
     

    一种租户共享同一个Database、同一个Schema,而另行通过TenantID区分租户数据的方式。

    优点:

    a.每个数据库可支持租户数量多,维护和购置成本低;

    缺点:

    a. 隔离级别低,安全性低,开发时需做大量安全开发工作;

    b. 逐表逐条备份和还原数据,数据备份和恢复困难。

    三种数据存储方案的比较

     
     

    但究竟选择何种方式,则取决于产品定价策略和租户对数据安全的接受程度。

    2. 系统安全性设计

    系统级:

    A. 使用HTTPS传输协议,以SSL(Security Socket Layer)交换数据,加强通信安全

    B. 使用数字签名,防止传输过程被篡改;

    C. 使用DES数据加密算法,设计用户身份识别;

    D. 定时备份业务数据;

    程序级:

    A. 权限配置(功能权限、数据权限等)

    B. 客户端输入校验,防止JS和XXS攻击、SQL注入等;

    C. 辅助安全设计,如密码控件、图片验证、手机验证等。

    3. 租户管理

    注册、订购、计费等管理。

    注册

     
     

    Tenant:租户

    User: 租户下 的用户,同一租户下可以有多个用户;

    Tenant的status属性,用于定义租户状态(待审核、已审核、启用、禁用、取消),赋予租户能否登陆的权限。

    订购

     
     

    PricePolicy:价格策略,支持按时间(年、月、日)、次数计价,以unit表示;

    Subsciber: 订购记录,记录租户选用了何种价格策略,以及服务期限或服务次数。

    计费

     
     

    Journal:流水账,记录租户使用服务的日志,用于生成账单和报表;

    4、数据隔离

     
     

    为每个需要隔离的业务表加上Tenant_ID字段,以实现租户数据间的隔离,这是最通常的做法。


    本文转自链接:https://www.jianshu.com/p/c11b19fc8110

  • 相关阅读:
    angularjs学习笔记—事件指令
    JS编写点击页面弹出被点击的标签名
    对数据进行排序
    springBoot集成seata
    maven打包时根据不同的环境生成不同的jar包名称
    单列模式-双重锁校验解析
    hashmap原理简述
    Linux搭建disconf(二)
    Linux搭建dubbo-admin 分布式服务监控中心
    Linux安装zookeeper
  • 原文地址:https://www.cnblogs.com/itsharehome/p/10041814.html
Copyright © 2020-2023  润新知