`
soartju
  • 浏览: 247473 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分布式存储系统FastDFS手册之三机制原理及其与MogileFS比较

阅读更多

转自互联网,原作者不详

===================

 

4 机制原理研究
4.1同步机制
在FastDFS的服务器端配置文件中,bind_addr这个参数用于需要绑定本机IP地址的场合。只有这个参数和主机特征相关,其余参数都是可以统一 配置的。在不需要绑定本机的情况下,为了便于管理和维护,建议所有tracker server的配置文件相同,同组内的所有storage server的配置文件相同。

       tracker server的配置文件中没有出现storage server,而storage server的配置文件中会列举出所有的tracker server。这就决定了storage server和tracker server之间的连接由storage server主动发起,storage server为每个tracker server启动一个线程进行连接和通讯,这部分的通信协议请参阅《FastDFS HOWTO -- Protocol》中的“2. storage server to tracker server command”。

       tracker server会在内存中保存storage分组及各个组下的storage server,并将连接过自己的storage server及其分组保存到文件中,以便下次重启服务时能直接从本地磁盘中获得storage相关信息。storage server会在内存中记录本组的所有服务器,并将服务器信息记录到文件中。tracker server和storage server之间相互同步storage server列表:

(1)如果一个组内增加了新的storage server或者storage server的状态发生了改变,tracker server都会将storage server列表同步给该组内的所有storage server。以新增storage server为例,因为新加入的storage server主动连接tracker server,tracker server发现有新的storage server加入,就会将该组内所有的storage server返回给新加入的storage server,并重新将该组的storage server列表返回给该组内的其他storage server;

(2) 如果新增加一台tracker server,storage server连接该tracker server,发现该tracker server返回的本组storage server列表比本机记录的要少,就会将该tracker server上没有的storage server同步给该tracker server。

同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行。文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器。以文件上传为例,假设一个组内有3台storage server A、B和C,文件F上传到服务器B,由B将文件F同步到其余的两台服务器A和C。我们不妨把文件F上传到服务器B的操作为源头操作,在服务器B上的F文件 为源头数据;文件F被同步到服务器A和C的操作为备份操作,在A和C上的F文件为备份数据。同步规则总结如下:

(1)只在本组内的storage server之间进行同步;

(2)源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;

(3)上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。

 

storage server有7个状态,如下:

# FDFS_STORAGE_STATUS_INIT      :初始化,尚未得到同步已有数据的源服务器

# FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有数据的源服务器

# FDFS_STORAGE_STATUS_SYNCING   :同步中

# FDFS_STORAGE_STATUS_DELETED   :已删除,该服务器从本组中摘除(注:本状态的功能尚未实现)

# FDFS_STORAGE_STATUS_OFFLINE   :离线

# FDFS_STORAGE_STATUS_ONLINE    :在线,尚不能提供服务

# FDFS_STORAGE_STATUS_ACTIVE    :在线,可以提供服务

 

当storage server的状态为FDFS_STORAGE_STATUS_ONLINE时,当该storage server向tracker server发起一次heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。

 

组内新增加一台storage server A时,由系统自动完成已有数据同步,处理逻辑如下:

(1)storage server A连接tracker server,tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_INIT。storage server A询问追加同步的源服务器和追加同步截至时间点,如果该组内只有storage server A或该组内已成功上传的文件数为0,则没有数据需要同步,storage server A就可以提供在线服务,此时tracker将其状态设置为FDFS_STORAGE_STATUS_ONLINE,否则tracker server将其状态设置为FDFS_STORAGE_STATUS_WAIT_SYNC,进入第二步的处理;

(2)假设tracker server分配向storage server A同步已有数据的源storage server为B。同组的storage server和tracker server通讯得知新增了storage server A,将启动同步线程,并向tracker server询问向storage server A追加同步的源服务器和截至时间点。storage server B将把截至时间点之前的所有数据同步给storage server A;而其余的storage server从截至时间点之后进行正常同步,只把源头数据同步给storage server A。到了截至时间点之后,storage server B对storage server A的同步将由追加同步切换为正常同步,只同步源头数据;

(3)storage server B向storage server A同步完所有数据,暂时没有数据要同步时,storage server B请求tracker server将storage server A的状态设置为FDFS_STORAGE_STATUS_ONLINE;

(4)当storage server A向tracker server发起heart beat时,tracker server将其状态更改为FDFS_STORAGE_STATUS_ACTIVE。

 

 

5 与MogileFS比较
FastDFS设计时借鉴了MogileFS的一些思路。FastDFS是一个完善的分布式文件存储系统,通过客户端API对文件进行读写。可以 说,MogileFS的所有功能特性FastDFS都具备,MogileFS网址:http://www.danga.com/mogilefs/

另外,相对于MogileFS,FastDFS具有如下特点和优势:

(1)FastDFS完善程度较高,不需要二次开发即可直接使用;

(2)和MogileFS相比,FastDFS裁减了跟踪用的数据库,只有两个角色:tracker和storage。FastDFS的架构既简化 了系统,同时也消除了性能瓶颈;

(3)在系统中增加任何角色的服务器都很容易:增加tracker服务器时,只需要修改storage和client的配置文件(增加一行 tracker配置);增加storage服务器时,通常不需要修改任何配置文件,系统会自动将该卷中已有文件复制到该服务器;

(4)FastDFS比MogileFS更高效。表现在如下几个方面:

a)参见上面的第2点,FastDFS和MogileFS相比,没有文件索引数据库,FastDFS整体性能更高;

b)从采用的开发语言上看,FastDFS比MogileFS更底层、更高效。FastDFS用C语言编写,代码量不到2万行,没有依赖其他开源软 件或程序包,安装和部署特别简洁;而MogileFS用perl编写;

c)FastDFS直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。并且FastDFS使用sendfile传输 文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。

d)FastDFS有着详细的设计和使用文档,而MogileFS的文档相对比较缺乏。

e)FastDFS的日志记录非常详细,系统运行时发生的任何错误信息都会记录到日志文件中,当出现问题时方便管理员定位错误所在。

f) FastDFS还对文件附加属性(即meta data,如文件大小、图片宽度、高度等)进行存取,应用不需要使用数据库来存储这些信息。

分享到:
评论

相关推荐

    基于SpringBoot结合分布式文件系统FastDFS实现的文件上传实例demo,可拿来直接嵌入到自己的系统中

    基于SpringBoot结合分布式文件系统FastDFS实现的文件上传实例demo,可拿来直接嵌入到自己的系统中 文件上传后的路径: group1/M00/00/43/wKgCYVwhkTOAUxZ1AGf8LohRDBw966.jpg 解读: 一、组名:文件上传后所在...

    分布式文件系统FastDFS架构剖析及配置优化

    ### 分布式文件系统FastDFS架构剖析及配置优化 #### FastDFS概述 FastDFS是一款开源的轻...通过对系统架构、功能特性和版本演进等方面的深入分析,我们可以更好地理解FastDFS的工作原理及其在实际应用场景中的优势。

    开源分布式文件系统FastDFS和MogileFS - [Linux].docx

    《FastDFS与MogileFS:两种开源分布式文件系统的比较》 FastDFS和MogileFS都是开源的分布式文件系统,适用于处理大量文件存储和访问的场景,如图像分享网站和视频流媒体服务。这两种系统都设计有防止单点故障的机制...

    分布式文件系统FastDFS介绍

    ### 分布式文件系统FastDFS介绍 ...总之,FastDFS是一款功能强大、易于扩展的分布式文件系统,非常适合用于互联网环境中大量文件的存储与管理。其轻量级的设计使其能够高效运行,并且具有良好的性能表现。

    分布式文件系统FastDFS 全套资料

    分布式文件系统FastDFS 全套资料

    分布式文件系统FastDFS搭建.pdf

    分布式文件系统FastDFS是一种用C语言编写、开源的分布式文件系统,专门为互联网应用量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,追求高可用和高性能的文件存储服务。FastDFS架构由Tracker服务器和...

    FastDFS分布式存储实战 - FastDFS.pdf

    FastDFS分布式存储介绍

    分布式文件系统FastDFS架构剖析

    对于开发者来说,掌握FastDFS的使用和原理,有助于构建更稳定、高效的分布式存储系统。 综上所述,FastDFS是一个优秀的分布式文件系统解决方案,尤其适用于处理大量小文件的场景。通过深入学习和实践,我们可以利用...

    分布式文件系统 FastDFS 介绍PPT

    ### 分布式文件系统 FastDFS 介绍 #### 一、FastDFS 概述 FastDFS 是一款开源的轻量级分布式文件系统,主要用于互联网应用场景,追求高性能与高扩展性。该系统采用纯 C 语言编写,支持 Linux 和 FreeBSD 等 UNIX ...

    分布式文件系统FastDFS架构剖析.pdf

    FastDFS与现有的类似GoogleFS的分布式文件系统相比,其架构和设计理念具有独特之处,主要表现在以下三个方面:轻量级、分组方式和对等结构。 首先,轻量级是FastDFS的一个重要特点。FastDFS仅包含两个角色:Tracker...

    Linux下分布式文件系统FastDFS安装与配置

    Linux下分布式文件系统FastDFS安装与配置

    FastDFS 分布式存储 实战

    与其他分布式存储系统相比,如TFS、HDFS、MogileFS、Ceph等,FastDFS具有独特的特点和适用场景。例如,TFS适合存储海量小图片和大文件,HDFS适合大文件存储且支持MapReduce计算模型,而Ceph则提供了一个统一的存储...

    分布式文件系统fastdfs的安装部署和使用

    分布式文件系统fastdfs的安装部署和使用 利用多台计算机协同解决单台计算机所不能解决的计算、存储等问题

    分布式文件系统FastDFS技术整理.doc

    FastDFS分布式文件系统技术整理 1.1、了解基础概念 FastDFS是一种分布式文件系统,英文全称为Distributed File System,简称DFS。它可以是一个软件,也可以是一个服务器,类似于Tomcat服务器。该软件用于管理...

    分布式文件系统FastDFS详解.docx

    分布式文件系统FastDFS详解 1. 为什么要使用分布式文件系统 在互联网发展的早期,随着数据量的爆炸性增长,单机时代的文件存储方式逐渐暴露出其局限性。在单机时代,文件通常直接存储在项目目录下,或者通过独立...

    FastDFS分布式文件系统

    FastDFS是一款轻量级的...总的来说,FastDFS是一个针对互联网场景优化的分布式文件系统,它通过精简的设计和高效的机制,提供了大容量文件存储、高并发访问和灵活扩展的能力,是构建大型网站存储系统的一个理想选择。

    基于C语言的轻量级开源分布式文件系统FastDFS设计源码

    本项目为基于C语言的FastDFS轻量级开源分布式文件系统设计源码,总文件量为240个,其中包含66个C语言源文件、51个头文件、41个配置文件、10个Shell脚本、9个gzip压缩文件、6个ini配置文件、6个PHP脚本、5个Markdown...

    分布式文件系统FastDFS安装部署教程

    ### 分布式文件系统FastDFS安装部署教程 #### 一、FastDFS简介 **1.1 简介** FastDFS是一个开源的轻量级分布式文件系统,它主要用于解决大容量存储和负载均衡问题。FastDFS针对互联网环境进行了优化设计,能够很...

    SpringBoot 结合分布式文件系统FastDFS实现文件上传.zip

    在本项目中,"SpringBoot 结合分布式文件系统FastDFS实现文件上传" 是一个典型的Java Web应用程序,旨在帮助学习者了解并实践软件开发流程。这个系统利用了SpringBoot框架的强大功能,结合FastDFS这一高效的分布式...

Global site tag (gtag.js) - Google Analytics