Facebook的伺服器架構

來源:互聯網
上載者:User

 

 

 

大體層次劃分

 

Facebook的架構可以從不同角度來換分層次。

 

一種是:

一邊是PHP整的經典的LAMP stack;另外一邊是非PHP整的各種service。



Facebook的頁面從剛創立的時候紮克伯格寫的,到現在,都用PHP開發。後端有用各種語言開發的service。它們之間用跨語言的thrift RPC通訊(Scribe也是建立在Thrift之上)。

 

另外一個角度劃分的層次是:

 


前面是負載局衡器(沒說是用硬體的還是軟體的);負責分配前端的Web伺服器,Web伺服器是用PHP來彙總資料;最後面是
Services,Memcached和資料庫。

有意思的是對後面三種的定性:

Services – 快速,複雜;
自己開發的業務進程,來實現複雜的商務邏輯,速度快。

Memchached – 快速,簡單;Memchached做簡單的key-value緩衝,服務應用快速的讀請求。

資料庫– 緩慢,持久。資料庫做持久儲存,磁碟IO自然慢,不過有memcached做緩衝沒關係。

 

 

 

 

NewsFeed的架構

 

寫:

Bob更新狀態,Web伺服器上的PHP程式除了將內容到MySQL資料庫之外,也將該行為動態ID通過Scribe發到一個Leaf
Server上(根據Bob的使用者ID選的Leaf Server)。

 

 

 

讀:

另一個人Alice開啟Facebook,載入首頁,PHP程式向Aggregator伺服器查詢(Thrift調用),Aggregator從若干個Leaf
Server裡頭讀出Alice的朋友的所有行為動態/action的前四十個,aggregator做彙總和一定的排序,返回給PHP程式。

 


PHP程式獲得這些行為動態ID之後,從Memcached中讀出這些ID對應的內容,如Memcached沒有則從MySQL資料庫中讀,匯聚後產生HTML返回給瀏覽器。

 

 

 

 

Chat的架構

 

頁面請求,仍WEB伺服器處理(PHP)處理,當然也依賴web tier之後的各種Service。比如查看訊息曆史啊,線上使用者列表啊,發送聊天訊息啊。

 

接收聊天訊息,則沒通過PHP伺服器,而是專用的用Erlang寫的Channel伺服器來處理,通過long-polling來接收聊天訊息。Channel伺服器是Chat服務的核心組件。發送的訊息通過web
tier發到Channel伺服器。

 

後方有用C++寫的chatlogger伺服器來做記錄的讀寫。

 

同樣也用C++寫了presence伺服器來從channel伺服器彙集線上狀態。

 

系統的簡化結構如所示:

 

 

 

 

 

Web tier, chatlogger, presence, channel
都是多個伺服器組成的叢集。

Channel伺服器有根據User ID做分區,每個分區由一個高可用的Channel叢集服務。

Webtier, chatlogger, presence,在公開的文章和PPT中並沒說這些叢集具體怎麼做分布和冗餘備份的。

 

 

 

 

互連網上的資料:

 

 

http://www.infoq.com/presentations/Scale-at-Facebook

Facebook前工程總監Aditya Agarwal在QCon London2010
上的演講。

 

http://www.infoq.com/presentations/Facebook-Software-Stack

Aditya Agarwal在 QCon SanFrancisco 2008上的演講,和QCon London 2010
上的沒什麼區別...

 

http://www.infoq.com/presentations/Evolution-of-Code-Design-at-Facebook

Facebook工程師Nick Schrock在QCon London2011上介紹它們是怎麼寫代碼的。

 

http://www.infoq.com/presentations/Infrastructure-at-Facebook

Facebook的基礎平台(Infrastructure)團隊經理Jason Sobel在QCon San Francisco 2010上的演講

 

http://www.youtube.com/watch?v=T-Xr_PJdNmQ&feature=player_embedded

Velocity 2010: Tom Cook, "A Day in theLife of Facebook Operations"

 

http://www.erlang-factory.com/upload/presentations/31/EugeneLetuchy-ErlangatFacebook.pdf

 

http://www.facebook.com/note.php?note_id=14218138919

 

 

-------------------------------------------------------------------------------------------------

更多博文請訂閱RSS,更多微博請關注@千裡孤行Nerd

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.