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

举报
大中华潇湘夜雨 发表于 2021/11/30 09:38:50 2021/11/30
【摘要】 本文公开了基于NFS和Minio的多租户文件管理系统的实现。包括:NFS服务端,NFS客户端,Minio文件服务等。以使得每个租户(用户)可能会有自己的 namespace,每个租户(用户)的配置数据以及上传的文件都会归属到自己的 namespace 下,以此来实现多租户间的文件隔离。通过良好的文件隔离来降低供应商的维护成本(包含设备与人力),在一定程度上提升了租户文件的隐私与安全保护

背景

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

技术

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

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

图片5.png

实现

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

 

图片2.png

1 - 基于NFSMinio多租户管理-租户开通过程

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

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

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

 

图片3.png

2 - Minio多租户目录管理

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

 

图片4.png

3 - 基于NFSMinio多租户管理-租户上传文件过程

 租户管理员登录系统

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

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

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

优势

本方案具有以下优点

  1. 单个租户文件统一存储、统一管理。
  2. 通过Minio轻量级对象存储服务实现文件管理服务,便于维护和拓展。
  3. 无状态,存储介质动态扩容,具有灵活的按需伸缩的特性底层基于NFS有大量实践方案,稳定和运维方便。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。