Facebook的系统架构

  根据我现有的阅读和谈话,我所理解的今天">Facebook的架构如下:

  Web 前端是由 PHP 写的。Facebook 的 HipHop 会把PHP转成 C++ 并用 g++编译,这样就可以为模板和Web逻贺业务层提供高的性能。

  业务逻辑以Service的形式存在,其使用Thrift 。这些Service根据需求的不同由PHP,C++或Java实现(也可以用到了其它的一些语言……)

  用Java写的Services没有用到任何一个企业级的应用服务器,但用到了Facebook自己的定制的应用服务器。看上去好像是重新发明轮子,但是这些Services只被暴露给Thrift使用(绝大所数是这样),Tomcat太重量级了,即使是Jetty也可能太过了点,其附加值对 Facebook所需要的没有意义。

  持久化由MySQL, Memcached , Facebook 的 Cassandra , Hadoop 的 HBase [5] 完成。Memcached 使用了MySQL的内存Cache。Facebook 工程师承认他们的Cassandra 使用正在减少,因为他们更喜欢HBase,因为它的更简单的一致性模型,以到其MapReduce能力。

  离线处理使用Hadoop 和 Hive。

  日志,点击,feeds数据使用Scribe ,把其聚合并存在 HDFS,其使用Scribe-HDFS ,因而允许使用MapReduce进行扩展分析。

  BigPipe [8] 是他们的定制技术,用来加速页面显示。

  Varnish Cache [9]用作HTTP代理。他们用这个的原因是高速和有效率。

  用来搞定用户上传的十亿张照片的存储,其由Haystack处理,Facebook自己开发了一个Ad-Hoc存储方案,其主要做了一些低层优化和“仅追加”写技术 [11].

  Facebook Messages 使用了自己的架构,其明显地构建在了一个动态集群的基础架构上。业务逻辑和持久化被封装在一个所谓的’Cell’。每个‘Cell’都处理一部分用户,新的‘Cell’可以因为访问热度被添加。 持久化归档使用HBase 。

  Facebook Messages 的搜索引擎由存储在HBase中的一个倒置索引的构建。

  Facebook 搜索引擎实现细节据我所知目前是未知状态。

  Typeahead 搜索使用了一个定制的存储和检索逻辑。

  Chat 基于一个Epoll 服务器,这个服务器由Erlang 开发,由Thrift存取

  关于那些供给给上述组件的资源,下面是一些信息和数量,但是有一些是未知的:

  Facebook估计有超过60,000 台服务器[16]。他们最新的数据中心在俄勒冈州的Prineville,其基于完全自定设计的硬件那是最近才公开的 Open Compute 项目。

  300 TB 的数据存在 Memcached 中处理

  他们的Hadoop 和 Hive 集群由3000 服务器组成,每台服务器有8个核,32GB的内存,12TB的硬盘,全部有2万4千个CPU的核,96TB内存和36PB的硬盘。

  每天有1000亿的点击量,500亿张照片, 3 万亿个对象被 Cache,每天130TB的日志(2010年7月的数据)

时间: 2024-11-08 23:11:28

Facebook的系统架构的相关文章

facebook的信息架构评析

原文:http://uicom.net/blog/?p=762 facebook的信息架构设计,是目前为止互联网上我见过的最合理的信息架构. 每次培训,我基本都需要拿20分钟左右的时间来解析它,包括老的.新的.被抄袭的. 一直打算把这个解析过程写下来,但讲的时候可以图音并茂,写的时候确实表达起来很难. 今日权且一试,希望能把培训师讲到的内容表达出30%.(只写现在界面上表现出来的东西,不分析栏目划分已经扩展性问题了) 先看facebook老版界面的信息架构:(在1024分辨率里,图片宽度不能完全

深入解析大数据虚拟化的架构(下)- 系统架构

继<零起点部署大数据虚拟化>系列教程之后,本着"知其然,亦知其所以然"的原则,本系列走进大数据虚拟化的内部,分上下两篇博文,帮助读者了解vSphere Big Data Extensions(以下简称BDE)的部署架构和系统架构,理解部署原理和内部构成,以及各自的作用.希望对您有所帮助,也欢迎您留言评价. 上: Serengeti虚拟化应用 下: Serengeti管理服务器的系统架构(即本文) Serengeti管理服务器的系统架构 Serengeti管理服务器包括几个重

想染指系统架构?你绝对不可错过的一篇

本文讲的是想染指系统架构?你绝对不可错过的一篇., 系统设计入门 翻译 有兴趣参与翻译? 以下是正在进行中的翻译: 巴西葡萄牙语 简体中文(已完成) 土耳其语 目的 学习如何设计大型系统. 为系统设计的面试做准备. 学习如何设计大型系统 学习如何设计可扩展的系统将会有助于你成为一个更好的工程师. 系统设计是一个很宽泛的话题.在互联网上,关于系统设计原则的资源也是多如牛毛. 这个仓库就是这些资源的组织收集,它可以帮助你学习如何构建可扩展的系统. 从开源社区学习 这是一个不断更新的开源项目的初期的版

Facebook的海量数据架构演变过程

本文讲的是Facebook的海量数据架构演变过程,作为世界上最大的社交网络,Facebook公司一天积聚的数据比很多大公司一年产生的数据还要多. 据2010年3月的博客显示,Facebook公司的Hadoop集群成为世界上最大的计算机集群.这个集群由2000台计算机,800台16核系统和1200台8核系统组成.集群中每个系统存储了大概12万亿到24万亿字节的数据. ▲全球系统架构师大会现场报道 一年前,Facebook的集群存储了30千万亿字节的数据,大概是美国国会图书馆存储信息数量的3000倍

浅谈Hadoop系统架构与海量数据分析

微软近日宣布开发一个兼容Windows Server与Windows Azure平台的Hadoop开源版本.IBM宣布在Hadoop上建立新的存储架构,作为群集运行DB2或Oracle数据库,目的是让应用程序,支持高性能分析,数据仓库应用程序和云计算的目的.EMC也推出了世界上第一个定制的.高性能的Hadoop专用数据协同处理设备--Greenplum HD数据计算设备,为客户提供了最强大.最高效率的方法,充分挖掘大数据的价值.互联网搜索巨头百度也在考虑使用Hadoop.不过,出于性能与安全的考

浅谈Facebook的服务器架构(组图)

导读:毫无疑问,作为全球最领先的社交网络,Facebook的高性能集群系统承担了海量数据的处理,它的服务器架构一直为业界众人所关注.CSDN博主yanghehong在他自己最新的一篇博客< Facebook的服务器架构>中分享了他的看法. 大体层次划分 Facebook的架构可以从不同角度来换分层次. 一种是:一边是PHP整的经典的LAMP stack:另外一个是非PHP整的各种service. Facebook的页面从刚创立的时候扎克伯格写的,到现在,都用PHP开发.后端有用各种语言开发的s

性能测试知多少---系统架构分析

有些事儿一旦放一放就难再拾起来,突然发现<性能测试知多少>这个系列两月没更新,关键时我都不知道啥时候放下的,总容易被各种技术所吸引走,如饥似渴的想学更多的东西,这几天一直有朋友问我为啥不写了,我才意识,事情要一样一样做,我现在要把这个系列完成.   之前有对性能需求进行过分析,那篇主要从项目业务.背景等角度如何抽丝剥茧的将项目的需求抽离出来.在我们进行需求的时候也需要对被测项目的架构有一定的认识,如果不了解被测系统的架构,那么在后期的性能分析与调优阶段将无从下手.   简单系统架构介绍    

大流量、高并发的网站的底层系统架构

动态应用,是相对于网站静态内容而言, 是指以c/c++.php.Java.perl..net等 服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通 常与数据库系统.缓存系统.分布式存储系统等密不可分. 大型动态应用系统平台主要是针对于大流 量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳运行. 大型动态应用系统又可分为几个子系统: l         Web前 端系统 l   

2010系统架构师大会!演讲PPT的下载地址 ,希望对大家有用

2010系统架构师大会!演讲PPT的下载地址 1.架构师大会-架构设计专场http://linux.chinaunix.net/SACC2010/topic1.zip2.架构师大会-架构设计与存储管理专场http://linux.chinaunix.net/SACC2010/topic2.zip3.架构师大会-应用系统优化与流量管理http://linux.chinaunix.net/SACC2010/topic3.zip4.架构师大会-可扩展数据库架构http://linux.chinauni