赞
踩
多租户(multi-tenancy)是一种软件架构模式,它允许单个软件实例(例如,一个网站、一个应用程序或一个服务)同时为多个用户或租户提供服务。在多租户架构中,不同用户共享同一套软件和硬件资源,但彼此之间的数据是隔离的,每个用户通常只能访问自己的数据。
多租户的概念是为了提高资源利用率、降低成本和简化管理。通过将多个用户放置在同一实例中,可以避免每个用户都需要独立的软件实例和硬件资源,从而节省了资源。同时,多租户还可以使软件提供商更轻松地管理和维护系统,因为只需管理一个实例而不是多个实例。
在多租户架构中,通常会使用各种技术来确保不同用户之间的数据隔离,如数据库分区、数据加密和访问控制等。
多租户架构的实现方式有许多种,最常见的实现方式是以下三种。
在多租户系统中,我们为每个数据库表增加一个所属租户的字段,例如 `tenancyId` ,来实现租户数据的隔离,这是一种常见的做法。`tenancyId` 是一个标识符,用于标识每个租户的数据。
当用户登录系统时,我们要求用户必须选择一个租户系统之后才能登录,当用户操作写入数据时,同时这条数据里的 `tenancyId` 字段必须记录用户所属的租户,当用户操作查询数据时,系统自动追加查询条件,确保每个租户只能访问自己的数据。
通过使用 `tenancyId` 字段,多租户系统可以实现数据隔离。
这种方式只需要部署一套应用程序、一个数据库schema,对于部署运维来说,比较方便;数据都在一起,方便做跨租户的统计分析业务。
但是这种方式的缺点也很明显:
第二种方式,是部署一套应用程序,多个数据库schema,租户共用一套标准的应用程序,租户的数据分别放在不同的数据库schema中,实现了真正的数据物理隔离。
这种方式不需要为每个数据库表增加所属租户的字段,我们为每个租户创建一个专用的数据库schema,并初始化系统的数据库表结构。系统必须实现了多数据源架构,我们在系统的数据操作层,增加一个数据源切换的逻辑,不同租户操作或查询数据时,系统自动切换到对应的数据源。
这种方式相比第一种方式,实现了数据的真正隔离,对业务的侵入性更小,是一种更好的选择。
这种方式的缺点:
当前容器技术已经非常成熟,借助容器技术,实现真正应用隔离、数据隔离的多租户架构,是目前市场上最普遍的做法。
部署一套容器云环境,可以是k8s、rancher等开源云平台,也可以是阿里云、华为云等商业云平台。开发一套租户管理系统实现租户的注册、管理、租户应用的自动开通、自动监控、自动注销等功能,当租户注册时,自动调用容器云平台的接口,为租户部署一套专用的应用程序、数据库schema,生成一个租户专用的应用访问地址。
这种方式,借助容器云的技术,快速、稳定的部署系统,且实现了应用程序、应用数据的物理隔离,不同租户之间没有任何影响,这种方式对业务的侵入性几乎为零,扩展性、稳定性最好。
这种方式的缺点:
无论哪一种方式,都有自己的优缺点,适用于不同的业务需求和技术环境,设计者还需要结合自己项目的实际情况,有所取舍,最适合自己的才是最好的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。