FastDFS
简介
- FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
应用场景
- 适合以文件为载体的在线服务,如相册网站、视频网站等
FastDFS角色
- 跟踪器和存储节点
- 跟踪器主要做调度工作,在访问上起负载均衡的作用
- 存储节点存储工作,完成文件管理的所有功能
FastDFS架构
- 跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
- 为了支持大容量,存储节点(服务器)采用了分卷或分组的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷 的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起 到了冗余备份和负载均衡的作用。
- 在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务
- 当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷毛这样就扩大了存储系统的容量。
FastDFS文件标识
- FastDFS中的文件标识为两个部分:卷名和文件名
上传
下载
FastDFS使用要点
FastDFS下载恢复原始文件名
-
应用系统在上传文件到FastDFS成功时将原始文件名和文件索引(FID)保存下来,如保存到数据库
-
用户点击下载时用Nginx的域名和FID拼出url,然后在url后增加一个参数,指定原始文件名。例如:
http://121.14.161.48:9030/group2/M00/00/89/eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk?attname=filename.apk
-
在Nginx上进心如下配置,这样Nginx就会截获url中的参数attname,在Http响应头里面加上字段 Content-Disposition “attachment;filename=$arg_attname”
-
浏览器发现响应头里面有Content-Disposition “attachment;filename=$arg_attname”时,就会把文件名显示成filename指定的名称。
FastDFS从文件的使用技巧
- 使用FastDFS存储一个图片的多个分辨率的备份时,希望只记录源图的FID,并能将其他分辨率的图片与源图管理。可以使用从文件方法
- 主从文件是指文件ID有关联的文件,一个主文件可以对应多个从文件
- 主文件ID = 主文件名 + 主文件扩展名
- 从文件ID = 主文件名 + 从文件后缀名 + 从文件扩展名