一个轻量级的分布式文件存储FastDFS

国人做的用C语言写的轻量级的分布式文件存储,只有 tracker和storage 节点。没有使用数据库。

作者happy_fish写的介绍性页面: http://fastdfs.zhan.cn.yahoo.com/apps/ncpcontent/?module_id=19100000018373&action=read&articleid=18
项目地址: http://fastdfs.zhan.cn.yahoo.com/
文件下载地址: http://code.google.com/p/fastdfs/downloads/list

作者做的和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语言编写,代码量不到2万行,没有依赖其他开源软件或程序包,安装和部署特别简洁;而MogileFS用perl编写;
3)FastDFS直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。并且FastDFS使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。
5. FastDFS有着详细的设计和使用文档,而MogileFS的文档相对比较缺乏。
6. FastDFS的日志记录非常详细,系统运行时发生的任何错误信息都会记录到日志文件中,当出现问题时方便管理员定位错误所在。
7. FastDFS还对文件附加属性(即meta data,如文件大小、图片宽度、高度等)进行存取,应用不需要使用数据库来存储这些信息。

Popularity: 2% [?]

Related

Comments

2 Responses to “一个轻量级的分布式文件存储FastDFS”

  1. fire9 on December 10th, 2008 1:14 am

    尝试了解了一下mogilefs和fastdfs,感觉没有fastdfs开发者说的比mogilefs好太多;第一点mogilefs不但可以是用 nfs和http也可以使用各种api,比如说perl,php,java,python.;通过数据库来索引库来管理存储比日志更直观,通过开发web程序直接可以通过页面来了解存储信息,fastdfs的日志信息虽然比较详细,但不宜读,有用格式化工具做整理后应该还可以的;虽然解释型语言没有编译型语言效率高,但是不会查很多的,别忘记Perl也是拿C写出来了,却有C没有的更多优点;mogilefs在安装上面的确没有fastdfs方便,只要你配置好需要的perl包,安装上没什么区别;另外,mogilefs在管理工具和监控工具要比fastdfs好很多,查看的信息基本都可以了解到;说道存储方式实现上,两者是截然不同的,mogilefs利用raid原理而fastdfs只是卷组的管理形式 。不过,fastdfs确定不失为一款好的分布式存储系统,希望能发展的更好。

    [Reply]

    sunny Reply:

    同意观点
    MogileFS采用了离散存储,将一个文件离散方式存储在多个节点上,不同节点上的文件存储量不一定一样,便于存储节点的扩展,同时也有效避免了单点失败的问题。
    而FastDFS可以认为是镜像存储,同组存储节点上存储的文件是相同的,以后一个存储节点空间不够的时候只能采用同步的存储空间扩容替代升级,不能像MogileFS那样只通过添加新节点扩展整体的存储容量。
    相对觉得 FastDFS 应该和 GlusterFS 比较,分组镜像存储,但是 GlusterFS 更好,采用类似nfs那样的文件系统方式,有RAID那种条带功能,可以很好的提升文件的存取速度。

    [Reply]

Leave a Reply