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学习记录

相关推荐
charlie1145141912 分钟前
精读 C++20 设计模式:行为型设计模式——观察者模式
c++·学习·观察者模式·设计模式·程序设计·c++20
熊猫钓鱼>_>12 分钟前
深度解析学习率:梯度下降中的“速度与激情“
学习
居7然15 分钟前
JoyAgent-JDGenie深度评测:从开箱到实战,多智能体框架的工业级答卷
分布式·自然语言处理·架构·transformer·agent
Hello.Reader24 分钟前
Flink 架构组件、任务链路、Slot 资源与集群形态
大数据·架构·flink
charlie11451419139 分钟前
精读 C++20 设计模式:行为型设计模式 — 备忘录模式
c++·学习·设计模式·c++20·备忘录模式
我的xiaodoujiao1 小时前
Web UI自动化测试学习系列5--基础知识1--常用元素定位1
windows·python·学习·测试工具
张永清-老清1 小时前
每周读书与学习->初识JMeter 元件(三)
学习·测试工具·性能调优·jmeter性能测试·每周读书与学习
扉页sama1 小时前
riscv在fpga的运行过程
架构
RWKV元始智能1 小时前
RWKV7-G1a 2.9B 推理模型开源发布,继续推进纯 RNN 模型的思考能力
人工智能·架构·开源
希望_睿智1 小时前
实战设计模式之迭代器模式
c++·设计模式·架构