www.MyException.Cn 發佈於:2012-08-28 12:37:01 php
Facebook是一個社交網路服務網站,同時Facebook是美國排名第一的照片分享站點,天天上載八百五十萬張照片。那麼Facebook系統架構是什麼樣的呢?本文將爲你揭祕!html
來源:http://www.quora.com/What-is-Facebooks-architecture (由Micha?l Figuière回答)前端
根據我現有的閱讀和談話,我所理解的今天Facebook的架構以下:git
◆ Web 前端是由 PHP 寫的。Facebook 的 HipHop [1] 會把PHP轉成 C++並用 g++編譯,這樣就能夠爲模板和Web邏賀業務層提供高的性能。github
◆ 業務邏輯以Service的形式存在,其使用Thrift [2]。這些Service根據需求的不一樣由PHP,C++或Java實現(也能夠用到了其它的一些語言……)web
◆ 用Java寫的Services沒有用到任何一個企業級的應用服務器,但用到了Facebook本身的定製的應用服務器。看上去好像是從新發明輪子,可是這些Services只被暴露給Thrift使用(絕大所數是這樣),Tomcat過重量級了,即便是Jetty也可能太過了點,其附加值對Facebook所須要的沒有意義。apache
◆ 持久化由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進行擴展分析。ide
◆ BigPipe [8] 是他們的定製技術,用來加速頁面顯示。
◆ Varnish Cache [9]用做HTTP代理。他們用這個的緣由是高速和有效率。 [10].
◆ 用來搞定用戶上傳的十億張照片的存儲,其由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億張照片,100 billion hits per day, 50 billion photos, 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