傳統的網頁通常是用戶主動在Browser上refresh頁面才會更新資料,一般節省資源的方式為把動態網頁(asp,php,jsp..)轉靜態頁面(html),並利用Trigger的方式更新資料庫資料及網頁資料,但隨著AJAX技術普及化,許多網站加入了即時更新內容的機制,如 Facebook 的 news feed 或status update ,由於每個人本身都是訊息發佈者及訂閱者,因此當用戶的關係越密切,讀寫的資料就越龐大,就Facebook 2009年公布的數據為:
資料產生:
超過3億位有效用戶
每天有3000萬個用戶至少會更新一次自己的狀態
每個月有超過10億張的照片上傳
每個月有超過1000萬的影片上傳
每周新增超過10億種的內容(網站連結,新聞,部落格文章,記事本,照片..等)
資料用量為:
每天產生4TB的已壓縮資料
每天有135T的已壓縮資料被掃描檢視
每天8萬小時的運算時間
由於資料量相當大,如果要購置可以支援的高階超級伺服器將會相當額貴,因此Facebook採用Hadoop架構,用大量的PC去取代高階伺服器,既省錢又因平行運算的架構及高容錯性,對於Peta級資料量其查詢效能相當好,其所規畫出來的儲存的空間為
4800台cores (虛擬server), 5.5 PB (Peta=1015)
每個node配置 12TB空間
硬體架構如下:
Facebook Datacenter 影片 :
由於Facebook 上需要分析用戶資料來做相關的推薦,因此他們還使用了HIVE來當資料庫倉儲系統,其架構如下:
Scribe 是蒐集Log 的 server , 將蒐集到的log 往 Hadoop Hive warehouse丟, 即可用近似SQL的語法來做分析,一些推薦的內容如 朋友、社團、專頁、廣告..等應該都是透過這樣的機制產生。
由Facebook公開的資料可以得知,經營一個全球化的SNS網站絕不能用一般的思維來設計,看似簡單的網站,若架設在單一Server上給少數使用者用,一樣可以運作,但到了要服務3億人時,網站看似沒變但整個架構就都不一樣了,要如何彈性有效率,可以參考一下Facebook 的架構。
資料來源:
Facebook Tech Talk: Rethinking Servers & Datacenters http://www.facebook.com/techtalks?v=wall#!/video/video.php?v=208561675468&ref=mf
Hadoop & its usage in facebook http://www.snia.org/events/storage-developer2009/presentations/keynotes/DhrubaBorthakur-Hadoop_File_System_Architecture_Facebook.pdf
Hadoop and Hive Development at facebook http://www.borthakur.com/ftp/hadoopworld.pdf
沒有留言:
張貼留言