分布式文件存储-FastDFS之个人记录
FastDFS
- 对于一个项目来说尤其是大型项目,它里面存储很多的文件,比如:图片、文档、报表…,如果使用传统方式把这些资源存储在某一台的机器磁盘的话,可想而知其容量是不足够支撑,这些海量文件的,因此使用FastDFS分布式文件存储的解决方案来进行解决
- 阿里开源的轻量级的分布式文件系统
FastDFS的功能
- 分布式文件存储、文件同步、文件访问(文件上传、下载)等…
- 还支持冗余备份、负载均衡、线性扩容
- FastDFS它注重高可用、高性能优点
FastDFS内部架构的主要两个角色
Tracker Server和Storage Server
流程:
- 首先客户端需要先来请求到Tracker Server
- 然后 tracker server根据自己内部的信息来决定当前的文件最终存储到哪一个Storage Server中
Tracker Server:主要是负载均衡和调度
- 1:接收用户的请求向用户发送响应
- 2:收集Storage 中的信息,根据这些信息来决定当前用户上传的文件存储到那个Storage Server中
Storage Server:就是用来进行文件的存储,它采用的是线性扩容的形式来进行文件存储,理论的情况下它的存储容量是无上限的
FastDFS架构图
上传流程图(自己画的,不太好看)
File_id
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件夹的索引信息。
文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
例如:
组名
文件上传后所在storage组名称,在文件上传成功后由storage服务器返回,需要客户端自行保存
虚拟磁盘路径
storage配置的虚拟路径,与磁盘选项store_path* 对应。如果配置了store_path0则是M00,如果配置了store_path1,则是M01,以此类推。
数据两级目录
storage服务器在每个虚拟磁盘路径下创建的两级目录用于存储数据文件
文件名
与文件上传时不同。是由存储服务器根据特定的信息生成;文件名包含:源存储服务器ip地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息