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

猜你喜欢

转载自www.cnblogs.com/itsharehome/p/10041814.html