产业互联网平台的搭建及运营,是一个类似私域流量的互联网平台,并对此平台分配单独的二级域名,单独的入口,让彼此企业的业务不冲突。
从技术上来说,这是一种SAAS(软件即服务)的软件架构,也是现在互联网上比较火的基于SAAS的租户平台系统,从使用者的角度看,通过那些二级域名(租户)进入系统后,只能看到此二级域名(租户)下的数据,看不到其他租户系统的数据。
那么,我们要做的产业互联网平台,可以看到是一个租户系统,由企业进行申请及创建,然后通过企业去扩充,或邀请商家/买家进行入驻(打通上下游),来实现自身圈子业务的目的。
Saas架构图
那么,什么是多租户系统?其实是一种软件架构技术,也可以叫多重租赁技术,简单点讲,就是在一台服务器上运行单个应用程序,它为多个租户(客户)提供服务,并保证租户间的数据是隔离的。
从上面的介绍可以看出SAAS平台的重要部分,即数据是彼此隔离的。那么,SAAS架构的系统,在保证系统功能是同一套的前提下,怎么来实现租户数据的隔离呢?这也是我今天早会要简单介绍的内容。比较常见的2种模式是:
1)一套系统 + 独立数据库;
2)一套系统 + 共享数据库(通过租户标识来区分数据),
除了这2种模式外,还有一些其他的方式,比如独立系统+独立数据库(独立部署),一套系统 + 分片数据存储等。(说明:这里的一套系统,是指支持多租户的应用系统)。
1 一套系统 + 共享数据库
共享服务+共享数据库架构图
基于这种模式的SAAS的多租户系统,应用程序都是同一套,所有的租户的数据都是存储在同一个数据库上的同一套schema下(同一套表上,这里的表与excel的表相似),通过一个或者多个“租户标识列”来区分不同的租户的数据,以便使用者在访问系统时,通过选择性地筛选出当前租户的数据,而不会看到其他租户的数据。在这种模式下,所有“表”都是所有租户共享的。
采用这种模式的优点是:
1)硬件成本低,只有一个数据库;
2)数据的备份与恢复简单;
3)应用程序升级及运维简单。
缺点是:
1)数据隔离级别低,容易暴露其他租户/所有租户数据;
2)数据检索的要求性高,安全性低,需要在设计开发时加大对安全的开发量,强制将查询返回的数据限定为单个租户。(可以通过全局的控制来实现“租户条件限制”,不建议由每个功能来实现“租户条件限制”,容易出错)
2 一套系统 + 独立数据库
共享应用 + 独立数据库
在这种模式下,应用程序都是部署的同一套,区别在于为每一个租户分配一个独立的数据库,每个新注册的租户,都要为其提供一套独立的数据库,保证每个租户的数据是彼此隔离的。
这种模式,通过租户来选择所要使用的数据源,不需要在功能中嵌入“租户条件筛选”的逻辑,不容易出现租户的数据互相串通的情况。
采用这种模式的优点是:
1)数据的隔离性强,可以按需对租户的数据权限进行控制。
2)租户数据安全性高,不会因为同在一个“表”上而导致数据错误操作,或者导出。
3)程序筛选逻辑变简单化。
4)可为租户提供定制化服务,优化数据库的性能,不会影响到其他租户。
缺点是:
1)硬件成本高(相对于共享数据库) ;
2)程序的升级及运维管理较工作量大(通用功能上线);
3)数据的恢复与备份工作量大,要有专业的DBA来维护。
4)跨租户统计数据,存在一定困难。
5)需要维护数据库创建清单,或者升级清单。
3 独立系统 + 独立数据库
独立服务 + 独立数据库
这种是比较常见的部署模式,为每个企业单独部署一套系统。在这种模式中,对于每一个租户,整个应用程序需要重复部署安装一次。应用程序的每个实例都是独立实例,因此它不会与任何其他独立实例交互。每个应用程序实例只有一个租户,因此只需要一个数据库。租户拥有自己的数据库。
优点是:
1)数据隔离性高(比“一套系统 + 独立数据库”还要高),这种是完全的物理隔离。
2)数据安全性高(可以针对不同机器分配不同的使用权限)
3)程序开发简单,不需要关注租户的概念
4)可以提供更多的定缺化服务,不会影响其他租户系统。
缺点是:
1)硬件成本高(需要较多的服务器)
2)运维管理成本高
3)程序升级与维护工作量大(当独立部署的系统多进)
4)跨租户统计数据,存在一定困难。
至于选择哪种架构模式,需要结合项目的投入、数据的规模、安全性的要求及开发运维人员的情况,来决定使用哪种模式。
文章来源公众号,ID:技术老男孩。