关于奇矩互动奇矩互动招贤纳士奇矩互动优质虚拟主机Discuz!商业用户享有本站VIP服务LAMP环境配置手册(CentOS5.1)
发新话题
打印

Facebook 海量数据处理

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 方式。
图片写入
尽管这么大的量,似乎图片写入并不是问题。如上图,是直接通过 NFS 写的。
图片读取
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 请求的方法或许能给我们点启发。

总体来看,Facebook 的图片处理还是采用成本偏高的方法来做的。技术含量貌似并不大。不清楚是否对图片作 Tweak,比如不影响图片质量的情况下减小图片尺寸。
真正的尊敬,既不属于那些批评别人头头是道的人,也不是属于给强人指出过错、指点别人哪里做的不好的人。真正的尊敬,是属于那些勇于亲身投入战场,脸上沾满了尘土、汗水和鲜血的奋斗者们。他们坚持不懈的努力,尽管曾经犯下错误,并一再失败,但他们满怀激情,执著不懈,将生命奉献于崇高的事业。他们为经过艰辛努力最终取得的伟大成就而自豪,如果失败,他们也败得荣耀。因此,那些既没赢得过胜利,也没懂得什么叫做失败的,冷漠、胆怯的灵魂,是永远也无法与这些真正值得尊敬的人相提并论的。
http://www.cnedwin.com

TOP

发新话题