Facebook的体系结构分析---外文转载
From various readings and conversations I had, my understanding of Facebook's current architecture is:

  • Web front-end written in PHP. Facebook's HipHop Compiler [1] then converts it to C++ and compiles it using g++, thus providing a high performance templating and Web logic execution layer.
  • Because of the limitations of relying entirely on static compilation, Facebook's started to work on a HipHop Interpreter [2] as well as a HipHop Virtual Machine which translate PHP code to HipHop ByteCode [3].
  • Business logic is exposed as services using Thrift [4]. Some of these services are implemented in PHP, C++ or Java depending on service requirements (some other languages are probably used...)
  • Services implemented in Java don't use any usual enterprise application server but rather use Facebook's custom application server. At first this can look as wheel reinvented but as these services are exposed and consumed only (or mostly) using Thrift, the overhead of Tomcat, or even Jetty, was probably too high with no significant added value for their need.
  • Persistence is done using MySQL, Memcached [5], Hadoop's HBase [6]. Memcached is used as a cache for MySQL as well as a general purpose cache.
  • Offline processing is done using Hadoop and Hive.
  • Data such as logging, clicks and feeds transit using Scribe [7] and are aggregating and stored in HDFS using Scribe-HDFS [8], thus allowing extended analysis using MapReduce
  • BigPipe [9] is their custom technology to accelerate page rendering using a pipelining logic
  • Varnish Cache [10] is used for HTTP proxying. They've prefered it for its high performance and efficiency [11].
  • The storage of the billions of photos posted by the users is handled by Haystack, an ad-hoc storage solution developed by Facebook which brings low level optimizations and append-only writes [12].
  • Facebook Messages is using its own architecture which is notably based on infrastructure sharding and dynamic cluster management. Business logic and persistence is encapsulated in so-called 'Cell'. Each Cell handles a part of users ; new Cells can be added as popularity grows [13]. Persistence is achieved using HBase [14].
  • Facebook Messages' search engine is built with an inverted index stored in HBase [15]
  • Facebook Search Engine's implementation details are unknown as far as I know
  • The typeahead search uses a custom storage and retrieval logic [16]
  • Chat is based on an Epoll server developed in Erlang and accessed using Thrift [17]
  • They've built an automated system that responds to monitoring alerts by launching the appropriated repairing workflow, or escalating to humans if the outage couldn't be overcome [18].

About the resources provisioned for each of these components, some information and numbers are known:

  • Facebook is estimated to own more than 60,000 servers [18]. Their recent datacenter in Prineville, Oregon is based on entirely self-designed hardware [19] that was recently unveiled as Open Compute Project [20].
  • 300 TB of data is stored in Memcached processes [21]
  • Their Hadoop and Hive cluster is made of 3000 servers with 8 cores, 32 GB RAM, 12 TB disks that is a total of 24k cores, 96 TB RAM and 36 PB disks [22]
  • 100 billion hits per day, 50 billion photos, 3 trillion objects cached, 130 TB of logs per day as of july 2010 [22]

[1] HipHop for PHP: http://developers.facebook.com/b...
[2] Making HPHPi Faster: http://www.facebook.com/note.php...
[3] The HipHop Virtual Machine: http://www.facebook.com/note.php...
[4] Thrift: http://thrift.apache.org/
[5] Memcached: http://memcached.org/
[6] HBase: http://hbase.apache.org/
[7] Scribe: https://github.com/facebook/scribe
[8] Scribe-HDFS: http://hadoopblog.blogspot.com/2...
[9] BigPipe: http://www.facebook.com/notes/fa...
[10] Varnish Cache: http://www.varnish-cache.org/
[11] Facebook goes for Varnish: http://www.varnish-software.com/...
[12] Needle in a haystack: efficient storage of billions of photos:http://www.facebook.com/note.php...
[13] Scaling the Messages Application Back End: http://www.facebook.com/note.php...
[14] The Underlying Technology of Messages: https://www.facebook.com/note.ph...
[15] The Underlying Technology of Messages Tech Talk:http://www.facebook.com/video/vi...
[16] Facebook's typeahead search architecture: http://www.facebook.com/video/vi...
[17] Facebook Chat: http://www.facebook.com/note.php...
[18] Who has the most Web Servers?: http://www.datacenterknowledge.c...
[19] Building Efficient Data Centers with the Open Compute Project:http://www.facebook.com/note.php...
[20] Open Compute Project: http://opencompute.org/
[21] Facebook's architecture presentation at Devoxx 2010:http://www.devoxx.com
[22] Scaling Facebook to 500 millions users and beyond:http://www.facebook.com/note.php...

转载于:https://www.cnblogs.com/runner42/p/4638871.html

Facebook的体系结构分析---外文转载相关推荐

  1. linux中断处理汇编入口,Linux中断处理体系结构分析(一)

    中断也是一种异常,之所以把它单独的列出来,是因为中断的处理与具体的开发板密切相关,除一些必须.共用的中断(比如系统时钟中断.片内外设UART中断)外,必须由驱动开发者提供处理函数.内核提炼出中断处理的 ...

  2. 提高质量管理体系的有效性(转载)

    提高质量管理体系的有效性(转载) 提高质量管理体系的有效性 http://www.quality-world.cn/guanli/2298.html 摘要:本文一是阐述的质量管理体系有效性的内涵:二是 ...

  3. 如何正视ISO9001/2000质量管理体系认证?(转载)

    如何正视ISO9001/2000质量管理体系认证?(转载) 如何正视ISO9001/2000质量管理体系认证? http://www.quality-world.cn/guanli/3048.html ...

  4. 质量管理体系重在执行(转载)

    质量管理体系重在执行(转载) 质量管理体系重在执行 http://www.quality-world.cn/guanli/2815.html 随着市场经济的不断变化,企业之间的竞争越来越激烈,对市场利 ...

  5. 计算机Intel CPU体系结构分析

    前段meldown漏洞事件的影响,那段时间也正好在读Paul的论文关于内存屏障的知识,其中有诸多细节想不通,便陷入无尽的煎熬和冥想中,看了**<计算机系统结构>.<深入理解计算机系统 ...

  6. 揭秘全球最大网站Facebook背后的那些软件(转载)

    为了向作者致敬,特别在标题标注了转载字样. 本文摘自:http://forum.jobbole.com/entry.php/73-%E6%8F%AD%E7%A7%98%E5%85%A8%E7%90%8 ...

  7. linux中断处理体系结构分析(一),Linux中断处理体系结构分析(二)

    1.中断处理的体系结构 我们知道编写设备驱动程序一定要用到中断处理函数,这在驱动程序的编写中,占据很重要的一部分.在响应一个特定的中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interru ...

  8. 体系结构分析与设计语言AADL基础

    这是在研究AADL标准过程中,写的笔记,拿出来与大家共享,也请大家多提意见,多多交流. 2001.11,SAE提出航空标准AS5506,即AADL.支持对性能关键系统属性用可扩展的标记符.工具框架和精 ...

  9. 金融结算系统的基础业务之账户体系结构分析

    金融系统的基础是结算,结算的核心是账户,账户体系是最基础的也是最重要的部分,而众多的业务也都是围绕账户展开的,要了解现在众多的金融系统(包括互联网金融)就绕不开账户体系. 一.先看一下结算系统的几个抽 ...

最新文章

  1. 强哥原创管理方法论之“掌纹管理学”
  2. Java长存!12个Java长久占居主要地位的原因
  3. [BTS06]BizTalk2006 SDK阅读笔记(五) 管道-Pipeline
  4. 可视化数据库管理工具DataGrip使用详解
  5. Linux应用:FTP
  6. mysql dba管理_Mysql DBA 高级运维学习之路-mysql数据库常用管理应用
  7. python requests https_解决python的requests模块访问私有SSL证书产生的报错问题
  8. java 课后习题 找零钱
  9. TabTopUnderLineLayout【自定义顶部选项卡(带下划线)】
  10. 【LeetCode】【HOT】21. 合并两个有序链表(递归)
  11. excel删除行 uipath_UiPath之常见问题集锦(二)
  12. linux查看spare盘的数量,戴尔Dell服务器使用OMSA软件omreport查看硬件信息|磁盘阵列健康监控...
  13. gorilla websocket无法跨域_聊聊浏览器同源策略与跨域方案详解
  14. 如何更好地理解孩子?
  15. coreldraw x5 选择工具快捷键_CorelDRAW设置和优化提高工作效率
  16. PHP多进程初探 --- 再次谈daemon进程
  17. Android 启动过程简析
  18. Kubernetes 云原生 容器类型有哪些
  19. Python学习笔记之疑问 1:def 是什么意思
  20. 全国哀悼日,网站黑白素配方法

热门文章

  1. Centos6.3搭建cactinagios
  2. 系统技巧之如何巧妙的整理磁盘碎片
  3. 【翻译】在backtrack5上用Evilgrade工具15步**windows
  4. vf省计算机考试题库,计算机二级VF上机题库及答案
  5. android中的Filter接口简介
  6. ssh整合步骤之一(搭建环境)
  7. Study Struts Commons Validator
  8. MS CRM 2011 Audit
  9. InfoQ就Spring Boot 2.0 GA版发布采访了项目牵头人Phil Webb
  10. phpexcel 导出到xls文件的时候出现乱码解决