`

Facebook 的系统架构

 
阅读更多

来源http://www.quora.com/What-is-Facebooks-architecture (由Micha?l Figuière回答)

根据我现有的阅读和谈话,我所理解的今天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能力。
  • 离线处理使用Hadoop 和 Hive。
  • 日志,点击,feeds数据使用Scribe [6],把其聚合并存在 HDFS,其使用Scribe-HDFS [7],因而允许使用MapReduce进行扩展分析。

 

  • BigPipe [8] 是他们的定制技术,用来加速页面显示。
  • 用来搞定用户上传的十亿张照片的存储,其由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 PHPhttp://developers.facebook.com/blog/post/358
[2] Thrifthttp://thrift.apache.org/
[3] Memcachedhttp://memcached.org/
[4] Cassandrahttp://cassandra.apache.org/
[5] HBasehttp://hbase.apache.org/
[6] Scribehttps://github.com/facebook/scribe
[7] Scribe-HDFShttp://hadoopblog.blogspot.com/2009/06/hdfs-scribe-integration.html
[8] BigPipehttp://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919
[9] Varnish Cachehttp://www.varnish-cache.org/
[10] Facebook goes for Varnishhttp://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 Endhttp://www.facebook.com/note.php?note_id=10150148835363920
[13] The Underlying Technology of Messageshttps://www.facebook.com/note.php?note_id=454991608919
[14] The Underlying Technology of Messages Tech Talkhttp://www.facebook.com/video/video.php?v=690851516105
[15] Facebook’s typeahead search architecturehttp://www.facebook.com/video/video.php?v=432864835468
[16] Facebook Chathttp://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 Projecthttp://www.facebook.com/note.php?note_id=10150144039563920
[19] Open Compute Projecthttp://opencompute.org/
[20] Facebook’s architecture presentation at Devoxx 2010http://www.devoxx.com
[21] Scaling Facebook to 500 millions users and beyondhttp://www.facebook.com/note.php?note_id=409881258919

分享到:
评论
1 楼 nodejs 2012-06-09  
FB果然不一般,学习了。

相关推荐

    facebook的架构(PDF)

    1. **分布式存储**:Facebook使用了多种分布式存储系统,如Haystack(用于存储用户上传的照片)、Cassandra(用于存储非结构化数据)和Bigtable(谷歌开源的一种分布式键值存储系统)。这些系统能够处理大规模数据,...

    facebook技术架构.pdf

    Facebook作为全球最流行的社交平台之一,拥有庞大的用户基础和流量,其技术架构自然成为了业界关注的焦点。为了维持高效的分享和通信能力,Facebook构建了一个复杂的系统来应对难以想象的访问量和数据规模。2007年11...

    facebook的信息架构评析

    Facebook的早期信息架构分为三个主要部分:系统核心导航区、应用导航区和内容显示区。系统核心导航区包含品牌标识和全局导航,应用导航区则包含搜索和应用列表,而内容显示区则用于展示用户的主要交互内容,包括...

    Facebook早期架构设计以及缓存系统

    Facebook作为全球最大的社交网络平台,其早期的架构设计与缓存系统对于理解大规模分布式系统的构建具有重要的参考价值。本文将深入探讨这两个主题,为IT专业人士提供相关知识点。 **Facebook早期架构设计** ...

    FACEBOOK服务架构

    Facebook的服务器架构是全球互联网行业中备受关注的焦点,作为一个高性能的集群系统,它承载着海量的数据处理任务。本文将深入探讨Facebook的架构设计,从不同的角度解析其技术栈。 首先,Facebook的架构可以分为两...

    Facebook 网站架构总结

    Facebook的网站架构设计体现了模块化、整合化和清晰化的理念,旨在实现简单、高效的系统运作。以下是对Facebook架构的深入解析: 1. **语言选择**: Facebook选择了PHP作为主要的后端开发语言,这主要是因为PHP的...

    facebook 架构 php

    Facebook的架构设计涉及到多个层面,包括前端、后端、数据库、分布式系统、缓存策略以及编程语言PHP的应用。以下是对Facebook架构及其PHP使用的一些关键知识点的详细解析: 1. **前端架构**:Facebook的前端主要是...

    facebook 架构

    通过定制化改进开源技术、引入自研服务和工具,以及遵循简洁高效的设计原则,Facebook成功构建了一个能够应对海量用户和数据挑战的架构体系。这不仅是技术上的创新,也是对互联网服务本质的深入思考。

    FaceBook架构设计.zip

    Facebook是全球最大的社交媒体平台之一,其背后支撑的架构设计是一个庞大的、复杂且高度优化的系统。这个压缩包“FaceBook架构设计.zip”包含了对Facebook如何处理海量数据、提供高效服务的深入探讨。以下是对其中...

    著名网站架构设计(包括Facebook Google Amazon

    网站架构设计是构建高效、可扩展且可靠的在线服务的核心,对于Facebook、Google和Amazon这样的全球知名互联网巨头来说,他们的架构设计更是业界的典范。这些公司不仅处理着海量的数据,还要保证用户能快速、稳定地...

    架构之美(face book架构)

    《架构之美:Facebook架构解析》是一本深入探讨大型互联网公司,特别是Facebook的系统架构与设计的书籍。作为架构师的必备读物,它揭示了如何构建可扩展、高可用、高性能的复杂网络服务。以下是对该主题的详细阐述:...

    FaceBook架构设计

    你的数据结构⋯⋯”信息架构师坚信,处于大多数系统核心的是数据,而不是算法。随 着Web的兴起,用户产生和消费的数据比以往更加推动了信息技术的使用。Web用户不 会去接触QuickSort(快速排序)。他们会访问一个...

    faceBook 数据库详细说明

    Facebook 数据库是一个复杂而庞大的系统,它支撑着全球最大的社交网络平台,每天处理数十亿用户的交互数据。在“facebook.jpg”这个文件中,很可能是Facebook数据库的某种结构或设计概念的示意图。虽然具体的内容...

    facebook的架构设计应用到企业级开发中

    将Facebook的架构设计应用到企业级开发中,不仅能够解决企业内部系统碎片化、难以集成的问题,还能提升用户体验,促进模块化开发与资源共享。本文将深入探讨如何借鉴Facebook的架构设计,尤其是其开放平台(F8)的...

    浅析facebook的信息架构

    (在1024分辨率里,图片宽度不能完全显示,建议单独打开图片看)大架构的发展和变迁过程:1、最开始,facebook的整个信息架构主要分成三个部分:“系统核心导航区”(如上图,蓝色部分。包括LOGO和两个全部导

    facebook的架构设计应用到企业级开发中.doc

    Facebook的架构设计对企业级开发的启示主要体现在其开放平台(Facebook Platform)和应用程序(Apps)的概念上,这些理念可以有效地解决企业内部系统集成和管理的挑战。以下是对Facebook架构设计应用到企业级开发中...

    ebay,youku,facebook等架构文档

    这些文档分别来自于eBay、YouTube、Facebook、淘宝、豆瓣、亚马逊和谷歌,涵盖了各大公司在不同时间点的架构设计和实践经验。这些公司都是互联网行业的巨头,它们的架构设计对整个行业有着深远的影响。以下是对这些...

    facebook sdn

    Wedge架构中的一个重要组件是“FBOSS”(Facebook Open Switch Software),这是Facebook开发的交换机操作系统,支持OpenFlow和其他SDN协议。FBOSS提供了对硬件资源的低级访问,使得Facebook能够根据需要调整网络...

Global site tag (gtag.js) - Google Analytics