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

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

bash 复制代码
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install

8配置Tracker服务器

bash 复制代码
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服务器

bash 复制代码
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
bash 复制代码
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学习记录

相关推荐
好学且牛逼的马17 分钟前
学习随笔录
学习
Hermann17 分钟前
云原生系统健壮性浅谈
架构·云计算
我爱学嵌入式1 小时前
C语言第 9 天学习笔记:数组(二维数组与字符数组)
c语言·笔记·学习
im_AMBER5 小时前
学习日志19 python
python·学习
白-胖-子6 小时前
深入剖析大模型在文本生成式 AI 产品架构中的核心地位
人工智能·架构
_Kayo_9 小时前
VUE2 学习笔记6 vue数据监测原理
vue.js·笔记·学习
chenchihwen9 小时前
大模型应用班-第2课 DeepSeek使用与提示词工程课程重点 学习ollama 安装 用deepseek-r1:1.5b 分析PDF 内容
人工智能·学习
超浪的晨9 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
Pomelo_刘金10 小时前
用 DDD 把「闹钟」需求一点点捏出来
架构·rust·领域驱动设计
Pomelo_刘金10 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉
后端·架构·rust