FastDFS分布式文件系统架构学习(一)

发布于:2025-05-19 ⋅ 阅读:(25) ⋅ 点赞:(0)

FastDFS分布式文件系统架构学习

1. FastDFS简介

FastDFS是一个开源的轻量级分布式文件系统,由淘宝资深架构师余庆设计并开发。它专为互联网应用量身定制,特别适合以中小文件(如图片、文档、音视频等)为载体的在线服务。FastDFS不支持POSIX文件访问语义,只能通过专有API访问,无需支持文件随机修改等复杂功能,因此可以大幅简化设计,提高系统的性能和扩展性。

2. 系统架构

FastDFS采用了C/S架构,由两个主要角色组成:

2.1 Tracker Server(跟踪服务器)

  • 功能: 负责调度和负载均衡
  • 特点:
    • 作为集群访问入口,不存储文件
    • 提供集群状态管理
    • 执行存储策略选择
    • 可水平扩展部署多个节点形成集群

2.2 Storage Server(存储服务器)

  • 功能: 实际存储文件
  • 特点:
    • 按Group(组)管理,同组内服务器互为备份
    • 组内文件同步,保证数据一致性
    • 可水平扩展,支持海量存储

2.3 架构图

+------------------+     +------------------+
| Client           |     | Tracker Server   |
| (上传/下载应用)  | <-> | (调度和负载均衡) |
+------------------+     +------------------+
                               |
                               | 调度
                               v
+--------------------------------------------------+
|                   Storage集群                     |
| +----------------+        +----------------+     |
| | Storage Group1 | <----> | Storage Group2 |     |
| | (存储服务器组) |        | (存储服务器组) |     |
| +----------------+        +----------------+     |
+--------------------------------------------------+

3. 工作流程

3.1 文件上传流程

  1. 客户端连接Tracker服务器,请求上传文件
  2. Tracker根据负载均衡策略选择一个Storage服务器
  3. 客户端连接选定的Storage服务器并上传文件
  4. Storage服务器生成文件ID并返回给客户端
  5. 如果同组内有多个Storage,则自动进行文件同步复制

3.2 文件下载流程

  1. 客户端带着文件ID请求Tracker服务器获取可用的Storage
  2. Tracker返回可用的Storage服务器IP列表
  3. 客户端选择一个Storage服务器进行连接
  4. 客户端发送文件ID给Storage服务器
  5. Storage服务器根据文件ID查找并返回文件内容

4. 存储策略

FastDFS采用了两种存储策略:

4.1 组内存储

  • 同一个文件组内的Storage服务器互为备份,文件会在组内自动同步
  • 组内服务器存储相同的文件,提高了可用性

4.2 分组存储

  • 不同组的Storage服务器存储不同的文件
  • 通过增加组数量可以线性扩展系统的存储容量

5. 文件标识

FastDFS对每个文件生成一个文件ID,格式为:

group_name/filename

例如:group1/M00/00/00/wKgBaFYrGb-AfL48AAATIDVoHqQ788.jpg

这里:

  • group1: 文件所在的Storage组名
  • M00: Storage服务器ID
  • 00/00: 存储路径
  • wKgBaFYrGb-AfL48AAATIDVoHqQ788.jpg: 文件名(含时间戳等信息)

6. FastDFS的优势

  • 高可用性: 通过文件冗余实现高可用
  • 高性能: 支持高并发访问
  • 易扩展: 可以通过增加Storage节点线性扩展存储容量
  • 负载均衡: Tracker服务器自动进行负载均衡
  • 高效率: 专为处理小文件而设计的高效率文件系统

7. 应用场景

  • 图片服务器: 电商、社交媒体的图片存储
  • 视频存储: 短视频平台、在线教育的视频存储
  • 文档管理系统: 企业文档的集中存储和管理
  • 大数据存储: 分布式应用的数据存储

8 安装FastDFS

git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install

8配置Tracker服务器

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
# 编辑tracker.conf配置文件,设置base_path等参数
# 启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

8 配置Storage服务器

cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
# 编辑storage.conf配置文件,设置base_path、store_path等参数
# 启动storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

10. 结合Nginx使用

为了提高FastDFS的访问性能,通常会结合Nginx使用:

  1. 安装fastdfs-nginx-module
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
# 配置Nginx时添加此模块
  1. 配置nginx.conf
location /group1/M00 {
    root /fastdfs/storage/data;
    ngx_fastdfs_module;
}



2025-5-18学习记录 

网站公告

今日签到

点亮在社区的每一天
去签到