FastDFS 工作原理| 学习笔记

简介: 快速学习 FastDFS 工作原理。

开发者学堂课程【Spring Boot+Vue.js+FastDFS实现分布式图片服务器 :FastDFS 工作原理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/742/detail/13139


FastDFS 工作原理

 

内容介绍

一. FastDFS 架构

二. 文件上传流程

三. Tracker 和 Storage 的功能

四. 文件下载的流程

 

一.FastDFS 架构

如图所示为其架构图

image.png 

FastDFS 架构包括 Tracker server 和 Storageserver 。客户端请求 Tracker server 进行文件上传、下载,通过 Tracker server 调度最终由 Storageserver 完成文件上传和下载。

FastDFS 的服务端由 Tracker 群和 Storage 群两部分组成。


二.文件上传流程

当用户上传文件时, Tracker 会首先被访问。而 Tracker 管理着许多的 Storager , 因此 Tracker 会查看 Storager 上的每个服务器上的存储和压力情况。

Tracker 会向用户返回 Storage 服务器的地址,而用户就可以访问 Storage 从而存储文件。下图所示为其文件上传流程图:

image.png

一个用户首先会去连接 Tracker 服务,而 Tracker 服务管理着很多的 Storage 服务器。(即用户会向 Tracker 服务询问,我要访问哪个 Storage 服务器,而由于 Tracker 服务器管理着许多的 Storage 服务器,它会返回并告诉客户,你要向某一个 Storage 上传文件。这时,客户端就会直接向 Storage 存储文件,而 Storage 就会返回一个文件 ID ,存储文件,存储成功后给用户。至此,用户就完成了文件的存储。)

Tracker 并不存储文件,真正存储文件的是 Storage 。也就是说,会在存储服务器上存储文件。 Tracker 是一个调动者、指挥员,指挥客户在准确的 Storage 上存储文件。

上图中的蓝框表示组,即 Storage 是按组来分配组织的。

同步线程表示一组中的服务器的数据都相同,其中一台服务器发生故障时,可以使用同一组中的其余正常的服务器。

 

三.Tracker 和 Storage 的功能

1. Tracker

1)Tracker server 作用是负载均衡和调度(它能通过知道当前压力数值的差异从而调度准确的 Storage),通过 Tracker server 在文件上传时可以根据一些策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器或调度服务器。

2)FastDFS 集群中的 Tracker server 可以有多台, Tracker-server 之间是相互平等关系同时提供服务, Tracker server 不存在单点故障。客户端请求 Tracker server 采用轮询方式,如果请求的 tracker 无法提供服务则换另一个 tracker 。

2.Storage

1)Storage Server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storage server 没有实现自己的文件系统而是使用操作系统的文件系统来管理文件。可以将 Storage 称为存储服务器。

2)Storage 集群采用了分组存储方式。 Storage 集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的 Storage server 之间是平等关系,不同组的 Storage server 之间不会相互通信,同组内的 Storage server 之间会相互连接进行文件同步,从而保证同组内每个 Storage 上的文件完全一致的。

一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。

3.Tracker 和 Storage 都能部署一个集群。

集群即多台服务器共同对外提供服务,可以提高客户的访问速度和变化请求量。

Storage 是以组为单位进行分配安排的。

4.Storage 状态收集

Storage server 会连接集群中所有的 Tracker server ,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

 

四.文件下载的流程

image.png

如图所示,客户端上传文件后存储服务器将文件 ID 返回给客户端,此文件 ID 用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

 

五.文件路径

group1/M00/02/44/wKgDrE34E8wAAAAAAAAGkEIYJK42378.sh(文件路径)

image.png

1)group1 为组名,即 Storage 组的名称

2)M00 为虚拟的磁盘目录,虚拟的驱动器(一个 Storage 可以配多个驱动器)

3)02/44/wKgDrE34E8wAAAAAAAAGkEIYJK42378.sh 为文件的真实路径。

组名:文件上传后所在的 storage 组名称,在文件上传成功后有 storage 服务器返回,需要客户端自行保存。

虚拟磁盘路径: storage 配置的虚拟路径,与磁盘选项 store_path 对应。如果配置了 store path0 则是M00 ,如果配置了 store_path1 则是M01,以此类推。

数据两级目录: storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器 IP 地址、文件创建时间、文件大小、随机数和文件拓展名等信息。

相关文章
|
3月前
|
存储 安全 前端开发
CC&LG实践|基于 LangGraph 一步步实现 Claude-Code 核心设计
本文旨在深入剖析 Claude-Code 的核心设计思想与关键技术实现,逆向分析其功能模块,结合 LangGraph 框架的能力,系统性地演示如何从一个最基础的 ReAct Agent 出发,逐步构建一个功能完备的简版 Claude-Code。
1953 19
CC&LG实践|基于 LangGraph 一步步实现 Claude-Code 核心设计
|
机器学习/深度学习 人工智能 搜索推荐
AI与娱乐产业:电影制作的新工具
随着科技的发展,人工智能(AI)逐渐渗透到电影制作中,带来了前所未有的创新。本文探讨了AI在剧本创作、场景构建、特效制作、动作捕捉、音频处理、剪辑及市场调研等领域的应用,以及其对提升效率、激发创意和拓宽视野的影响,展望了AI在未来电影产业中的重要作用。
|
机器学习/深度学习 数据采集 搜索推荐
打造个性化新闻推荐系统
【8月更文挑战第31天】在这个信息爆炸的时代,个性化新闻推荐系统成为了连接用户与海量资讯的桥梁。本文将引导你通过Python编程语言和机器学习技术,搭建一个简单的新闻推荐模型。我们将从数据预处理开始,逐步深入到模型的训练与评估,最终实现一个能够根据用户兴趣推荐新闻的系统。无论你是编程新手还是有一定基础的学习者,这篇文章都将为你打开一扇通往智能推荐世界的大门。
|
监控 安全 测试技术
【亮剑】在网络技术日益发展的今天,端口映射已成为家庭和企业网络环境中不可或缺的一项技术。
【4月更文挑战第30天】本文介绍了端口映射(Port Forwarding)的概念,它是NAT技术的一种,用于让外部设备访问内部网络服务。端口映射广泛应用于远程桌面、网络游戏、视频监控和个人服务器托管等场景。操作步骤包括登录路由器管理界面、设置映射规则、保存并启用规则,以及测试映射效果。虽然端口映射能扩大网络应用,但也可能带来安全风险,因此需谨慎管理和设置安全措施。
431 0
|
移动开发 前端开发 Java
前后端分离架构模式讨论:要前后端分离,不要前后端分裂
前后端分离架构模式讨论:要前后端分离,不要前后端分裂
465 11
|
缓存 Java Nacos
Nacos 系统参数介绍
Nacos 系统参数介绍
443 0
|
应用服务中间件 文件存储 nginx
整合FastDFS与Nginx,使生成的文件URL能够通过浏览器访问
整合FastDFS与Nginx,使生成的文件URL能够通过浏览器访问
整合FastDFS与Nginx,使生成的文件URL能够通过浏览器访问
|
Kubernetes NoSQL Redis
【kubernetes】二进制方式安装 containerd
【kubernetes】二进制方式安装 containerd
2190 1
【kubernetes】二进制方式安装 containerd
带你读《5G 系统技术原理与实现》——1.3.1 SA 组网和NSA 组网
带你读《5G 系统技术原理与实现》——1.3.1 SA 组网和NSA 组网