分布式小文件系统fastdfs与weedfs的对比

小编小文件存储用的一直是Mongodb,Tair和FastDFS风评一直很不错,最近1年Net界用的比较多的基本上都是FastDFS或者Mongodb(分布式图片服务器集群)。我也是今天才看到seaweedfs,小编挺看好的,Net和Go的项目混搭在中大型Net技术主线公司是越来越常见了~~~~

最近拿一台双核1G的kvm vps搭建了一个图片的服务器,前面用百度云加速扛着,有了个专业图片存储及CDN的样子。每天还是有50W左右的PV,流量在30G左右。总结一下最近接触过的两个分布式小文件系统weedfs和fastdfs。

astdfs的详细介绍看这里=》 https://github.com/happyfish100/fastdfs

weedfs官方地址= >https://github.com/chrislusf/seaweedfs

在两个系统中都有一个负责管理存储节点或者存储卷的服务,weedfs中叫master,而fastdfs中叫做tracker。下面是在文档中对各自的master的解释

FastDFS 服务端有两个角色:跟踪器( tracker )和存储节点( storage )。跟踪器主要做调度工作,在访问上起负载均衡的作用。Weed - FS 的 master server 选择管理数据卷( data volumes )而不是数据块,每个数据卷大小是 32GB ,能够保存大量的文件( 小文件 ),每个存储节点能够拥有很多个数据卷, master 节点只需要保存这些卷的元数据就可以了,并且这些数据量很少,并且大部分情况下是很少会变化的。所有的卷都由 master 服务器来管理, master 服务器包含了卷 id 和卷服务器的 mapping ,这些信息基本不变,可以很好的缓存起来。

根据上面的解释就可以知道,master在上传和下载文件的过程中都承载着定位文件需要上传或者下载的具体的卷。

在具体存储小文件的时候,weedfs是通过将多个小文件的二级制存储到一个大文件中,然后通过索引进行具体的位置的定位。而fastdfs是通过文件夹散列的方式将文件直接存储在硬盘上面。但从这里就可以看出来,在海量小文件的情况下,weedfs产生的文件的元数据是很少的,因他他至于每个数据卷的元数据。而weedfs会产生大量的元数据,因为他依赖的是操作系统的文件管理系统,对每一个文件的定位以及验证都是通过元数据来进行的。

从上面的对比就可以看出来,在海量小文件的情况下肯定是weedfs的性能更高,因为他的文件元数据是相当少的,所以这部分经常被访问的元数据能够被操作系统或者内存直接缓存住,这样就减少了对磁盘的操作,而磁盘的操作只需要进行一次,就是在进行文件读取的时候。而fastdfs回产生海量的文件的元数据,大到一定程序了操作系统的缓存或者内存就无法进行全部存储了,这样就造成了在硬盘上进行随机读写来查找文件了,两个效率和速度以及对系统和硬盘造成的负载显而易见了。

总结:小文件存储不同于大文件,大文件的性能和时间消耗,主要在传输的带宽等限制上。而小文件主要在于系统本身的读取速度上。所以综合来说,个人觉得weedfs比fastdfs更先进,更能承受数量更大的小文件

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2017-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是攻城师

从App的角度看进程和线程

在现在人人都有一部手机或电脑的年代,我们几乎天天都在使用各种app,如微信,QQ,抖音,优酷等等软件,表面上我们是与各种app交互,但如果站在操作系统的角度来看...

612
来自专栏DeveWork

为你的WordPress 主题添加结构化数据/丰富文本摘要,高亮搜索结果(下)

为了方便写文章与读者阅读,特将本文分为上下两个部分。上一篇请点击这里查阅,这一篇接着上一篇来。特别提醒,要查看添加后的效果,可以使用谷歌的 结构化数据测试工具 ...

2125
来自专栏IMWeb前端团队

分享几个便利的工具软件

clover 官方网址:http://cn.ejie.me/ 方便的 Tab 页功能 要掌握功能强大,操作简单的标签页,只需记住Ctrl+T新开页面,Ctrl+...

1986
来自专栏架构师之路

php使用tcp长连接的一种优化思路

一、面向人群 如果站点架构满足以下几点,那么本文的优化方案会非常适合: 1)使用php等脚本语言作为开发语言 2)需要连接后端服务,例如RPC服务、memcac...

3886
来自专栏BeJavaGod

文档!重要的事情说第四遍~

之前我有提过文档的事,标题是《文档!文档!文档!重要的事情说三遍!》,其中提到的文档工具是使用wiki来管理文档,当然也能配合jira来分发任务,以及管理bug...

2823
来自专栏九彩拼盘的叨叨叨

我理想中的前端团队需要具备的

881
来自专栏公有云大数据平台弹性 MapReduce

简单了解公平调度器的一些队列设置

在腾讯云EMR的用户日常反馈中,经常会遇到因为YARN的队列配置不合理导致资源利用率不高,任务提交不上的问题,所以有了以下的文章,方便用户在日常按照一定的需求将...

2222
来自专栏林欣哲

10 分钟看懂分布式事务

什么是分布式事务 问题的引出 先看一张图,一个电商平台的架构图。 ? 对于用户来说的一个创建订单的过程,背后很可能跨越了多个应用服务。涉及诸如:订单、库存、...

3815
来自专栏me的随笔

Redis 缓存设计原则

本文为作者原创,版权归作者雪飞鸿所有。 转载必须保留文章的完整性,且在页面明显位置处标明原文链接。

2724
来自专栏24K纯开源

macOS下加载动态库dylib报"code signature invalid"错误的解决办法

一、现象描述       在macOS上搞开发也有一段时间了,也积攒了一定的经验。然而,今天在替换工程中的一个动态库时还是碰到了一个问题。原来工程中用的是一个静...

2925

扫码关注云+社区

领取腾讯云代金券