一、FastDFS简介
FastDFS 是用 c
语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB
)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
Tracker Serve
:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。Storage Server
:存储服务器,主要提供容量和备份服务;以group
为单位,每个 group 内可以有多台 storage server,数据互为备份。Client
:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
2、FastDFS的存储策略
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
二、FastDFS文件上传下载流程
1、文件上传流程
FastDFS向使用者提供基本文件访问接口,比如 upload
、download
、append
、delete
等,以客户端库的方式提供给用户使用。
Storage Server 会定期的向 Tracker Server 发送自己的存储信息。当 Tracker Server Cluster 中的 Tracker Server 不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。
当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的 group
,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个 fileid
,最后根据以上的信息生成文件名存储文件。
客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。
虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*
对应。如果配置了 store_path0
则是 M00
,如果配置了 store_path1
则是 M01
,以此类推。
数据两级目录:storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
2、文件下载流程
客户端 upload file 成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。
跟 upload file 一样,在 downloa dfile 时客户端可以选择任意 tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。
二、实战
接下来的几篇文章介绍在两台机器上部署 tracker 和 storage,本来也想连同集群的文章一块儿写完的,无奈电脑配置多台虚拟机不太给力,放弃了,网上相关文章很多,自行查询即可。
Tracker / Client 服务器:
172.16.119.129
Storage 服务器:
172.16.119.128
在配置完成 Tracker Server 和 Stroage Server 服务器之后,会演示如何使用自带的工具实现文件的上传、下载、监控、删除。
然后再介绍最后一步,如果使用 Java 来操作 FastDFS 实现文件的上传,下载。
未经允许请勿转载:程序喵 » FastDFS 分布式文件系统介绍(一)