分布式文件存储 FastDFS

栏目: 服务器 · 发布时间: 5年前

内容简介:FastDFS是由淘宝开发平台部资深架构师余庆开发,是一个轻量级、高性能的开源它对文件进行管理,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。解决了大容量存储和负载均衡的问题。特别适合以中小文件( 建议范围:4KB < file_size <500MB )为载体的在线服务,如相册网站、视频网站等等具有显著的效果。同类的分布式文件系统有谷歌的 GFS、HDFS(Hadoop)、TFS(淘宝)等。

一、概念简述

FastDFS是由淘宝开发平台部资深架构师余庆开发,是一个轻量级、高性能的开源 分布式文件系统 ( Distributed File System ),用纯 C 语言开发,包括文件存储、文件同步、文件访问(上传、下载)、存取负载均衡、在线扩容、相同内容只存储一份等功能,适合有大容量存储需求的应用或系统。

它对文件进行管理,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。解决了大容量存储和负载均衡的问题。特别适合以中小文件( 建议范围:4KB < file_size <500MB )为载体的在线服务,如相册网站、视频网站等等具有显著的效果。

同类的分布式文件系统有谷歌的 GFS、HDFS(Hadoop)、TFS(淘宝)等。

FastDFS架构

FastDFS 服务端有三个角色:客户端(client),跟踪器(tracker)和存储器(storage)构成。基本架构如下图所示

分布式文件存储 FastDFS

跟踪器(tracker)

Tracker是 FastDFS 的 协调者 ,负责管理所有的 storage server 和 group,每个 storage 在启动后会连接 Tracker,告知自己所属的 group 等信息,并保持周期性的心跳,tracker 根据 storage 的心跳信息,建立 group ==> [storage serverlist] 的映射表。

Tracker 需要管理的元信息很少,会全部存储在内存中;另外 tracker 上的元信息都是由 storage 汇报的信息生成的,本身不需要持久化任何数据,这样使得 tracker 非常容易扩展,直接增加 tracker 机器即可扩展为 tracker cluster 来服务,cluster 里每个 tracker 之间是完全对等的,所有的 tracker 都接受 stroage 的心跳信息,生成元数据信息来提供读写服务。

跟踪器在访问上起负载均衡的作用。可以随时增加或下线而不会影响线上服务。

存储节点(storage)

存储系统(Storage server)由以组 group(或卷 volume)为单位组成。一个 group 内包含多台 storage 机器,数据互为备份,存储空间以 group 内 容量最小 的 storage为准。

存储节点中的服务器均可以随时增加或下线而不会影响线上服务。

客户端(client)

客户端(client),作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。

FastDFS 的存储策略

为了支持大容量,存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的(同步已有的文件由系统自动完成同步),卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以 动态 添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

FastDFS 的文件同步

写文件时,客户端将文件写至 group 内一个 storage server 即认为写文件成功,storage server 写完文件后,会由后台线程将文件同步至同 group 内其他的 storage server。

每个 storage 写文件后,同时会写一份 binlog,binlog 里不包含文件数据,只包含文件名等元信息,这份 binlog 用于后台同步,storage 会记录向 group 内其他 storage 同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有 server 的时钟保持同步。

storage 的同步进度会作为元数据的一部分汇报到 tracker 上,tracker 在选择读 storage 的时候会以同步进度作为参考。这样就避免文件同步完成之前访问文件不存在的问题,就是 tracker 会告诉 client 去访问执行存储的那台 storage。

FastDFS 整体流程图

分布式文件存储 FastDFS

从 client 发起请求,由跟踪器(tracker,主)来处理,查询可用的存储器(storage),返回给 client storage 的 ip 和端口;client 根据 ip 和端口访问 storage 完成上传图片等服务;成功后返回地址,如:group1/M00/00/01/wKgBwFkueeWAU81OAADxa3SgCic420.png

分布式文件存储 FastDFS


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C语言程序设计现代方法

C语言程序设计现代方法

K. N. King / 人民邮电出版社 / 2007-11 / 55.00元

《C语言程序设计现代方法》最主要的一个目的就是通过一种“现代方法”来介绍C语言,实现客观评价C语言、强调标准化C语言、强调软件工程、不再强调“手工优化”、强调与c++语言的兼容性的目标。《C语言程序设计现代方法》分为C语言的基础特性。C语言的高级特性、C语言标准库和参考资料4个部分。每章都有“问与答”小节,给出一系列与本章内容相关的问题及其答案,此外还包含适量的习题。一起来看看 《C语言程序设计现代方法》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换