MogileFS与FastDFS的个人见解
MogileFS与FastDFS的个人见解
- 六月 9, 2013
- 1 条评论
MogileFS & FastDFS 为两个开源分布式文件系统,都主要适用于互联网文件共享,上传,下载等功能,主要用于多上传和下载,不经常修改的操作。M和F部署架构都比较类似,设计中都避免的cluster中某一个环节的单点问题。
MogileFS
————————-
官网:https://code.google.com/p/mogilefs/
基本架构:TrackerServer(Tracker + DataBase) + StorageServer
[ Mogilefs的组成部分 ]
1. 数据库(MySQL)部分
你可以用mogdbsetup程序来初始化数据库。数据库保存了Mogilefs的所有元数据,你可以单独拿数据库服务器来做,也可以跟其他程序跑在一起,数据库 部分非常重要,类似邮件系统的认证中心那么重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。因此最好是HA结构。
2. storageServer(存储节点)
mogstored 程序的启动将使本机成为一个存储节点。启动时默认去读/etc/mogilefs/mogstored.conf ,具体配置可以参考配置部分。mogstored启动后,便可以通过mogadm增加这台机器到cluster中。一台机器可以只运行一个mogstored作为存储节点即可,也可以同时运行其他程序。
3. trackersServer(跟踪器)
mogilefsd即 trackers程序,类似mogilefs的wiki上介绍的,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。mogadm,mogtool的所有操作都要跟trackers打交 道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡。trackers也可以只运行在一台机器 上,也可以跟其他程序运行在一起,只要你配置好他的配置文件即可,默认在/etc/mogilefs/mogilefsd.conf。
4. 工具
主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看状态等等。
如果使用其他语言调用接口,需要二次开发。
5. Client
Client实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。
[ 逻辑原理 ]
每次文件的上传和读取,都经过前端TrackerServer服务器,trackerServer服务器受到client端的请求,查询数据库,返回一个上传或者是读取的可用的后端StorageServer的地址,然后由client端直接操作后端StorageServer服务器。upload操作返回就是成功或者失败的结果,read操作就是返回对应的查询数据。
====================================
FastDFS
————————-
官网:https://code.google.com/p/fastdfs/
基本架构:TrackerServer + StorageServer
[ FastDFS的组成部分 ]
1. Storage server
在其他文件系统中通常称作Trunk server或Data server。Storage server直接利用OS的文件系统存储文件。FastDFS不会对文件进行分块存储,客户端上传的文件和Storage server上的文件一一对应。
2. TrackerServer
Tracker server作为中心结点,其主要作用是负载均衡和调度。Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存量很少。另外,客户端(应用)和Storage server访问Tracker server时,Tracker server扫描内存中的分组和Storage server信息,然后给出应答。
[ 逻辑原理 ]
StorageServer作为主动方,在服务起来之后,会定时(时间可以配置)向他对应的tracker发布自己的状态和相关信息。TrackerServer服务只是会记录相对于的group对应的服务器IP,以便在read的时候直接 返回服务器IP。TrackerServer里面存储着每一个group的server列表,server列表里面的storage服务器都是实时相互备份操作。
在单个tracker,多个storage的架构的环境中,首先是upload操作:
client端将upload的请求直接发送给tracker服务器,tracker收到之后,会根据自己的一套定义的规则(可以配置),将回复可以上传的storage服务器IP,client将文件upload至storage服务器,完成操作。
read操作:
client端发送需要get的URL地址,tracker根据URL中的group来划分属于哪些storage服务器,然后返回可以访问的服务器IP地址。
client直接访问指定storage服务器,此storage服务器已经部署Nginx类似的HTTP服务,并加载fastdfs的模块,需提前进行域名跳转的设定,完成文件的读取。
关于多tracker和多storage的系统架构设计
根据fastdfs的架构描述,tracker和storage都是可以横向无限延伸,现还未有一个比较标准的一个tracker和storage配对的模式,只是说个人建议在一个group中,storage尽量保证在2-3台存储服务器,配对的tracker保持2台即可。
对于一个cluster的模式,大概可以这样去设计系统架构:
2台Nginx最前端的服务器,用于client端的read请求,主要作用是用来做负载均衡服务,热备操作,最好在nginx的config配置里面加入location设置,根据groupname直接跳转到对应的storage服务器。
2台tracker服务器,用于write操作的分发,也可以做热备操作,后端的storage服务器配置中tracker设置需要将2台服务器都绑定上去。
N台storage服务器,一个group配备2-3台服务器,可以根据数据量的大小,从小的规模做起,如有新的扩容,直接新增新的group和storage服务器即可,这样只需修改前端那nginx服务配置,其他都不用调整。
====================================
MogileFS VS FastDFS
[ 类似点 ]
1. 架构都比较雷同,都具备tracker和storage两个部分的cluster架构,可以都很方便进行横向扩张。
2. 对于storageServer方面一旦有某机器宕机,硬盘损坏情况,都能自动完成修复功能。
3. 架构设计都无单点失败问题,cluster中服务器都无需采用raid服务,避免出现类似hadoop设计的cluster中前端mapreduce宕机,整个系统失效的问题
4. 文件存储都不能对大文件拆分(hadoop可以实现),所以如果单个文件超过一台存储物理机的存储空间,就不能使用此系统存储
5. 文件系统的存储格式都不是原文存储,就算你登陆到文件服务器也无法获取到系统中的数据,必须经过一定的接口才能获取
[ 不同点 ]
1. F架构中不具备数据库,M中必须使用数据库来存储每一个文件的地址。但是F架构中在每次上传之后会返回一个相对地址,此地址需自己完成写入某个数据源中进行保存,在下一次读取的时候就能找到此文件对于文件系统中的位置。也就是说F中的数据是独立于文件系统之外,可以自己来设计的,M是包含到文件系统之中。
2. F是由C开发,M是有Perl开发,性能方面F占优
3. F直接使用socket通信方式,相对于M的HTTP方式,效率更高。并且F使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。
4. F从V1.14开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能,M不具备这个功能
5. F中有Group的概念,每个Group的就是一个存储的cluster,一个cluster每个存储服务器都互相复制数据。M中没有Group,但引入class来对不同的文件区分存储的方式。例如附录01中的配置,不同文件可以在upload操作的选择使用哪一种class,就可以采用不一样的备份数量控制。
6. F是国人开发出来,有问题可以直接问作者(QQ群:212801927),M想找到相关资料比较麻烦
附录01
mogadm class list
domain class mindevcount replpolicy
——————– ——————– ————- ————
toast byhost 2 MultipleHosts()
toast default 2 MultipleHosts()
toast four 4 MultipleHosts()
toast fourbynamenet 1 HostsPerNetwork(near=2,far=1)mogadm class add toast twoontwonets –replpolicy “HostsPerNetwork(near=2,far=2)”
mogadm class modify toast twoontwonets –replpolicy “HostsPerNetwork(near=3,far=3)”
仅有 1 条评论
- terry2014/01/23
5. 文件系统的存储格式都不是原文存储,就算你登陆到文件服务器也无法获取到系统中的数据,必须经过一定的接口才能获取
————————————————————————
fastdfs是原文件存储的,且不能对文件进行切割。
添加新评论
MogileFS与FastDFS的个人见解的更多相关文章
- 企业级分布式存储应用与实战MogileFS、FastDFS
项目实战9—企业级分布式存储应用与实战MogileFS.FastDFS 目录 实战一:企业级分布式存储应用与实战 mogilefs 实现 原理 1.环境准备 2.下载安装,每个机器都一样 3.数据 ...
- 项目实战9—企业级分布式存储应用与实战MogileFS、FastDFS
企业级分布式存储应用与实战-mogilefs 环境:公司已经有了大量沉淀用户,为了让这些沉淀用户长期使用公司平台,公司决定增加用户粘性,逐步发展基于社交属性的多样化业务模式,决定开展用户讨论区.卖家秀 ...
- Nginx反代Mogilefs分布式储存示例
一.分布式存储系统简介 随着信息技术不断的发展,给我们带来便利的同时,不断增加的数据量级.信息之间的连接关联越来越复杂.数据访问的并发量日益增加对I/O的要求越来越高.数据类型越来越复杂等难题也成为信 ...
- FastDFS分布式存储
分布式存储分类 通用分布式存储:mogilefs, fastdfs, ...(无文件系统接口, 通过API访问) 专用分布式存储:即分布式文件系统, moosefs, ...(有文件系统接口) GFS ...
- FastDFS 分布式文件系统详解
什么是文件系统 文件系统是操作系统用于在磁盘或分区上组织文件的方法和数据结构.磁盘空间是什么样的我们并不清楚,但文件系统可以给我们呈现一个非常清晰的表象,我们可以创建.删除.修改和复制这些文件,而实现 ...
- QQ游戏百万人同时在线服务器架构实现
转载自:http://morton5555.blog.163.com/blog/static/976407162012013112545710/# QQ游戏于前几日终于突破了百万人同时在线的关口,向着 ...
- Linux运维项目实战系列
Linux运维项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-项目实战2-实现基于LVS负载均衡集群的电商网站架构 2.1项目实战2.1-nginx 反向 ...
- Linux运维企业架构实战系列
Linux运维企业架构项目实战系列 项目实战1-LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2-LVS.nginx实现负载均衡系列 2.1 项目实战2.1-实现基于LVS负载均衡集 ...
- Linux运维企业架构项目实战系列
Linux运维企业架构项目实战系列 项目实战1—LNMP的搭建.nginx的ssl加密.权限控制的实现 项目实战2—LVS.nginx实现负载均衡系列2.1 项目实战2.1—实现基于LVS负载均衡集群 ...
随机推荐
- TeeChart 有用的属性
//背景 BackWall.Gradient.Visible = True //是否显示右边图标选项 Legend.Visible = False //不在显示3D效果, 比较有用 View3D = ...
- Delphi 实现对注册表的监视和扫描
;iRes := RegEnumKey( hKeyx, dwIndex, buf, dwSize );if iRes = ERROR_NO_MORE_ITEMS thenbreakelse if iR ...
- Javascript原型继承原理
对于面向对象的基础语法在此我就不重复了,对面向对象不熟悉的朋友可以参看<使用面向对象的技术创建高级 Web 应用程序>一文. prototype与[[prototype]] 在有面象对象基 ...
- 一致性Hash算法说明
本文章比较好的说明了一致性Hash算法的概念 Hash算法一般分为除模求余和一致性Hash1.除模求余:当新增.删除机器时会导致大量key的移动2.一致性Hash:当新增.删除机器时只会影响到附近的k ...
- .NET:使用 XPATH 读取有 xmlns 属性的 XML 文档出现的问题
问题 xml <sqlMap namespace="WHTR.Dao.Accounts" xmlns="http://ibatis.apache.org/mappi ...
- CSS:如何学习 CSS?
马上该转战互联网领域了,在此总结一下 CSS 学习的思路. 理解 CSS 的基本语法. 理解盒子模型. 理解文档流和定位. 理解浮动和清除. 理解各种 CSS 样式. 目前发现的最好的资源是:http ...
- 超感猎杀/超感八人组第一季至二季/全集Sense8迅雷下载
本季 Sense8 (2015)看点:<超感八人组>由沃卓斯基姐弟执导的科幻剧集是Netflix继“纸牌屋第二季”后的又一大手笔制作,讲述未来世界不同地区的8个人因同时目睹同一暴力事件.从 ...
- android BitmapDrawable的使用
<span style="font-size:18px;"> //功能:显示缩略图,大小为40*40 //通过openRawResource获取一个inputStrea ...
- [Web 前端] 解决因inline-block元素导致的空白间距和元素下沉
cp from : https://www.jianshu.com/p/617e78a27c88 ** 前言: ** CSS 中的 display:inline-block 是笔者最为喜欢的元素之一, ...
- Gradle 简介
一.简介 Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和 ...