MogileFS和FastDFS分布式文件系统

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了MogileFS和FastDFS分布式文件系统脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1、分布式文件系统

为了应对海量数据的存储和处理,分布式文件系统应运而生。
那什么是分布式文件系统?分布式文件系统将数据在物理上分布到多个存储节点上存储,并对这些存储节点进行同一管理和分配,向用户提供文件系统访问接口。

分布式文件系统具有的特性

  • 高扩展性:可简单快速添加数据节点进行扩容操作

  • 冗余性:同一数据在多个节点上拥有多个副本,保证某一节点宕机数据不会丢失

  • 数据复制:文件系统可自行完成数据副本的创建

  • 空间平衡:保持多个存储节点的存储空间使用率均衡

  • 高IO能力:由于数据分散在多个节点存储,并行操作IO能力强于单机系统

  • 廉价性

2、MogileFS介绍

MogileFS是一个开的分布式文件系统,用于组建分布式文件集群,由 LiveJournal 旗下 Danga Interactive 公司开发,Danga 团队开发了包括 Memcached、MogileFS、PErlbal 等不错的开源项目:(注:Perlbal 是一个强大的 Perl 写的反向代理服务器)。MogileFS非常适用于存储海量小文件,比如图片,小段视频。

2.1 MogileFS角色介绍

Application:

存储和下载的客户端

Tracker:

运行的进程为mogilefsd。基于事件模型的父进程负责管理所有来自客户端的请求,均衡请求发送到各个查询线程,处理子进程间的所有通信。mogilefsd下的子进程包含:

  • Replication :自动复制数据副本

  • Deletion:删除线程

  • Query:应答客户端请求

  • Reaper:某节点失败后,自动补充丢失的数据副本到其他节点上

  • MonITor:监控节点和存储设备的健康和状态

Database:

MogileFS的元数据存储在数据库中,元数据包含命名空间和文件存储位置信息

Storage Nodes:

运行进程为mogStored,依赖于Perbal。存储数据的节点。Tracker与Storage Nodes 通信采用http协议。

MogileFS和FastDFS分布式文件系统

2.2 MogileFS 基本概念

domain:

上传的每一个文件对应一个fid,等同于key的概念。MogileFS允许定义多个域来存放数据,每个域中的key值必须唯一,不同的域中的key可以相同。

class:

class是每个域中最小数据副本复制的最小单元,也即数据副本是按class进行整体复制。同时也定义了文件属性,如数据副本的数量等等

2、FastDFS

FastDFS是国人使用c++研发的一款轻量级分布式文件系统,同样适合存储海量小文件。

2.1 FastDFS角色介绍

Tracker:

Tracker在客户端与存储节点之间扮演协调者角色,它负责管理所有storage node 和group,在多个group间负载均衡数据存储以及接受客户端的数据请求。每个storage启动之后向tracker汇报自己所属group及健康信息,由此,在内存中tracker维护这些很少的元数据,即group与storage的映射关系。
这使得tracker的扩展十分容易,所有的tracker都会接收来自storage的报告信息,生成元数据之后提供读写服务。

Storage:

存储数据的节点,保存文件的元数据信息,完成客户端的数据请求。storage是以group为单位组织起来的,一个group包含至少一个storage,group内的storage互为备份存储相同的数据,做到冗余功能。每个storage下允许挂载多个目录,数据存储在本地文件系统上。

client:

数据请求者,以特定协议与tracker和storage通信,并保存上传文件后storage返回的key。

MogileFS和FastDFS分布式文件系统

2.2 一个上传流程

前提是storage不断向tracker汇报状态信息,当客户端向tracker提交上传请求,tracker根据调度规则挑选一个group,并把group中一个storage的地址信息返回给客户端,客户端继而将文件上传至该storage中,storage根据规则选择一个目录存储数据,storage存储成功后返回一个文件存储路径信息。路径信息由多个字段拼接而成。其中fileid包含了丰富信息,上传的源storageIP地址,文件创建时间戳,文件大小,文件后缀,再加上文件crc32和一个随机数,然后进行base64编码而成。具体返回的路径信息如下:

MogileFS和FastDFS分布式文件系统


需要注意的是,文件在一个storage存储完成之后便认为上传成功,之后源storage向group内其他storage提供文件元数据信息,其他节点自行复制数据。假如在同步的过程中,源storage失败,则本次上传的数据将丢失,如果想要避免这种风险,需要在客户端写好双重写代码。

MogileFS和FastDFS分布式文件系统

2.3 一个下载流程

客户端向tracker发送路径地址提交下载请求,tracker解析路径地址得到group信息,源storageIP,时间戳等信息后,根据规则挑选一个最佳storage地址信息返回给客户端,客户端再发送请求到指定storage,storage检索到后将数据发送给客户端。
在下载流程中,tracker挑选storage的细节:由于同一group内storage以异步形式存储数据,所以当源storage存储数据完成后,客户端马上请求刚刚上传的数据,这时其他storage节点很有可能没有完成数据同步,所以tracker需要根据时间戳信息进行判断哪些storage可接受客户端的数据请求。

MogileFS和FastDFS分布式文件系统

3、MogileFS和FastDFS比较

FastDFS的性能要优于MogileFS,原因在于,FastDFS采用c++较为底层的语言实现,效率要比perl编写的MogileFS高,而且FastDFS裁剪了DB这一角色,将元数据直接保存在storage中更加提升了性能。
FastDFS缺点在于,当一个storage中的某一目录挂载的磁盘损坏的话,不能进行自动恢复,需要手动恢复比较麻烦。

脚本宝典总结

以上是脚本宝典为你收集整理的MogileFS和FastDFS分布式文件系统全部内容,希望文章能够帮你解决MogileFS和FastDFS分布式文件系统所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。