FastDFS_简介和原理

转载 2018年04月17日 21:31:37

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

FastDFS_配置文件详解

  • 2016年10月18日 10:19
  • 41KB
  • 下载

【Struts】——简介 & 原理

truts是对JSPModel2设计标准的一种实现,下面分别从模型(Model)、视图(view)和控制器3个部分介绍Struts的体系结构和工作原理。...
  • u010164936
  • u010164936
  • 2016-01-11 15:58:30
  • 1205

Mybatis简介与原理详细描述

什么是Mybatis          MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google...
  • ouyang1017
  • ouyang1017
  • 2016-02-03 11:20:57
  • 5556

深入理解内存(1):原理简介

发现编程的很多问题最后整来整去,最后又是归结到内存上面来了.所以决定好好来研究下内存.   我们知道冯.诺伊曼体系结构中是把计算机划分为输入设备,输出设备,存储器,控制器,运算器. 输入设备主...
  • weiwenhp
  • weiwenhp
  • 2013-01-15 15:03:06
  • 1572

DDS原理简介(中文).pdfDDS原理简介(中文).pdf

  • 2008年10月28日 22:33
  • 675KB
  • 下载

FPGA 及其设计原理简介

  • 2009年03月29日 16:37
  • 69KB
  • 下载

随机森林原理介绍

原地址:http://www.cnblogs.com/hrlnw/p/3850459.html 1.随机森林原理介绍 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器...
  • u010685891
  • u010685891
  • 2016-01-14 13:53:20
  • 1033

JSP——JSP介绍以及运行原理

本文介绍了JSP的基本概念,介绍了一个快速入门案例,并且详细介绍了JSP的运行原理以及它和Servlet的关系...
  • ggGavin
  • ggGavin
  • 2016-05-14 15:20:24
  • 2691

可编程门阵列FPGA的基本原理简介

  • 2009年03月15日 18:57
  • 293KB
  • 下载

J2EE基本介绍

好久没有写博客了。在实际工作中,发现自己的技术基础真的很差,很多名词概念不知道是什么意思。所以最近下决心恶补一下。这个算是基本篇,以自问自答的形式来解决自己心中的疑惑,如果对另外的人也有帮助,那就是再...
  • kay_zhyu
  • kay_zhyu
  • 2015-12-27 16:55:59
  • 736
收藏助手
不良信息举报
您举报文章:FastDFS_简介和原理
举报原因:
原因补充:

(最多只允许输入30个字)