企业云盘手机资料在线存储架构设计
前些年做某机关项目时设计和开发的一个线上云存储架构,核心功能为:
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、阿里云等存储空间。具备冗余、高可用,灾备,高扩展等特性。
浙公网安备 33010602011771号