初识FastDFS
简介:百度百科
FastDFS,我们可以叫它快速的分布式文件系统。其中DFS(distributed file system),是分布式文件系统。
FastDFS是由淘宝的余庆先生所开发的一个轻量级、高性能的开源分布式文件系统。用纯C语言开发,功能丰富:
文件存储 、 文件同步 、 文件访问(上传、下载)、 存取负载均衡、 在线扩容。适合有大容量存储需求的应用或系统。同类的分布式文件系统有谷歌的GFS、HDFS(Hadoop)、TFS(淘宝)等。
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 上传和下载流程
上产流程
①客户端上传文件时,先发送自己要上传的请求
②Tracker服务器找到一个可用的StorageServer,将其地址和端口号发送给客户端
③客户端通过IP和端口号上传文件到Storage Server
④存储完成后,Storage Server返回一个文件的ID到客户端。
这个文件的ID用于以后访问该文件的索引信息,包括组名,虚拟磁盘的路径,数据两级目录,文件名。
组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。
n 虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。如果配置了store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。
n 数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
n 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
下载流程
①Client通过Tracker server查找要下载文件所在的的Storage Server 。
②Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号
③Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件
④下载文件成功