FastFDS和MogileFS的对比
FastDFS设计时借鉴了MogileFS的一些思路。FastDFS是一个完善的分布式文件存储系统,通过客户端API对文件进行读写。可以说,MogileFS的所有功能特性FastDFS都具备,MogileFS网址:http://www.danga.com/mogilefs/。
另外,相对于MogileFS,FastDFS具有如下特点和优势:
1. FastDFS完善程度较高,不需要二次开发即可直接使用;
2. 和MogileFS相比,FastDFS裁减了跟踪用的数据库,只有两个角色:tracker和storage。FastDFS的架构既简化了系统,同时也消除了性能瓶颈;
3. 在系统中增加任何角色的服务器都很容易:增加tracker服务器时,只需要修改storage和client的配置文件(增加一行tracker配置);增加storage服务器时,通常不需要修改任何配置文件,系统会自动将该卷中已有文件复制到该服务器;
4. FastDFS比MogileFS更高效。表现在如下几个方面:
1)参见上面的第2点,FastDFS和MogileFS相比,没有文件索引数据库,FastDFS整体性能更高;
2)从采用的开发语言上看,FastDFS比MogileFS更底层、更高效。FastDFS用C语言编写,代码量不到3万行,没有依赖其他开源软件或程序包,安装和部署特别简洁;而MogileFS用perl编写;
3)FastDFS直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。并且FastDFS使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。
5. FastDFS有着详细的设计和使用文档,而MogileFS的文档相对比较缺乏。
6. FastDFS的日志记录非常详细,系统运行时发生的任何错误信息都会记录到日志文件中,当出现问题时方便管理员定位错误所在。
7. FastDFS还对文件附加属性(即meta data,如文件大小、图片宽度、高度等)进行存取,应用不需要使用数据库来存储这些信息。
8. FastDFS从V1.14开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能。
9. FastDFS从V1.18开始支持下载文件时,允许指定文件偏移量和大小(字节数)。
[ 本帖最后由 happy_fish100 于 2009-8-5 22:16 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
FastDFS google code源码下载地址:http://code.google.com/p/fastdfs/downloads/list
FastFDS和FastDFS是两个东西吗?还是笔误呢?迷糊!
FastDFS和FastDHT吧?
这是两个系统,FastDHT是分布式Hash系统。
感谢作者带来这么好的东西,另外有两个问题:
1、FastDFS相比MogileFS有什么不足?
2、有哪些实际的产品已经使用FastDFS了?
谢谢
>>1、FastDFS相比MogileFS有什么不足?
FastDFS主要借鉴了MogileFS的一些思想,解决了MogileFS大并发访问下在架构上的一些问题。我所了解的情况来看,二者主要是设计理念上有些差异,这种理念的差异各有利弊吧。
>>2、有哪些实际的产品已经使用FastDFS了?
据我在msgr中交流的情况来看,有好几家公司投入了实际使用。
我先做试验,如果很好,我也将把它用在我们服务器上。
不知道笔者是不是为自己fastdfs做广告呢?
应该不一定说没有了数据库跟踪器就有很好性能.
有一点我想请问一下.你的日志文件真的写的很详细吗?
对于大系统多文件中我想找一个文件是哪个位置可以一下可以找到吗?
可以适合一次开发自己分布文件系统...
mogilefs虽说是有perl的.安装可能有些复杂多了.不过它的备份机制是非常好的.
还有我认为有了数据库做文件索引对于大批量文件数达到上亿时,我认为是非常好的方式.
达到很大时.日志文件中记录的....不是很烦琐吗???
不过可以用c写一个分布服务系统应该还是蛮不错,起码我们国人也可以写一个很不错的...
可以鼓励一下.
不过我也写一个基于mogilefs上封装跟类似mgilefs的python写的分布式存储系统...
http://code.google.com/p/pndfs/有兴趣朋友和我进一步交流一下...我的邮箱:songfu.zhang@gmail.com Msnscar810429@hotmail.com
不明白,没有文件索引数据库你怎么处理超大文件(500G)存放的,难道一个这么大的文件不应该分块存放到多个不同的机器上,存放时候应该是尽量找空闲状态的机器吧,就算分块存放也不一定非得连续存放吧。
就算没有这种变态的大文件,对于小文件很多的情况难但你就把那么多文件索引信息全部存放到内存中? 万一一不小心core了 or 掉电了怎么办? 原来的文件还可以找到吗?
使用索引数据库至少可以在数据一致性上有保证,不存在丢失数据的问题。当然维护这个数据库也是很头痛的问题了。