Facebook 海量数据处理

好几个地方看到这个 Facebook - Needle in a Haystack: Efficient Storage of Billions of Photos,是 Facebook 的 Jason Sobel 做的一个 PPT,揭示了不少比较有参考价值的信息。【也别错过我过去的这篇Facebook 的PHP性能与扩展性

图片规模

作为世界上最大的 SNS 站点之一,Facebook 图片有多少? 65 亿张原始图片,每张图片存为 4-5 个不同尺寸,这样总计图片文件有 300 亿左右,总容量 540T,天! 峰值的时候每秒钟请求 47.5 万个图片 (当然多数通过 CDN) ,每周上传 1 亿张图片。

图片存储

前一段时间说 Facebook 服务器超过 10000 台,现在打开不止了吧,Facebook 融到的大把银子都用来买硬件了。图片是存储在 Netapp NAS上的,采用 NFS 方式。

图片写入

Facebook_write.png

尽管这么大的量,似乎图片写入并不是问题。如上图,是直接通过 NFS 写的。

图片读取

Facebook.png

CDN 和 Cachr 承担了大部分访问压力。尽管 Netapp 设备不便宜,但基本上不承担多大的访问压力,否则吃不消。CDN 针对 Profile 图象的命中率有 99.8%,普通图片也有 92% 的命中率。命中丢失的部分采由 Netapp 承担。

图中的 Cachr 这个组件,应该是用来消息通知(基于调整过的 evhttp的嘛),Memcached 作为后端存储。Web 图片服务器是 Lighttpd,用于 FHC (文件处理 Cache),后端也是 Memcached。Facebook 的 Memcached 服务器数量差不多世界上最大了,人家连 MYSQL 服务器还有两千台呢。

Haystacks --大海捞针

这么大的数据量如何进行索引? 如何快速定位文件? 这是通过 Haystacks 来做到的。Haystacks 是用户层抽象机制,简单的说就是把图片元数据的进行有效的存储管理。传统的方式可能是通过 DB 来做,Facebook 是通过文件系统来完成的。通过 GET / POST 进行读/写操作,应该说,这倒也是个比较有趣的思路,如果感兴趣的话,看一下 GET / POST 请求的方法或许能给我们点启发。

Facebook2.png

总体来看,Facebook 的图片处理还是采用成本偏高的方法来做的。技术含量貌似并不大。不清楚是否对图片作 Tweak,比如不影响图片质量的情况下减小图片尺寸。

作者: Fenng
网址: http://www.dbanotes.net/arch/facebook_photos_arch.html

标签:Facebook 网站架构 转贴摘录 
时间:2008-06-27 09:43:14 Bookmark Facebook 海量数据处理 at del.icio.us  Digg Facebook 海量数据处理 at Digg.com  Bookmark Facebook 海量数据处理 at Spurl.net  Bookmark Facebook 海量数据处理 with wists  Bookmark Facebook 海量数据处理 at Simpy.com  Bookmark Facebook 海量数据处理 at NewsVine  Blink this Facebook 海量数据处理 at blinklist.com  Bookmark Facebook 海量数据处理 at Furl.net  Bookmark Facebook 海量数据处理 at reddit.com  Fark Facebook 海量数据处理 at Fark.com  Bookmark Facebook 海量数据处理 at blogmarks  Bookmark Facebook 海量数据处理 at YahooMyWeb
本文相关评论(Comments) 订阅该Blog下的评论RSS
暂无评论。
发表评论(点击右边的小按钮打开或关闭表单)  点击打开表单
搜索更多
Google
RSS订阅
寻欢翼翼的孤寂人生
分类导航
文章导读
最新评论
我的豆瓣秀
Copyright ©2006 - 2008 w2Blog.Net