Facebook 大約在 2004 年成立,隨著逐漸成為美國五大科技巨頭之一,他們的基礎架構也由大學寢室里的一臺服務器發展成為遍布全球的七個定制數據中心。隨著 Facebook 預計用戶數將增長至 19.4 億,他們很有可能還在規劃新的數據中心。
最近公布了一則消息:Snap 分別與 Google Cloud Platform 和 AWS(Amazon Web Services)簽署價值 20 億和 10 億美元訂單,這使得我們不禁好奇,以 Facebook 如此龐大的規模,能否在 AWS 之上運行。
為了回答這個問題,我們從四個方面來考慮:
服務器容量
服務器硬件性能
軟件
成本
請注意,我們考慮的不是 Facebook 是否應該遷移至 AWS,只是在探討這樣做的可行性。
服務器容量
由于 Facebook 已經很久沒有公布過準確的服務器數量,很多人根據流傳的假設進一步進行了猜測。不過這里肯定水分不少。
Facebook 到底有多少臺服務器?
早在 2012 年,Data Center Knowledge 估計 Facebook 共有 180,000 臺服務器。這個數值基于 2010 年發布的一組數據,通過這組數據精確計算得知,Facebook 在 2010 年共有 60,000 臺服務器。假設 2012 年的估值是準確的,那么 Facebook 的服務器數量增速已經遠遠超過了摩爾定律。
我們想知道 Facebook 在五年(2012-2017)后的今天有多少臺服務器。為了獲得盡可能精確的估值,我們進行了三種計算。
計算一:每服務器用戶數
首先通過“每服務器用戶數”來計算 Facebook 的服務器數量。
2012 年,Facebook 用戶數 10 億,共有 18 萬臺服務器。1,000,000 用戶 / 180,000 服務器 = 5,556 用戶每服務器
2017 年,Facebook 用戶數接近 20 億。2,000,000 用戶 / 5,556 用戶每服務器 = 360,000 臺服務器
此外還需要考慮,Facebook 不僅用戶數翻倍,每個人生成的數據量也增加了:照片、視頻、直播等。另外現在 Facebook 還運營著 Instagram,那么服務器數量再翻一倍吧。
360,000 * 2 = 720,000 服務器
按照這個計算方式,Facebook 在 2017 年擁有的服務器數量約為 72 萬臺。
計算二:每服務器營收
接下來通過“每服務器營收”來計算他們的服務器容量。
2012 年,Facebook 營收為 50.89 億美元。將 2012 年的營收除以 2012 年的服務器總量,那么每服務器營收為 2.8 萬美元。5,089,000,000 美元營收 / 180,000 服務器 = 28,272 美元營收每服務器
2016 年,Facebook 營收為 276.38 億美元,將其除以 28,272 美元,那么就是 977,575 臺服務器。27,638,000,000 美元營收 / 28,272 美元營收每服務器 = 977,574.98 臺服務器
按照這個計算方式,Facebook 在 2017 年擁有的服務器數量約為 97.8 萬臺。
計算三:每服務器對應的員工數
這個方式將使用員工數來計算服務器容量。、
2012 年,Facebook 有 4,619 名員工,平均每位員工對應約 40 臺服務器。180,000 服務器 / 4619 員工 = 38.96 臺服務器每員工
2016 年,Facebook 有 17,048 名員工。按照每位員工 40 臺服務器來計算,約有 681,920 臺服務器。17,048 員工 * 40 服務器每員工 = 681,920 臺服務器
按照這個計算方式,Facebook 在 2017 年擁有的服務器數量約為 68.2 萬臺。
不同數量之間的差異
三種計算方式的區間為 296,000.
978,000 - 682,000 = 296,000
取中間值并將其作為我們最終的數量。
296,000 / 2 = 148,000
682,000 + 148,000 = 830,000 或 978,000 - 148,000 = 830,000
所以我們估計 Facebook 在 2017 年共有 830,000 臺服務器。
AWS 可以按照下列方式分解:
地區 ? 一個完整包含的地理區域(如“歐洲”或“美國西部”)。
可用區域(AZ) - 地區內由一個或多個數據中心組成的不同區域(如“倫敦”或“俄勒岡”)。
數據中心 ? 基本上就是一種大面積,造價高昂的倉庫,每個數據中心承載 5 萬至 8 萬臺服務器。
截止 2017 年,AWS 共有:
16 個地區(還有 3 個在建)。
42 個 AZ(新地區上線后還將增加 8 個)。
相關信息可參閱 AWS 全球基礎架構介紹。
假設平均每個數據中心有 6.5 萬臺服務器,平均每個 AZ 有 1.5 個數據中心,那么服務器的總數為 409.5 萬臺。四舍五入一下,假設 AWS 共有 410 萬臺服務器。
(42 AZ×1.5 個數據中心) * 65,000 臺服務器 = 4,095,000
2014 年,Enterprise Tech 進行過類似的計算(不過是基于 28 個 AZ,但道理是相通的),最終估計的服務器數量介于 280 萬到 560 萬臺之間。他們的估算中,每個 AZ 包含三個數據中心,如果這個假設是準確的,那么 AWS 在全球范圍內可能會有超過 800 萬臺服務器。
服務器凈容量
在服務器凈容量方面,根據上文(可能不準確的)計算,AWS 規模是 Facebook 的 5 倍。
Facebook 需要 83 萬臺服務器
AWS 有 410 萬臺服務器
4,100,000 / 830,000 = 4.939