您的位置:首页 > 运维架构 > 网站架构

Facebook架构解读

2016-01-18 17:28 651 查看
从我看过的各种资料,还有与各式人等的交谈中,可以得出Facebook现在的架构是这样的:

Web前端用PHP语言编写,然后用HipHop Compiler[1]转换为C++语言,再用g++编译器编写,从而提供高性能的模板与web逻辑执行层。
完全依赖静态编译所造成的限制,让Facebook开始启用HipHop Interpreter [2]及HipHop虚拟机,将PHP代码转译为HipHop ByteCode[3]。
其业务逻辑以服务形式存在,使用Thrift框架[4]。其中一些服务根据具体需求,在实现时使用了PHP、C++或者Java语言(可能还用到了一些其他语言)。
使用Java实现的服务并未使用任何常规的企业应用服务,而是使用Facebook的定制应用服务器。一开始这些都被视为重复工作,不过随着这些服务仅(或大多)使用Thrift框架,Tomcat甚至Jetty都显得开销过大、值不符实了。
用MySQL、Memcached[5]、Hadoop’s HBase[6]实现持久化;用Memcached作为MySQL缓存与通用缓存。
用Hadoop和Hive实现离线处理。
类似日志、链接与feed之类的数据传输用Scribe[7]实现;用Scribe-HDFS [8]来完成HDFS的聚合存储工作;从而可以用MapReduce进行深入扩展分析。
BigPipe[9]是他们的定制技术,用流水线逻辑加快页面呈现。
用Varnish Cache[10]实现HTTP代理,这套软件因其性能与效率较高而受到青睐[11]。
Facebook用户所发布的照片数以亿计,其存储由Haystack这个ad-hoc存储解决方案(由Facebook开发)来处理——包括对其进行低级别优化与只扩展写入方式[12]。
Facebook Message使用了自身架构——众所周知是基于分区与动态集群管理的架构。业务逻辑与持久化被封装到所谓的“Cell”中。每个Cell处理一部分用户的请求;随着用户数增加再扩展新的Cell[13]。使用HBase实现持久化[14]。
Facebook Message的搜索引擎建立在反向索引之上,存储于HBase之中[15]。
Facebook搜索引擎的实现细节尚不得而知。
预输入搜索(typeahead search)使用定制化存储与检索逻辑[16]。
聊天服务建立在Epoll服务器之上,由Erlang开发,用Thrift[17]访问。
Facebook还构建了一个自动化系统,负责启动适当的修复工作流来管理应对警报,并在故障无法解决时通知人类管理员[18]。

已知信息中,各个组件的配置资源、一些信息还有数字如下:

Facebook拥有超过6万台服务器 [18]。最近发布的数据中心位于俄勒冈州普赖恩维尔市,硬件完全自行设计[19] ,并被归为Open Compute Project[20]。

Memcached所存储与处理的数据多达300TB[21]。
其Hadoop与Hive集群由3000台8核、32G内存、12TB空间的服务器组成,总计达到2.4万核、96TB内存、36PB空间[22]。
在2010年7月份就已达到每天1000亿的点击量,500亿张图片,3万亿个缓存对象,130TB的日志[22]。
备注:Cassandra已经不再使用。Facebook的实时分析系统是基于记录所有输入的链接(来自用户页面的like和comment请求)。将其记录在HDFS中,而不是用Puma将其拽出再分批存储到HBase中。

相关资料与可参考文章还包括:

Facebook近期发布了一篇博文,详细描述了将会在Altoona数据中心试用的下一代网络架构。这种处理大流量的方式非常新颖,优于传统方式与协议。 Facebook发布了下一代网络

还有就是近期宣布强化搜索功能,以大数据分析与数据管理基础作为支持。Facebook大数据分析增强搜索功能

另外可参考的文章还有:

Facebook的数据仓储与架构分析
Apache Hadoop在Facebook的应用(更多信息可参考Dhruba
Borthakur的博客)
用jemalloc实现Scalable
Memory Allocation(以及这篇问答
Tornado(web框架)
Facebook的搜索速度为什么那么快
Malte Schwarzkopf:Facebook堆栈
Facebook的代码设计进化史

参考资料包括:

[1] HipHop for PHP

[2] Making HPHPi Faster

[3] The HipHop Virtual Machine

[4] Thrift

[5] Memcached

[6] HBase

[7] Scribe

[8] Scribe-HDFS

[9] BigPipe

[10] Varnish Cache

[11] Facebook goes for Varnish

[12] Needle in a haystack: efficient storage of billions of photos

[13] Scaling the Messages Application Back End

[14] The Underlying Technology of Messages

[15] The Underlying Technology of Messages Tech Talk

[16] Facebook’s typeahead search architecture

[17] Facebook Chat

[18] Who has the most Web Servers?

[19] Building Efficient Data Centers with the Open Compute Project

[20] Open Compute Project

[21] Facebook’s architecture presentation at Devoxx 2010

[22] Scaling Facebook to 500 millions users and beyond

原文链接: What is Facebook’s
architecture?(译者/Vera 责编/钱曙光)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: