解決方案
在 2012 年《紐約時報》Bits 專欄的一篇文章中,Quentin Hardy 將 Facebook 的部分成功歸功於效能工程。Friendster 創立於 2002 年,在高負載下經常發生服務中斷與頁面載入緩慢,並且順應當時的做法,把大量資訊放進單一資料庫。
用文章的話來說,Facebook 是偶然避開了這個問題。它從哈佛起步,接著推展到其他常春藤盟校、其他大學,然後才對公眾開放。Mark Zuckerberg 為每所大學建立獨立的資料庫,並撰寫軟體,讓不同學校的人若想交流便能彼此連結。這個模型延續至今,成為許多各自獨立的資料庫,現稱為分片(shards),新使用者會依整體系統所能負荷的程度被指派到其中。
文章也把一項簡化歸功於一位匿名受訪高階主管的說法:Facebook 只查看兩個人之間的共同朋友,這比 Friendster 試圖計算人際間隔層數要容易得多。Accel 在 2005 年投資後,延攬 Veritas Software 創辦人 Jeff Rothschild 擔任顧問,Zuckerberg 則說服他負責監督伺服器。
達成了什麼
讓每所大學擁有自己的資料庫,並撰寫軟體把人跨校連結起來,使每次故障與每份負載都局限於本地。
為何奏效
所有使用者共用單一資料庫,會隨著流量成長而一起變慢、一起故障。
一次只推展一所學校,讓團隊能邊做邊學,並營造期待感。
每所大學各自擁有資料庫,使故障局限於本地,系統也更穩定。
計算共同朋友而非人際間隔層數,讓查詢成本維持低廉。
可借鏡之處
分階段推出可以迫使架構具備擴充性:在負載逼得你不得不做之前,先依自然單位進行分割。
後續發展
文章指出,Facebook 今日的 9 億名使用者分處於各自獨立的分片之中。Friendster 在 2003 年拒絕了 Google 以首次公開發行前股票提出的 3,000 萬美元收購要約,2008 年會員數達到約 1.15 億的高峰,之後便衰落,並於 2009 年底被出售。
追溯依據
參考來源
- Engineering Tricks That Helped Facebook Win The New York Times (Bits) · archive.nytimes.com ·