目录
一、FastDFS简介
FastDFS 是一款开源的高性能分布式文件系统(DFS),专为互联网应用设计,具备高容量、负载均衡和冗余备份能力。其核心功能包括:
- 文件存储:通过存储服务器(Storage Server)管理文件,支持多级目录结构(如
M00/02/44/
)。 - 文件同步:采用异步复制机制,确保组内存储服务器间的数据一致性。
- 文件访问:提供上传、下载接口,支持通过文件ID(包含组名和路径)定位文件。
架构角色:
- Tracker Server:调度服务器,负责负载均衡和存储服务器管理。客户端通过Tracker获取可用的Storage地址。
- Storage Server:存储服务器,按组(Group)组织,组内服务器互为备份,支持横向扩展。
设计特点:
- 高可用性:组内服务器自动同步数据,避免单点故障。
- 高性能:轻量级协议,减少网络开销,支持高并发访问。
- 线性扩容:通过增加Storage组或服务器提升容量。
二、同步机制详解
FastDFS 的同步机制基于 binlog异步复制,核心流程如下:
- Binlog记录:
- Storage Server 将文件操作(创建、追加、删除)写入本地binlog文件,格式为:
时间戳|操作类型|文件名(如:1490251373C M02/52/CB/file.jpg)
- 操作类型区分源数据(大写,如
C
)和副本数据(小写,如c
),避免循环同步。
- Storage Server 将文件操作(创建、追加、删除)写入本地binlog文件,格式为:
- 同步规则:
- 组内同步:仅在同组Storage间同步数据,跨组不互通。
- 源头优先:仅同步客户端直接操作的源数据,副本数据不触发同步。
- 增量同步:通过
mark
文件记录同步位置(如binlog_offset=3944
),支持断点续传。
- 新增节点同步:
- 新Storage加入时,Tracker选择一台现有Storage作为同步源,推送全部数据(包括源头和副本)。
- 同步完成后,新节点上线提供服务。
- 同步优化:
- 文件压缩:支持大文件分块压缩,减少网络传输量。
- 负载均衡:Tracker根据Storage负载情况分配同步任务。
示例场景:
- 客户端上传文件至
Storage A
,A记录binlog并同步至同组Storage B
。 - B收到同步请求后,检查操作类型为
C
(源创建),执行文件写入并记录自身binlog(操作类型c
),不再向其他节点同步。
三、FastDFS安装
1. 安装依赖库
# 安装 libfastcommon(FastDFS公共函数库)
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
tar -zxvf V1.0.38.