非死book架構解讀
從我看過的各種資料,還有與各式人等的交談中,可以得出非死book現在的架構是這樣的:
- Web前端用PHP語言編寫,然后用HipHop Compiler[1]轉換為C++語言,再用g++編譯器編寫,從而提供高性能的模板與web邏輯執行層。
- 完全依賴靜態編譯所造成的限制,讓非死book開始啟用HipHop Interpreter [2]及HipHop虛擬機,將PHP代碼轉譯為HipHop ByteCode[3]。
- 其業務邏輯以服務形式存在,使用Thrift框架[4]。其中一些服務根據具體需求,在實現時使用了PHP、C++或者Java語言(可能還用到了一些其他語言)。
- 使用Java實現的服務并未使用任何常規的企業應用服務,而是使用非死book的定制應用服務器。一開始這些都被視為重復工作,不過隨著這些服務僅(或大多)使用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]。
- 非死book用戶所發布的照片數以億計,其存儲由Haystack這個ad-hoc存儲解決方案(由非死book開發)來處理——包括對其進行低級別優化與只擴展寫入方式[12]。
- 非死book Message使用了自身架構——眾所周知是基于分區與動態集群管理的架構。業務邏輯與持久化被封裝到所謂的“Cell”中。每個Cell處理一部分用戶的請求;隨著用戶數增加再擴展新的Cell[13]。使用HBase實現持久化[14]。
- 非死book Message的搜索引擎建立在反向索引之上,存儲于HBase之中[15]。
- 非死book搜索引擎的實現細節尚不得而知。
- 預輸入搜索(typeahead search)使用定制化存儲與檢索邏輯[16]。
- 聊天服務建立在Epoll服務器之上,由Erlang開發,用Thrift[17]訪問。
- 非死book還構建了一個自動化系統,負責啟動適當的修復工作流來管理應對警報,并在故障無法解決時通知人類管理員[18]。
- 非死book擁有超過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已經不再使用。非死book的實時分析系統是基于記錄所有輸入的鏈接(來自用戶頁面的like和comment請求)。將其記錄在HDFS中,而不是用Puma將其拽出再分批存儲到HBase中。
非死book近期發布了一篇博文,詳細描述了將會在Altoona數據中心試用的下一代網絡架構。這種處理大流量的方式非常新穎,優于傳統方式與協議。 非死book發布了下一代網絡
還有就是近期宣布強化搜索功能,以大數據分析與數據管理基礎作為支持。非死book大數據分析增強搜索功能
另外可參考的文章還有:- 非死book的數據倉儲與架構分析
- Apache Hadoop在非死book的應用 (更多信息可參考 Dhruba Borthakur的博客 )
- 用jemalloc實現Scalable Memory Allocation (以及 這篇問答 )
- Tornado(web框架)
- 非死book的搜索速度為什么那么快
- Malte Schwarzkopf:非死book堆棧
- 非死book的代碼設計進化史
[1] HipHop for PHP
[3] The HipHop Virtual Machine
[4] Thrift
[5] Memcached
[6] HBase
[7] Scribe
[8] Scribe-HDFS
[9] BigPipe
[10] Varnish Cache
[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] 非死book’s typeahead search architecture
[17] 非死book Chat
[18] Who has the most Web Servers?
[19] Building Efficient Data Centers with the Open Compute Project
[20] Open Compute Project
[21] 非死book’s architecture presentation at Devoxx 2010
[22] Scaling 非死book to 500 millions users and beyond
原文鏈接: What is 非死book’s architecture? (譯者/Vera 責編/錢曙光)