2012年10月24日 星期三

到底Facebook用了哪些技術?

Source: network


如果今天錢不是問題,會員不是問題,要你打造一個facebook,你認為作不作的到?之前曾經在很多地方比如說ptt soft_job版看到相關的問題,說台灣只是沒有環境,不然要打造一個facebook,只要有人出錢,對台灣工程師來說技術上都不是太大的問題.....真的是這樣嘛?

這個答案可能是對的,但也可能非常錯,因為這個假設沒有加上一些明確的變因:
  1. 時間:做出來是2004年的facebook?還是2009年的Facebook?還是2012年的Facebook?
  2. 人數:做出來給1M的使用者?還是100M的使用者?還是300M的使用者?

下面放了兩個Facebook Architecture 的投影片,Facebook 為了承載更多的使用者,為了增加更多的功能,提供更好的效能,它的Architecture也是一直在演進的,下面分別列出2009和2012年的介紹,就可以看出其中的差異。



另外也有許多篇文章提到Facebook architecture and design [1]

下面列出Facebook 所用到比較有名的技術:
  • Web Tier
  • Cache Tier
    • memcached   
      • 用來處理分散式快取記憶層,加速資料存取速度
    • Tao (Distributed Graph Database)
      • 專門設計用來儲存Social Link 關係的資料庫
  • Storage Tier
    • Cassandra      
      • 雖然是Facebook release 出來的,但是後來他們改去用Hbase
    • MySQL Cluster
    • Hbase
    • Maystack  (BLOB Storage) 
      • 用來存放照片、影音、Email附檔..等,Binary形式的資料。
    • Tired Storage 
      • 心一代的儲存機制,不過仍在開發中
  • Framework
    • Thrift               
      • 用來處理跨平台 Serialization 傳輸資料的格式和方法 - 某種RPC
上面列的還都只是軟體相關的,還不牽扯到Datacenter(網路、硬體...)相關的技術,因為facebook也有參與open compute project

這讓我有一個感想,覺得關於程式啊,技術啊,這些可能一半靠腦袋和天份,一半靠磨練和熱情,不過都是可以到達一定的程度,但是系統架構與解決問題的能力就真的很大部分都是靠經驗和機運了,因為遇不到就完全不會知道這種東西(也不需要知道?:P) 就算現在資訊那麼發達,我試著問我自己,如果是我,現在錢不是問題,會員的來源不是問題,又有上面的資料參考,你是否作的出一個facebook呢?

這時候是不是要把經濟動能推升方案的口號拿出來!

系統設計與開發是很複雜的,很難用三言兩語講清楚

系統開發,做就對了! (誤)




Reference:
[1] Facebook Cassandra Architecture and Design
[2] Facebook's New Real-time Messaging System: HBase to Store 135+ Billion Messages a Month
[3] Why Facebook Uses Apache Hadoop and HBase

張貼留言