当前位置: 首页 > java >正文

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

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学习记录 
http://www.xdnf.cn/news/7015.html

相关文章:

  • 给个人程序加上MCP翅膀
  • React Flow 边事件处理实战:鼠标事件、键盘操作及连接规则设置(附完整代码)
  • 数据脱敏-6种方案,你选哪种?
  • web系统安全管理
  • Ubuntu22.04开机运行程序
  • ubuntu 安装mq
  • JUC入门(一)
  • 【MYSQL】笔记
  • 多用途商务,电子产品发布,科技架构,智能手表交互等发布PPT模版20套一组分享
  • C++函数基础:定义与调用函数,参数传递(值传递、引用传递)详解
  • JAVA SE 多线程(上)
  • Linux编译rpm包与deb包
  • ACL完全解析:从权限管理到网络安全的核心防线
  • 股票数据源对接技术指南:印度尼西亚、印度、韩国
  • 【PostgreSQL系列】PostgreSQL 复制参数详解
  • 架构思维:构建高并发扣减服务_分布式无主架构
  • Android开发——原生渲染方案实现 PDF 预览功能
  • 【 Redis | 实战篇 秒杀优化 】
  • 算法-js-最大矩形
  • 深度学习推理引擎---ONNX Runtime
  • 【电路笔记 STM32】 STM32CubeProgrammer 下载 安装 使用
  • 【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GATT规范和ATT属性协议 + 电池电量服务例程
  • 单细胞转录组(3)
  • 单细胞转录组(2)单细胞测序原理
  • 5.2.1_2二叉树的性质
  • AUTOSAR图解==>AUTOSAR_SRS_V2XCommunication
  • 初探Reforcement Learning强化学习【QLearning/Sarsa/DQN】
  • docker-compose——安装mongo
  • C++文件操作--2 二进制文件操作
  • Java零基础学习Day15——面向对象进阶