FastDFS 是一个轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡,同时支持存储服务器在线扩容。

1. 系统架构图

fastDFS_Introduct_0

Storage Server

Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个 group 内包含多台 storage 机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

Tracker Server

Tracker 是 fastDFS 的协调者,负责管理所有的 Storage Server 和 group,每个 Storage Server 在启动后会连接 Tracker,告知自己所属的 group 等信息,并保持周期性的心跳,Tracker 根据 Storage 的心跳信息,建立 group ==> [Storage Server List] 的映射表。

Client

客户端,作为业务请求的发起方,通过专有接口,使用 TCP/IP 协议与跟踪器服务器或存储节点进行数据交互。
协议内容如下:

  • 协议包由两部分组成:header和body
  • header共10字节,格式如下:
    • 8 bytes body length
    • 1byte command
    • 1byte status
  • body数据包格式由取决于具体的命令,body可以为空

2. 上传流程

fastDFS_Introduct_1

• 1. client 询问 tracker 上传到的 storage,不需要附加参数;
• 2. tracker 返回一台可用的 storage;
• 3. client 直接和 storage 通讯完成文件上传。

3. 下载流程

fastDFS_Introduct_2

• 1. client 询问 tracker 下载文件的 storage,参数为文件标识(组名和文件名);
• 2. tracker 返回一台可用的 storage;
• 3. client 直接和 storage 通讯完成文件下载。

参考:

  1. fastDFS GitHub repo.