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,所以学习了一下,现在写了个总结,如果有同样在学的,可以稍加参考。由于时间匆忙,也参考了一下别人的文章,和自己的稍加整合,若有失误,还请指出。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值