Saas 化的三种方案

  • 2022-07-19
  • 浏览 (3724)

saas化的主要目的是实现每个租户的数据互相隔离,使用平台就像自己独占整个平台,感知不到其他租户的存在。

技术层面的话就是数据怎么存放的问题。每个租户使用的程序是同一套,只是数据都隔离了。

一般的saas化方案有三种,根据自己的实际需求去选择哪种saas化方案。

一、表字段隔离

这是一种轻量级的租户隔离方案,数据使用表字段去隔离,比如每个字段加上tennnt_id,增删改查的时候都带上租户id。这种租户id的设置最好在底层框架实现,比如mybatis-plus支持设置租户id。

优点

  • 实现简单,开发不会有太多的工作量
  • 轻量,不用多建表或库,节省物理资源

缺点

  • 开发出现bug,容易导致租户数据没有隔离,每次需要全量测试
  • 随着各个租户数据的增长,整体性能越来越差

二、库隔离

库隔离方案是每个租户对应一个库。

优点

  • 隔离的安全性比表字段的方案要好
  • 各个租户之间的影响不是很大,比如a租户的某个表的数据增加了一万条,在机器资源充足的情况下,对b租户的影响不大

缺点

  • 消耗的资源会比较多一点

物理隔离

物理隔离方案是每个租户的数据库对应不同的机器。

优点

  • 数据安全性最高
  • 性能最好

缺点

  • 消耗的资源最多

总结

  • 资源消耗: 表字段隔离 < 库隔离 < 物理隔离
  • 安全性: 表字段隔离 < 库隔离 < 物理隔离
  • 性能: 表字段隔离 < 库隔离 < 物理隔离
10  赞