一、fastDFS是什么
fastDFS是c语言编写的一款开源分布式文件系统,使用fastDFS可以很方便搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
二、fastDFS工作原理
fastDFS包括Tracker server和Storage server,客户端请求Tracker server进行文件上传和下载,Tracker server通过调度Storage server完成上传和下载。如下图所示:
详细解释:
(1)Tracker Server
其作用是负载均衡和调度,通过Tracker可以在文件上传时根据一些策略找到Storage提供文件上传服务,Tracker也就是追踪/调度服务器。
(2)Storage
其作用是文件存储,客户端上传的文件实质上都是保存在Storage服务器上,Storage也就是存储服务器。Storage会连接集群中的所有Tracker,定时向他们报告自己的磁盘剩余空间、文件同步状态、文件上传下载次数等统计信息,Tracker可以根据每组Storage的状态来进行调度。
Storage集群采用分组存储方式,Storage集群由一个或者多个组构成,其存储总量为集群中所有组的存储容量之和。一个组由一台或多台存储器构成,同组内的Storage之间会相互连接进行文件同步,从而保证同组内的每个storage文件完全一样,不同组的storage之间不会相互通信的。一个组的存储容量为该组内存容量最小的那个。
上传文件流程
说明:
客户端上传文件之后,服务器会返回文件id,该id用于之后访问该文件。内容包括:组名、虚拟磁盘路径、数据两级目录、文件名。如下所示:
组名:文件上传之后文件所在的storage组名称,需要客户端自行保存。
虚拟磁盘路径:与配置的store_path*对应。例如配置store_path0则对应M00,配置store_path1则对应M01…
数据两级目录:storage在每个虚拟磁盘路径下创建两级目录,用于存储数据文件。
文件名:不是上传时的文件名,而是存储服务器根据特定信息生成的,文件名包含:原存储服务器ip、文件创建时间戳、文件大小、随机数和文件拓展名等。
下载文件流程:
说明:
tracker根据客户端提供的文件id来快速定义文件,通过组名定位到客户端需要访问的存储器服务器是哪个组,并选择合适的存储服务器提供给客户端访问;虚拟路径可以找到对应文件的存储路径,再根据文件的两级目录和文件名,就可以很快的找到需要下载的文件。
未完待续…