初识FastDFS

简介:百度百科

FastDFS,我们可以叫它快速的分布式文件系统。其中DFS(distributed file system),是分布式文件系统。

FastDFS是由淘宝的余庆先生所开发的一个轻量级、高性能的开源分布式文件系统。用纯C语言开发,功能丰富:

文件存储 、 文件同步 、 文件访问(上传、下载)、 存取负载均衡、  在线扩容。适合有大容量存储需求的应用或系统。同类的分布式文件系统有谷歌的GFS、HDFS(Hadoop)、TFS(淘宝)等。

FastDFS架构图

初识FastDFS

FastDFS两个主要的角色:Tracker Server 和 Storage Server 。

  • Tracker Server:跟踪服务器,主要负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽。——可以简单的把tracker server 当做成中间人。

  • Storage Server:存储服务器,保存文件和文件的meta data(元数据),每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息

  • Group:文件组,多台Storage Server的集群。上传一个文件到同组内的一台机器上后,FastDFS会将该文件即时同步到同组内的其它所有机器上,起到备份的作用。不同组的服务器,保存的数据不同,而且相互独立,不进行通信。

  • Tracker Cluster:跟踪服务器的集群,有一组Tracker Server(跟踪服务器)组成。

  • Storage Cluster :存储集群,有多个Group组成。

FastDFS 上传和下载流程

上产流程

初识FastDFS

①客户端上传文件时,先发送自己要上传的请求

②Tracker服务器找到一个可用的StorageServer,将其地址和端口号发送给客户端

③客户端通过IP和端口号上传文件到Storage Server

④存储完成后,Storage Server返回一个文件的ID到客户端。

这个文件的ID用于以后访问该文件的索引信息,包括组名,虚拟磁盘的路径,数据两级目录,文件名。

初识FastDFS

组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。

虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。

数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

下载流程

初识FastDFS

①Client通过Tracker server查找要下载文件所在的的Storage Server 。

②Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号

③Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件

④下载文件成功