2010年12月13日 星期一

interush-迅聯網-解剖Facebook

說到Facebook 的技術,很多人搖頭,認為Facebook 技術無亮點。

  技術有無亮點,關鍵在於評價標準。 Google, Yahoo, Microsoft 等等高科技企業,強調學術與產業零距離。 這些企業的員工發表過很多學術論文,不僅數量多,而且水平高,確實為人稱道。 更不要說IBM, Intel, Sun Microsystems 等等老牌高科技公司,所著更豐,汗牛充棟。

  能不能用學術論文來評價企業的技術含量,這個問題值得商榷。 雖然Facebook 不以學術論文著稱,但是它的技術仍然可圈可點。

  想了解計算機領域的學術前沿,一個捷徑是選修計算機專業的博士生課程,尤其是聽名校名教授的課。 美國名校的博士課程,大多以“高等(Advanced)” 為前綴,很容易識別。 例如,想了解系統架構設計的學術前沿,不妨聽聽“高等操作系統” 課程。

  美國名校的“高等” 課程,往往沒有課本。 教授在上第一節課的時候,給博士生們一個清單,清單上有20多篇論文,每篇論文涉及一兩個熱門的前沿的學術問題。 在上課前,博士生們預先閱讀指定的論文,上課時學生們相互討論。 教授往往與學生們圍坐在一起,傾聽,並發現對同一個問題的不同觀點,引導辯論,間或略加點撥。

  同一門課,不同大學不同教授選擇的論文,往往不一樣。 論文的選擇,在一定程度上反應了教授的學術視野的高下。 做名教授的學生的好處,在於領袖揮手我前進,少走彎路,早出成果,出大成果。

  如果能夠被名校錄取,親耳聆聽名教授的點撥,當然三生有幸。 即便沒有被名校錄取,照樣可以獲得名校的教育。 美國各大名校強調開門辦學,幾乎所有“高等” 博士生課程所選用的論文,都公佈在大學網站上。 不管你在世界的哪一個角落,都可以與名校的博士生們閱讀相同的論文。

  在系統架構設計領域,我個人比較喜歡讀Eric Brewer 教授推薦的論文。 Brewer 是UC Berkeley 的計算機系教授。 2010 年,UC Berkeley 與CMU,MIT 和Stanford,四所大學並列美國計算機專業第一,見圖二。

  UC Berkeley 的終身教授,是很多人夢想終身的榮譽。 Eric Brewer 年僅32 歲就拿到了UC Berkeley 的終身教授,即便不是史無前例,也算得上鳳毛麟角。 不久以後,他又被選為美國工程院院士。

  Brewer 不僅學術精湛,同時還創辦企業,1996 年他與自己的學生創辦Inktomi 公司,一度輝煌。 不過,Inktomi 過份注重技術,而拙於經營,最後頻臨破產,被Yahoo! 收購。 雖然Inktomi 經營失敗,但是Brewer 教授在實踐“學術與產業零距離” 方面,身體力行,堪稱楷模。

  Brewer 教授推薦的論文,不僅學術先進,而且貼近產業現實,對於實際工作有直接的指導意義。

  幾週前,有幸與國內某大型電子商務網站的技術負責人交流。 他提及他們正在用雲計算技術,改造整個後台系統。 我問,你們用什麼辦法網站,去記錄海量的實時買賣交易? 他答,用開源項目Hadoop 中的HBase 分佈式數據庫。 我又問,電子商務作為在線服務,對於數據讀寫的速度要求很高,通常在幾百毫秒以內。 HBase 能不能滿足這種實時限制? 答,系統正在開發中,速度目前不詳,有待測試。 我建議他去讀一篇論文,重新考慮HBase 是不是合適的方案。

  2009 年秋,Brewer 教授開設“高等計算機系統” 課程,課程必讀論文中,有一篇的題目是,“Dynamo: Amazon's Highly Available Key-Value Store” 。 不僅Brewer 選擇了這篇論文,CMU 和Stanford 的“高等操作系統” 課程,也不約而同地選用了這篇論文。

  我推薦的論文,就是這一篇。 從事網站系統架構設計的同行,或許都應該讀一讀這篇論文。 不僅可以啟迪思路,而且有助於少走彎路。

  Dynamo 這篇論文的作者之一,是Amazon 的CTO,Werner Vogels。 本文談的是Facebook 的技術,為什麼走題去談Amazon 的技術呢?

  Facebook 開發了一個分佈式數據庫軟件,叫Cassandra,並開源。 Cassandra 的設計原理,源於Amazon 的Dynamo 和Google 的Bigtable 。 雖說Cassandra 沒有太多技術原創,但是Facebook 正在開發前沿技術,這一點毋庸置疑。

  發表論文,分享思想,固然值得尊崇。 開源軟件,分享成果,更加直接造福人類。 Facebook 不僅開源了Cassandra,而且還開源了Thrift 等等其它技術先進的軟件。 Facebook 的技術,很有亮點。

沒有留言:

張貼留言