FastDFS_简介和原理

一、什么是FastDFS?

         DFS(distributed file system):分布式文件系统。

         FastDFS是一种开源的轻量级分布式服务器,用来解决大容量存储的问题,并充分考虑了冗余备份,负载均衡,线性扩容等机制,注重高可用、高性能等指标。特别适合中小文件,对以文件为载体的在线服务提供了非常好的解决方案。

         主要功能:文件存储,文件同步,文件访问(文件上传、文件下载)等。

 

二、FastDFS由什么组成?

         FastDFS由跟踪服务器(TrackerServer)、存储服务器(Storage Server)和客户机(Client)构成。

         跟踪服务器 TrackerServer:

         主要起到调度工作,起到均衡作用,负责管理所有的Storage Server 和 Group ,每个Storage 在启动之后会自动连接Tracker ,告知自己所署的Group的信息,并保持周期性心跳,Tranker 会根据Storger的心跳信息,建立Group -> Storage Serverlist 【因为一个Group 可以由多个StorageServer构成】,由于Storage会保持周期性的心跳,所以Tracker 需要管理的元信息就很少,会全部存储在内存中,本身并不需要持久化任何数据,这样的话,就使得Tracker非常容易扩展,仅仅增加Tracker 即可扩展为 Tracker Cluster 集群服务。Cluster里的每个Tracker 之间是完全对等的,所有的Tracker都接收Storage的心跳信息,生成元数据信息来提供读写服务。

 

         存储服务器 StorageServer:

         主要提供容量和备份服务,以Group为单位,每个Group 内有多个Storage Server,数据互相备份,当一个Storage Server损坏时,可以通过其他的Storage Server进行恢复。

         以Group 为单位组织存储能方便的进行应用隔离、负载均衡、副本数定制【副本数即为Storage Server 的数量】,比如将不同的应用数据存储到不同的Group就能实现简单的应用数据隔离,同时可以根据应用不同的访问特性来分配不同的Group,做到负载均衡。

 

         客户端 Client:

         此时,这个客户端并不是用户所在的客户端,而是部署了我们项目的服务器,每个客户端(搭载项目的服务器)都需要安装Nginx,客户端(搭载项目的服务器)和文件存储服务器之间的数据交流也是服务器之间的交流。

 

三、FastDFS工作流程

 

         Ⅰ、上传


         0:Storage Server会定时向Tracker Server 发送自己的Group以及文件夹信息。使得Tracker Server 会保留最近的元数据。

         1:普通用户向Client(服务器)发送请求。

         2:Client(服务器)会向TrackerServer发送请求存储。

         3:TrackerServer 会向Client反馈一个不是太忙的Storage Server 信息。

         4:Client(服务器)收到消息,请求StorageServer。

         5:Storage Server存储数据,并反馈给Client一个id,这个id也就是存储文件的路径。

         (路径分为组名、文件夹、文件名和后缀,也就是后面用来访问此文件的方式)

 

模拟对话:

         StorageServer:Tracker老哥,我还活着,你要记得我啊!

         用户1:我要上传个电脑啊,服务器!(哇,有点过分了啊!)

         Client(服务器):好勒,东西给我,我帮你把东西存起来。

         Client(服务器):TrackerServer,我要存一台电脑,给我找一个仓库。

         TrackerServer:老铁等一下,我给你找一个地大一点的仓库,要不就去A小区B栋302仓库吧。

         Client(服务器):嘿,StorageServer,呐,这个是我的东西。

         StorageServer:OJBK,东西放好了,给你个编号(9827),以后凭着编号来找你的东西啊!

         Client(服务器):把A小区/B/302/9527记录到账本上。

 

        A小区:就是对应的GroupA

        B栋:就是对应的Storage Server

        302:就是Storage Server下的文件夹

        9527:就是文件名

        电脑:就是文件后缀名

        账本:就是数据库。

 

 

由于是项目需要FastDFS,所以学习了一下,现在写了个总结,如果有同样在学的,可以稍加参考。由于时间匆忙,也参考了一下别人的文章,和自己的稍加整合,若有失误,还请指出。

阅读更多
上一篇java版本体系介绍
下一篇Mysql的基本操作和注意点
想对作者说点什么? 我来说一句

FastDFS_配置文件详解

2016年10月18日 41KB 下载

51单片机硬件和工作原理

2014年05月04日 834KB 下载

Kademlia 协议原理简介

2009年07月20日 252KB 下载

FPGA 及其设计原理简介

2009年03月29日 69KB 下载

P2P原理简介

2015年10月07日 246KB 下载

创维2009年技术集训课件汇总

2012年05月16日 7.41MB 下载

LCD简介大全

2018年03月08日 5.53MB 下载

IPRAN原理简介

2018年04月09日 6.55MB 下载

mjpg-streamer的原理分析

2013年05月25日 20KB 下载

没有更多推荐了,返回首页

关闭
关闭