【SSM】-FastDFS简介

前言

ITOO中用图片服务器是FastDFS,一直觉得很是神秘,今天学习ssm正好遇到,总结一下,以备后用。

FastDFS理解

一款开源的高性能的分布式文件系统。主要功能包括:文件存储、同步和访问。主要优点是高可用和负债均衡。使用与以中小文件(4KB到500MB)为载体的在线服务。
高可用性体现于和单文件系统相比时,单文件系统依赖于单机服务器,服务器一旦崩溃,完全不可用。而FastDFS作为分布式文件系统,一个group内的服务器崩溃后,group内的其他storage将接管服务。storage是fastdfs的一个组成部分,storage中包括很多group,每个group都是有多台服务器组成,每个group中的服务器中的文件都是相同的,这也就起到了冗余备份和负载均衡的作用。

FastDFS架构

这里写图片描述
如上图便是一张FastDFS架构图,fastdfs包括client、Tracker Server、Storage Server三部分。
Client可以有多个,也就是可以支持多个客户端对fastdfs集群服务进行访问,
Tracker Server负责调度,在访问上其负债均衡的作用。为了起到高可用性,所以Tracker服务器也有多个。
Storage Server是真正存储文件的服务器,完成存储、同步并提供存取接口。上边也有提到,Storage中包括多个组,是因为storage是分组进行存储的,当现有分组容量不够时,我们可以水平扩容,即增加分组来达到扩容的目的。
Tracker Server和Storage Server都可以有一台或多台服务器构成,其中的服务器可以随时增加或下线而不会影响线上服务。这也体现了fastdfs分布式系统的高扩展性。
而三者的关系,可以用一句通俗的话概括就是:客户端存储文件时,由Tarcker决定将文件存储到哪个Storage中。

文件上传

这里写图片描述
由上述时序图可以看到,Client想上传图片,它先向Tracker进行询问,Tracker查看一下登记信息之后,告诉Client哪个storage当前空闲,Tracker会把IP和端口号都返回给Client,Client在拿到IP和端口号之后,便不再需要通过Tracker,直接便向Storage进行上传图片,Storage在保存图片的同时,会向Tracker进行汇报,告诉Tracker它当前是否还留有剩余空间,以及剩余空间大小。汇报完之后,Storage将服务器上存储图片的地址返回给Client,Client可以拿着这个地址进行访问图片。说得更加细致一点,客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。
文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名,如下所示:
这里写图片描述
 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

文件下载

这里写图片描述
由上述时序图可以看到,和上传几乎一样,Client想下载图片,它先向某个Tracker进行询问,必须带上文件名信息,tracker 从文件名中解析出文件的 group、大小、创建时间等信息,然后为该请求选择一个 storage 用于读请求;Tracker会把IP和端口号都返回给Client,Client在拿到IP和端口号之后,便不再需要通过Tracker,直接便向Storage进行下载图片,Storage将服务器上存储的图片返回。

结语

到此,对于fastdfs我已经有了一个大概的认识,接下来的目标,利用fastdfs实现图片存储。

猜你喜欢

转载自blog.csdn.net/ldb987/article/details/80896566