一、概念
1)FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存 储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。 特别适合以文件为载体的在线服务,如相册网站、视频网站等;
2)FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调 度工作,在访问上起负载均衡的作用;
3)为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由 一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储 系统中的文件容量;
4)一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的 文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用;
5)当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将 它们配置为一个新的卷,这样就扩大了存储系统的容量;
6)在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增 服务器切换到线上提供服务;
二、架构
三、上传/下载流程
3.1、上传流程
1)client 询问 tracker 上传到的 storage,不需要附加参数;
2)tracker 返回一台可用的 storage;
3)client 直接和 storage 通讯完成文件上传;
3.2、下载流程
1)client 询问 tracker 下载文件的 storage,参数为文件标识(组名和文件名);
2)tracker 返回一台可用的 storage;
3)client 直接和 storage 通讯完成文件下载;
Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录 storage server 的状态,是连接 Client 和 Storage server 的枢纽;
Storage Server:存储服务器,文件和 meta data 都保存到存储服务器上;
group:组,也称为卷,同组内服务器上的文件是完全相同的;
文件标识:包括组名和文件名两部分(包含路径);
meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768;
四、同步机制
1)同一组内的 storage server 之间是对等的,文件上传、删除等操作可以在任意一台 storage server 上进行;
2)文件同步只在同组内的 storage server 之间进行,采用 push 方式,即源服务器同步给目 标服务器;
3)源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了(例外:是新增加一台 storage server 时,由已有的一台 storage server 将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器);
五、对比
对比项 | FastDFS | NFS | 集中存储设备 (NAS) |
---|---|---|---|
线性扩容性 | 好 | 差 | 差 |
文件高并发访问性能 | 高 | 差 | 一般 |
文件访问方式 | API | POSIX | 支持POSIX |
硬件成本 | 较低 | 中等 | 高 |
相同内容文件只保存 一份 | 支持 | 不支持 | 不支持 |