转自http://leves.iteye.com/blog/1041890
根据我现有的阅读和谈话,我所理解的今天Facebook的架构如下:
- Web 前端是由 PHP 写的。Facebook 的 HipHop [1] 会把PHP转成 C++ 并用 g++编译,这样就可以为模板和Web逻贺业务层提供高的性能。
- 业务逻辑以Service的形式存在,其使用Thrift [2]。这些Service根据需求的不同由PHP,C++或Java实现(也可以用到了其它的一些语言……)
- 用Java写的Services没有用到任何一个企业级的应用服务器,但用到了Facebook自己的定制的应用服务器。看上去好像是重新发明轮子,但是这些Services只被暴露给Thrift使用(绝大所数是这样),Tomcat太重量级了,即使是Jetty也可能太过了点,其附加值对Facebook所需要的没有意义。
- 持久化由MySQL, Memcached [3], Facebook 的 Cassandra [4], Hadoop 的 HBase [5] 完成。Memcached 使用了MySQL的内存Cache。Facebook 工程师承认他们的Cassandra 使用正在减少,因为他们更喜欢HBase,因为它的更简单的一致性模型,以到其MapReduce能力。
- 用来搞定用户上传的十亿张照片的存储,其由Haystack处理,Facebook自己开发了一个Ad-Hoc存储方案,其主要做了一些低层优化和“仅追加”写技术 [11].
- Facebook Messages 使用了自己的架构,其明显地构建在了一个动态集群的基础架构上。业务逻辑和持久化被封装在一个所谓的’Cell’。每个‘Cell’都处理一部分用户,新的‘Cell’可以因为访问热度被添加[12]。 持久化归档使用HBase [13]。
- Facebook Messages 的搜索引擎由存储在HBase中的一个倒置索引的构建。 [14]
- Facebook 搜索引擎实现细节据我所知目前是未知状态。
- Typeahead 搜索使用了一个定制的存储和检索逻辑。 [15]
- Chat 基于一个Epoll 服务器,这个服务器由Erlang 开发,由Thrift存取 [16]
关于那些供给给上述组件的资源,下面是一些信息和数量,但是有一些是未知的:
- Facebook估计有超过60,000 台服务器[16]。他们最新的数据中心在俄勒冈州的Prineville,其基于完全自定设计的硬件[17] 那是最近才公开的 Open Compute 项目[18]。
- 300 TB 的数据存在 Memcached 中处理 [19]
- 他们的Hadoop 和 Hive 集群由3000 服务器组成,每台服务器有8个核,32GB的内存,12TB的硬盘,全部有2万4千个CPU的核,96TB内存和36PB的硬盘。 [20]
- 每天有1000亿的点击量,500亿张照片, 3 万亿个对象被 Cache,每天130TB的日志(2010年7月的数据) [21]
参考引用
[1] HipHop for PHP: http://developers.facebook.com/blog/post/358
[2] Thrift: http://thrift.apache.org/
[3] Memcached: http://memcached.org/
[4] Cassandra: http://cassandra.apache.org/
[5] HBase: http://hbase.apache.org/
[6] Scribe: https://github.com/facebook/scribe
[7] Scribe-HDFS: http://hadoopblog.blogspot.com/2009/06/hdfs-scribe-integration.html
[8] BigPipe: http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919
[9] Varnish Cache: http://www.varnish-cache.org/
[10] Facebook goes for Varnish: http://www.varnish-software.com/customers/facebook
[11] Needle in a haystack: efficient storage of billions of photos: http://www.facebook.com/note.php?note_id=76191543919
[12] Scaling the Messages Application Back End: http://www.facebook.com/note.php?note_id=10150148835363920
[13] The Underlying Technology of Messages: https://www.facebook.com/note.php?note_id=454991608919
[14] The Underlying Technology of Messages Tech Talk: http://www.facebook.com/video/video.php?v=690851516105
[15] Facebook’s typeahead search architecture: http://www.facebook.com/video/video.php?v=432864835468
[16] Facebook Chat: http://www.facebook.com/note.php?note_id=14218138919
[17] Who has the most Web Servers?:http://www.datacenterknowledge.com/archives/2009/05/14/whos-got-the-most-web-servers/
[18] Building Efficient Data Centers with the Open Compute Project: http://www.facebook.com/note.php?note_id=10150144039563920
[19] Open Compute Project: http://opencompute.org/
[20] Facebook’s architecture presentation at Devoxx 2010: http://www.devoxx.com
[21] Scaling Facebook to 500 millions users and beyond: http://www.facebook.com/note.php?note_id=409881258919
(全文完)
分享到:
相关推荐
当前大多数计算机科学的学生将Fred Brooks的这句话理解为:“给我看你的...着Web的兴起,用户产生和消费的数据比以往更加推动了信息技术的使用。Web用户不 会去接触QuickSort(快速排序)。他们会访问一个数据仓库。
Facebook是一个社会化网络站点,它于2004年2月4日上线。每个用户在facebook上有自己的档案和...虽然目前在国内无法访问facebook,但其强悍的技术架构还是值得我们去研究分析和总结的,或许我们可以从中得到一点启发。
著名网站架构设计(包括Facebook Google Amazon 共计123篇) 互联网公司技术架构系列资料-新浪.百度.腾讯.淘宝
Google、Facebook、eBay、Amazon、阿里、百度、腾讯等头部互联网公司的技术架构设计方案合集
个人这两天一直在搜集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩之外,二来也可供闲时反复琢磨体会,何乐而不为呢?特此,总结整理了诸如国外wikipedia,Facebook,Yahoo!,YouTube,...
全书共四部分13 章:第一部分(第1~2 章)主要介绍了如何获取、阅读和调试Hadoop 的源代码,以及YARN 的设计思想、基本架构和工作流程;第二部分(第3~7 章)结合源代码详细剖析和讲解了YARN 的第三方开源库、底层...
第3章 伸缩性架构设计 51 3.1 简介 51 3.2 背景 52 3.3 架构 56 3.4 关于架构的思考 61 第4章 记忆留存 67 4.1 功能和约束 68 4.2 工作流 69 4.3 架构关注点 70 4.4 用户反应 90 4.5 结论 90 参考文献 90...
个人这两天一直在搜集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩之外,二来也可供闲时反复琢磨体会,何乐而不为呢?特此,总结整理了诸如国外wikipedia,Facebook,Yahoo!,YouTube,...
第3章 伸缩性架构设计 51 3.1 简介 51 3.2 背景 52 3.3 架构 56 3.4 关于架构的思考 61 第4章 记忆留存 67 4.1 功能和约束 68 4.2 工作流 69 4.3 架构关注点 70 4.4 用户反应 90 4.5 结论 90 参考文献 90...
阿里巴巴中文站架构设计实践 何崚 pdf">云计算系统架构文档 上 DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例...
产品设计者需要熟练掌握网上各种产品的表现、特点、利弊、技巧这叧是一个设计者最基本的技能,他更重要的工作是将目标仸务、用户需求通过在抽象局面的权衡、分析、理解、叏舍、排序得到如何贴切满足需求的本质。...
第3章 伸缩性架构设计 51 3.1 简介 51 3.2 背景 52 3.3 架构 56 3.4 关于架构的思考 61 第4章 记忆留存 67 4.1 功能和约束 68 4.2 工作流 69 4.3 架构关注点 70 4.4 用户反应 90 ...
402.3 说明什么问题 472.4 轮到你了 48参考文献 48第二部分 企业级应用架构第3章 伸缩性架构设计 513.1 简介 513.2 背景 523.3 架构 563.4 关于架构的思考 61第4章 记忆留存 674.1 功能和约束 684.2 工作...
本书由周爱民老师倾情作序,美团技术总监赵强、搜狐高级技术经理邵充、Facebook软件工程师邓凌飞、ofo前端架构师代学辉联袂力荐。 2.本书系统、全面地介绍了前端工程体系的各个环节,包括设计要点和实践经验。全书...
个人这两天一直在搜集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩之外,二来也可供闲时反复琢磨体会,何乐而不为呢?特此,总结整理了诸如国外wikipedia,Facebook,Yahoo!,YouTube,...
Nosql (1)redis安置 (2)RedisAdminUI.zip (3)redis安装部署 (4)redis技术深层剖析及应用实践经验(sina微博) (5)Redis内存存储结构分析 (6)redis起步 (7)Redis容量及使用规划 ...盛大云平台架构设计和实现
《iOS网络编程与云端应用最佳实践》是介绍iOS 6网络编程和云端应用开发技术书籍,介绍了苹果网络、数据交换格式、WebService、iCloud、定位服务、地图、推送通知、Newsstand、应用内购买、Passbook、以及社交网络...