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 地址、文件创建时间、文件大小、随机数和文件拓展名等信息。

相关文章
|
2月前
|
存储 负载均衡 Linux
|
Oracle Java 关系型数据库
LAMP 出现和工作原理介绍 | 学习笔记
快速学习LAMP 出现和工作原理介绍
195 0
LAMP 出现和工作原理介绍 | 学习笔记
|
存储 应用服务中间件 测试技术
Nginx反向代理工作原理简介与配置详解
Nginx反向代理工作原理简介与配置详解
272 0
|
存储 Web App开发 负载均衡
FastDFS原理概述
FastDFS原理概述
|
存储 Java Linux
FastDFS 安装与配置| 学习笔记
快速学习 FastDFS 安装与配置。
137 0
FastDFS 安装与配置| 学习笔记
|
存储 缓存 负载均衡
文件管理系统FastDFS原理详解
文件管理系统FastDFS原理详解
149 0
文件管理系统FastDFS原理详解
|
存储 分布式计算 Hadoop
【FastDFS】FastDFS 分布式文件系统的安装与使用,看这一篇就够了!!
有不少小伙伴在实际工作中,对于如何存储文件(图片、视频、音频等)没有一个很好的解决思路。都明白不能将文件存储在单台服务器的磁盘上,也知道需要将文件进行副本备份。如果自己手动写文件的副本机制,那就太麻烦了,这会涉及冗余副本机制、服务器的调度、副本检测、服务器节点检测、文件副本存放策略、网络环境检测等等一系列的难题。了解Hadoop的小伙伴,会自然而然的想到HDFS,
312 0
【FastDFS】FastDFS 分布式文件系统的安装与使用,看这一篇就够了!!
|
存储 应用服务中间件 开发工具
FastDFS部署及使用简介
整理了近期在项目上做的一些技术研究,希望与大家共同探讨交流。 在项目中经常推荐客户选择分布式文件存储服务,并且使用阿里云的OSS服务,但也遇到过客户是私有云无法使用OSS或者客户要求必须提供非阿里云方案的情况。
7521 0