好文 - Facebook 的黑客之道 - 2013

Facebook 的黑客之道 的 簡短摘要:

  • PHP 的快速開發能力對 Facebook 以及它所信奉的”黑客之道“來說,顯得尤其關鍵,Facebook 的工程師們勇於尋求改變,並且力求迅速改變,PHP 讓他們能做到這一點。而黑客之道則是驅動著 Zuckerberg 以及全公司前進的不斷迭代的哲學。
  • 從本質上來講,他們不停地更換著網站的地基 -- 而網站本身保持原狀,這就是傳說中的黑客之道。

Facebook 使用 PHP 當底層, 為了 節省資源 + 加快速度, 從最底層(PHP)著手, 發展了下述幾套:

  1. HipHop - 將 PHP code 轉成 C++, 在原始的基礎上提升 500% 至 600%.
  2. HHVM (HipHop Virtual Machine) - HHVM 使用即時編譯,能將 Facebook 的 PHP 代碼在服務器上被執行時轉化為原生計算機語言.

Facebook 的黑客之道

先把目前 Facebook 的 HipHop PHP 相關新聞、Open Source 的套件列出來, 再來看看歷史演進, 會比較有感覺.

相關文章

HipHop PHP Open Source 與 Linux 相關套件

下述摘錄自此篇文章: Facebook的黑客之道——這三個人重建了Facebook的基礎 (完整文章請回原文連結觀看, 在此只有部份重點摘要)

PHP 的快速開發能力對 Facebook 以及它所信奉的”黑客之道“來說,顯得尤其關鍵,Facebook 的工程師們勇於尋求改變,並且力求迅速改變,PHP 讓他們能做到這一點。而黑客之道則是驅動著 Zuckerberg 以及全公司前進的不斷迭代的哲學。

PHP 是一種動態編程語言,它讓你不需要花時間去定義程式中的每一個變量參數。“如果你讓滿屋的開發者們製作一個應用,他們會選擇動態語言,”Facebook 工程師 Keith Adams 說:“這樣他們能完成得更快。

使用 PHP 語言,而非 C++ 這種靜態語言,的確可以更快速地創建網站,但卻需要更多的服務器來維持它的運行。現在 Facebook 的規模達到了10億用戶之多,光是這些服務器就得花不少錢。即便如此,Zuckerberg 和公司還是沒有動搖,他們沒有像Twitter做的那樣——投奔了一個新的語言,而是發明瞭以異常快的速度運行PHP的方法從本質上來講,他們不停地更換著網站的地基——而網站本身保持原狀,這就是傳說中的黑客之道。

Facebook 在 2010 年推出了一個叫做HipHop的工具,它能將 PHP 代碼在服務器上被執行前轉化成 C++ 代碼,在網站原來的基礎上提升了 500% 至 600% 的流量處理。“如果沒有 HipHop,我們會面臨很大的麻煩,我們可能無法及時地找到更多的服務器來運行網站,”Facebook 的工程師 Drew Paroski 說:“幸好 HipHop 這個孤註一擲最終成功了。”就在 HipHop 推出後不久,Paroski、Adams 和 Jason Evans 認為他們能找到比它更好的辦法。在一個下午,他們三人經過討論,相信有一種更牛逼的工具能將 PHP 的表現提升到一個更高的水平,那就是虛擬機。這種軟體能在一臺物理服務器上模擬出多個虛擬服務器,為 PHP 代碼和服務器提供更棒的協同效應。他們不再將 PHP 代碼轉變成 C++ 代碼,而是將它直接轉變為原生計算機代碼(服務器晶元讀取的語言),而且在 PHP 代碼被執行時直接轉化。通過追蹤網站實時執行代碼的方式,他們可以用更好的方式將 PHP 代碼轉變成原生計算機代碼,最終提升網站的處理速度。Adams 事後回憶說:“HipHop,在當時看起來似乎不堪一擊。”

禁閉的日子 (HHVM 的誕生)

自從他們被關進了戰鬥之穴,他們的態度發生了小小的改變,他們不再投機取巧,而是選擇腳踏實地地認真處理每一個問題。”我們的目的是為了找到正確的代碼,如果改變這個代碼起不到什麼作用,那我們會趕緊嘗試另一個,”Paroski 說。他們將工作進度記錄在房間里遠處牆上的一塊大白板上。板上布著密密麻麻的便利貼,每張上面都記錄著一種可能提升系統能力的方法,每個方法都限定了時間,如果到期還未實現的話,那張便利貼就會被移到一邊。在大白板的上方,有兩台監視器,實時追蹤新系統相對於 HipHop 的運行速度。一開始,幾乎沒什麼變化,後來他們採取輪流制,Adams 早上工作,其他人晚上工作,這樣輪流工作五周之後,新系統速度出現了微小的提升。

他們將新系統命名為HipHop Virtual Machine,或 HHVM,以向公司原來的 PHP 轉化器 HipHop 致敬。很快 HHVM 被安裝至 Facebook 的後台,並使用至今。HHVM 使用即時編譯,能將 Facebook 的 PHP 代碼在服務器上被執行時轉化為原生計算機語言。

蘋果代表精緻,Google代表規模,而微軟嘛,老咯,(Apple is about polish.Google is about scale.Microsoft is about,well,30 years old)”Sam Schillace開玩笑說:“而Facebook代表著創新。優雅並不是它的訴求,它為創新而生。它通過大膽的試驗和超人的速度來擊敗所有人。”

那些無法領悟黑客之道的人是永遠無法理解這一點的。


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 News 並標籤為 , , 。將永久鏈結加入書籤。

好文 - Facebook 的黑客之道 - 2013 有 4 則回應

  1. owen 說道:

    為什麼要「在 PHP 代碼被執行時直接轉化」,而不是先全部轉成組合語言就好?

  2. zanhsieh 說道:

    @owen & @tsung: “先轉成組合語言”就跟 Java 編譯語言沒兩樣了呀?先轉的話,第一個難以因小變動而進行調試(開發人員很多機會會想看寫的代碼在HHVM下馬上跑起來長什麼樣的)。第二個,多了一層,多了效能開銷。

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料