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

SaaS “可配置”和“多租户”架构的几种技术实现方式的更多相关文章

  1. Force.com 多租户架构

    本文参考自官方文档. 多租户架构 作为云计算平台的先驱,Salesforce最大的特点是"软件即服务"(Software as a Service,Saas).实现这种技术的基础便 ...

  2. Oracle 12c多租户架构浅析

    Oracle数据库12c的一大创新即是其采用的多租户架构.对于多租户这项新功能,业内的评价褒贬不一.有的声音认为,这项功能的用处不是特别大,但在某些场景或特定的环境下,多租户依然有它的用处.其最大的用 ...

  3. ABP Zero 单部署,单数据库,多租户架构

    首先,我们应该定义多租户系统中的两个条目: 租主(Host):租主是单例的(只有一个租主).租主会对创建和管理租户负责.因此,一个“租主用户”比所有的租户等级更高,并独立于所有租户,同时还能控制他们. ...

  4. CEVA引入新的可配置传感器集线器DSP架构

    CEVA引入新的可配置传感器集线器DSP架构 CEVA introduces new configurable sensor hub DSP architecture 在一个将多个传感器设计成几乎所有 ...

  5. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  6. java 学习写架构必会几大技术点

    java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation ...

  7. Java 基础入门随笔(1) JavaSE版——java语言三种技术架构

    1.java语言的三种技术架构: J2SE(java 2 Platform Standard Edition):标准版,是为开发普通桌面和商务应用程序提供的解决方案.该技术体系是其他两者的基础,可以完 ...

  8. 庐山真面目之十四微服务架构的Docker虚拟技术深入探究

    庐山真面目之十四微服务架构的Docker虚拟技术深入探究 一.我的开场白 曾几何时,分布式的发展也影响了后来的微服务架构的实现方式.到了现在,只要涉及到互联网技术领域,就会设计一个概念,那就是微服务. ...

  9. 大数据架构师NoSQL建模技术

    从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...

随机推荐

  1. ssh 配置无密码登录

    下框中在管理机上运行: [root@master ~]# ssh-keygen -t rsa #它在/root/.ssh下生成id_rsa和id_rsa.pub两个文件 [root@master ~] ...

  2. zabbix发送邮件脚本

    #!/usr/bin/env python #-*- coding: UTF- -*- import os,sys reload(sys) sys.setdefaultencoding('utf8') ...

  3. spring boot app

    一个demo  可以参考一下 AppConfig @Configuration @ComponentScan(basePackages = { "org.whm.test" }) ...

  4. Kibana6.x.x——启动后警告信息:Session cookies will be transmitted over insecure connections. This is not recommended.

    启动Kibana后,如果你看到如下警告信息: server log [08:03:18.001] [warning][security] Session cookies will be transmi ...

  5. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_高级管理控制(配置)

    一个应用程序的XML配置文件示例: <?xml version="1.0"?> <configuration> <runtime> <as ...

  6. Avito Cool Challenge 2018:D. Maximum Distance

    D. Maximum Distance 题目链接:https://codeforces.com/contest/1081/problem/D 题意: 给出一个连通图以及一些特殊点,现在定义cost(u ...

  7. Socket 代码收藏

    class SocketHelper    {        public delegate void Uplistbox(string txt);        public Uplistbox u ...

  8. Autel MaxiSys Pro Description

    Autel MaxiSys pro MS908P is an evolutionary smart solution for specialized automotive diagnosis and ...

  9. spring和springmvc父子容器关系

    一般来说,我们在整合spring和SpringMVC这两个框架中,web.xml会这样写到: <!-- 加载spring容器 --> <!-- 初始化加载application.xm ...

  10. Win2003 控制面板 打不开

    windown 2003 控制面板打不开 在运行框中输入regedit,进入注册表中的 HKEY_LOCAL_MACHINE/SYSTEM\Current ControlSet\Control\NLS ...