一种租户文件管理系统实现方式

网友投稿 1218 2022-05-30

【背景】

近年来,企业级SaaS市场近几年在每个细分领域都涌现出了一批玩家。从技术角度看,不同的领域、不同的SaaS产品,必定有着同样的架构内核,其中最关键的便是对于多租户(Multi-Tenancy)的支持。对广大企业来说,引入SaaS产品本质上就是对互联网服务的租赁,因而多租户便必然是SaaS的天然属性之一,也是其与传统互联网应用架构设计的重要差异之一。在SaaS架构的成熟度演进过程中,其核心路线便是如何实现多租户,也就是说,SaaS成熟度的高低,很大程度上取决于如何实现多租户的支持。

【技术】

多租户管理的目的是资源的隔离,包括存储资源的隔离和计算资源的隔离,隔离存储资源概括来说可以用一个词来解决:命名空间。以数据库为例,我们只需要在每条租户的记录上,记下对应租户的标识即可。一般来说,不考虑分库分表的情况下,我们逻辑上会在同一个Schema中,存储所有租户的数据。这就要求每张表都会有一个tenant_id字段,也即每条记录都携带了它的“命名空间”——租户标识。

在业务系统设计时,针对SAAS部署,我们针对所有业务表增加了organization_id字段,用于区分不同的租户,这种方式对结构化数据实现不同租户的数据隔离。但是,针对系统使用的图片、文档、视频、音频等非结构化数据,目前未做单独的存储,导致不同租户数据混合存储,这种情况严重影响了文件存储的管理和维护的效率。基于基于NFS和Minio的多租户文件管理系统的实现方法解决了目前的痛点。

【实现】

(1)租户创建时,根据用户协议为用户创建租户管理员,并为租户选择Minio文件服务器、创建工作目录及用户帐号。具体流程见图1。

图1 - 基于NFS和Minio的多租户管理-租户开通过程

① 超级管理员根据用户协议创建租户,并为租户创建租户管理员。

② 超级管理员为租户设置租户有效期和激活状态。

③ 超级管理员从Minio文件服务器列表中选择文件服务器,为租户分配存储空间、创建Minio文件服务帐号和工作目录,多租户模式下Minio文件工作目录如图3所示:

图2 - Minio多租户目录管理

(2)租户上传文件时,根据租户ID从租户文件服务器表中家在为租户分配的文件服务器信息,文件将被上传至租户对应的Minio文件服务的工作目录。具体流程见图3。

图3 - 基于NFS和Minio的多租户管理-租户上传文件过程

① 租户管理员登录系统。

一种多租户文件管理系统实现方式

② 租户管理员选择文件进行上传。

③ 系统根据租户ID从租户文件服务列表中家在为租户分配的文件服务器信息。

④ 系统根据租户的文件服务器信息自动将文件上传之租户对应的Minio文件服务器工作目录。

【优势】

本方案具有以下优点:

单个租户文件统一存储、统一管理。

通过Minio轻量级对象存储服务实现文件管理服务,便于维护和拓展。

无状态,存储介质动态扩容,具有灵活的按需伸缩的特性。底层基于NFS,有大量的实践方案,稳定和运维方便。

存储 弹性文件服务

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:架构图神器DaC之Diagram
下一篇:手把手教学:如何引入 SDK
相关文章