分布式文件存储 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


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

查看所有标签

猜你喜欢:

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

Python编程实践

Python编程实践

Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson / 唐学韬 / 机械工业出版社华章公司 / 2011-12-31 / 49.00元

Python是当今世界流行的编程语言之一。本书共15章,通过一些短小精悍的交互式Python脚本帮助学生进行练习,并在这个过程中掌握诸如数据结构、排序和搜索算法、面向对象编程、数据库访问、图形用户界面等基本概念以及良好的程序设计风格。本书既是一本注重科学的计算机科学专业教材,也是一本目标明确的Python参考书。 本书语言风格言简意赅,图表丰富,简单实用,是一本优秀的Python入门级读物,......一起来看看 《Python编程实践》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具