一种多租户文件管理系统实现方式
【背景】
近年来,企业级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,有大量的实践方案,稳定和运维方便。
- 点赞
- 收藏
- 关注作者
评论(0)