企业云盘手机资料在线存储架构设计

前些年做某机关项目时设计和开发的一个线上云存储架构,核心功能为:

1,  网络硬盘,文件上传下载,客户端文件管理,支持文本,二进制文件传输。

2,  文件系统权限控制(目录管理,文件只读,读写,修改,删除,共享,推送)。

3,  文件增量上传,下载。

4,  本地终端文件夹同步。

5,  文件版本控制,(版本快照,历史回溯)。

6,  在线编辑,个人笔记本,工作组笔记本,协同文档编辑。

7,  搜索引擎,提供类似百度搜索体验内容(自动补全,关键字着色,条件组合,热点)

 

规模要求:

5000+在线用户 。

10M用户访问/天。

频繁读写,高网络带宽要求。

 

文件管理:

用户通过文件管理客户端管理线上文件夹,基本功能是当前用户的空间及文件管理,与本地操作系统文件管理功能实现相当,本章节不过多描述。

 

文件上传:

用户通过本地客户端同步本地文件,基本实现是把本地文件直接上传到线上,

方法1场景如下:

1)      用户上传300M文件到线上,存储在云端。

2)      修改后的数据文件仍然是300M,第二次上传到线上, 存储在云端,不覆盖之前的版本V1,另存一份新文件,记录为版本V2。

3)      再次少量修改后的数据文件仍然是300M,第三次上传到线上, 存储在云端,不覆盖之前的版本V1和V2,另存一份新文件,记录为版本V3。

 

 

本方法消耗900M网络带宽以及900M存储空间。

改进后方法2:

把文件进行切割,把大文件切成小文件,假设超过64M的每个文件都切割成10份,每一份文件分块都计算唯一的哈希值,哈希值会同步记录在本地客户端和服务器元数据库中,用于比对每一块文件分块的变化情况。每一份文件分块都会存储在在线存储云当中,并有版本号记录。

场景如下:

1)  用户上传300M文件到线上,本地客户端拆分文件,计算哈希值,并存储在云端。

 

 

2)  修改后的数据文件仍然是300M,经过比对,只有其中一个数据块发生变化,第二次上传到线上时,只有64M的数据流量, 存储在云端时,只占用64M的数据空间,新的数据块不覆盖之前的版本V1,另存一份新文件,记录为版本V2。

 

 

3)  再次轻微修改后的数据文件仍然是300M,经过比对,仍然只有其中一个数据块发生变化,第三次上传到线上时,只有64M的数据流量, 存储在云端时,只占用64M的数据空间,新的数据块不覆盖之前的版本V1和V2,另存一份新文件,记录为版本V3。

本方法消耗428M网络带宽以及428M存储空间。

方法2同时解决以下问题:

    1)  高效率存储

    2)  高效率使用传输带宽

    3)  实现增量文件管理

    4)  文件多版本管理

文件同步服务:

 

 

文件同步是指多客户端、终端之间的文件同步,例如用户在本地更新上传文件,那么其它设备(手机APP、Desktop应用,Linux 服务进程)会收到更新通知,并能通过本地应用进行自动更新,实现一处修改,处处同步,高度一致。

MQ服务器就是起到异步高并发的文件更新或上传消息通知机制。

 

 

元数据

元数据记录了文件在线存储后的信息,特别是文件拆分后,会产生多个数据块,关键的几个字段是BLOCK_ID,BLOCK_ORDER,VERSION,客户端的数据块拆分和拼接都需要用到这些信息。

{ 
 BLOCK_ID:"string",
 BLOCK_ORDER:"number",
 object:{
   version:"number",
   is_folder:"boolean",
   modified:"number",
   file_name:"string",
   file_extention:"string",
   file_size:"number",
   file_path:"string",
   user:{
            user_id:"string",
            email:"string",
            quota_limit:"number",
            quota_used:"number",
            device:{
                         device_id:"string"
                   }
         }
       }

}

整体构架图

 

 

客户端:负责本地文件管理,拆分,拼接,版本对比,索引内容计算,同步,元数据管理,对本地数据文件进行一定程度的处理,把部分计算能力分散在计算中心以外。

同步服务:多客户端高并发异步处理缓冲区,消息内容包括文件更新通知,系统事件通知。

APP服务:负责文件管理,在线编辑,共享,分享,个人空间管理,系统流量信息统计,账户管理,版本管理,在线查看,标签管理,系统通知,热点顶置,文件碎片管理。

搜索服务:对线上存储的内容进行索引,可快速搜索线上文档的内容,提供快照,高亮提示,内容搜索范围包括本文、docx、xlsx、PPT、PDF*、图片、标签,并支持按创建日期、修改日期、上传用户、群组、文件密级等组合条件进行自定义搜索。

存储空间:支持FTP、HTTPS、SMB、ATP等传输协议,支持EXT4、HDFS、S3、阿里云等存储空间。具备冗余、高可用,灾备,高扩展等特性。

 

posted @ 2021-05-24 19:11  周末快线  阅读(311)  评论(0)    收藏  举报