轻量级分布式文件系统fastDFS

来源:互联网 发布:思科网络防火墙5506 编辑:程序博客网 时间:2024/05/29 16:29

FastDFS主要解决了大容量的文件(主要是图片、视频、音频等小文件 512M以内最好)存储和高并发访问的问题,并在文件存取时实现了负载均衡。

FastDFS的结构比较简单,主要由Client、Tracker server和Storage server三部分组成。Client通过Tracker server得到Storage server的信息,然后直接与Storage server通信访问文件,避免了Tracker server成为瓶颈。容易构建集群和解决高并发,高可用问题。

Tracker server

Tracker server类似于GFS中的Master或TFS中的Name server,但与他们很不同的一点是,Tracker server的主要作用是负载均衡和调度,而不负责文件索引和映射。Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,其占用的内存量也很少。Tracker server可以只有一个,也可以有多个组成Tracker cluster,这样的好处是可以提高对用户的响应能力和增加容灾性,此时各Tracker server相互对等,冗余备份,由应用端来轮流选择进行访问。

Storage server

Storage server完成文件管理的所有功能:存储、同步和提供存取接口,文件和metadata都存储在其上。Storage server类似于GFS中的Chunk server或TFS中的Data server,通常一个Storage server即一台机器,Storage server可以动态新增和删除。FastDFS的存储部分即Storage cluster,分为多个Volume,每个Volume中包括多个Storage server。同一Volume内的各Storage server之间是对等的,存储的内容相同,起冗余容错的作用。文件上传、下载、删除等操作可在Volume内任意一台 Storage server上进行。一个Volume的存储容量取决于该Volume内最小的Storage server的容量,因此Volume内各Storage server的软硬件配置最好是一致的。采用这种分Volume的存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到哪个Volume。当某个Volume的访问压力较大时,可以在该Volume内增加Storage server来扩充服务能力(纵向扩容)。当系统总容量不足时,可以增加Volume来扩充存储容量(横向扩容)。

Storage server直接利用OS的文件系统存储文件。FastDFS不会对文件进行分块存储,客户端上传的文件和Storage server上的文件一一对应。

关于Storage server的同步,不同Volume的Storage server之间不会相互通信,同Volume内的Storage server之间会相互连接进行文件同步。文件同步采用push方式,接受更新操作的文件称为源文件,其所在server称为源服务器,其它文件称为备份文件,其它server称为目标服务器。当文件更新操作发生时,源服务器向目标服务器发起同步,对所有备份文件进行更新。当有新Storage server加入本Volume时,由已有的一台 Storage server将其上的所有文件同步给该新增服务器。具体的同步实现在Storage server中由专门线程根据binlog进行,binlog记录了文件上传、删除等更新操作。为了最大程度地避免相互影响以及出于系统简洁性考虑,Storage server对同Volume内除自己以外的每台服务器都会启动一个线程来负责文件同步。

这种异步的同步方式带来了一致性问题,当源文件尚未来得及将所有备份文件同步更新时,访问这些备份文件将引发错误。文件的访问主要分为更新和下载两种情况:FastDFS规定更新操作只能对源文件进行,从而避免了同时对不同的备份文件进行更新导致的冲突;文件下载时,Tracker server记录了各Storage server中各文件的同步情况,会向Client提供同步后的文件所在的Storage server。

FastDFS 集群构建:
http://www.2cto.com/kf/201611/560911.html

0 0
原创粉丝点击