Facebook的圖片存儲

爲了減少對昂貴的存儲解決方案(諸如NetAppAkamai,我所在的單位用了一套NetApp,性能和穩定性都不錯,價格當然也不菲),Facebook在2009年4月的時候推出了一套新的,名爲Haystack的圖片存儲系統,來一個對每個月85億次的圖片上傳(每天500G)。

Jason Sobel,NetApp的前工程師主持了這次改造,基本的架構來自於2008年的 Stanford ACM presentation by Jason Sobel。新的架構讓Facebook使用普通的服務器就能夠支撐圖片存儲的需求,減少了對CDN的依賴。

image

Facebook有兩種主要的圖片存儲類型,也是所有社交網站共同的特點:頭像和相冊。用戶上傳相冊,以檔案的形式存放,很少會刪除,也不會立即讀取。頭像則是每個人都會擁有,並且有不同的尺寸。過去,Facebook極度依賴CDN來保護自己的服務器遭受大量的訪問。

頭像則使用了 Cachr ,一個使用 evhttp 和 memcached 後臺的圖片服務器,能夠緩存那些被大量訪問的圖片。

不需要POSIX

Facebook的圖片被世界各地的人們瀏覽,圖片命名也包含了很多有用的信息。

/[pvid]_[key]_[magic]_[size].jpg

傳統的文件系統被POSIX標準通知,每個文件都需要有元數據和進入方法。這種文件系統是爲了權限管理而設計的,但是Internet中的文件系統則不需要這麼多額外的信息。

  • File length
  • Device ID
  • Storage block pointers
  • File owner
  • Group owner
  • Access rights on each assignment: read, write execute
  • Change time
  • Modification time
  • Last access time
  • Reference counts

 

image

Haystack 存儲10GB的數據只需要10Mb的元數據,這些原數據可以駐留在內存中,這樣讀取文件的時候就只需要一次磁盤尋道。Cachr仍然是第一道防線,快速的處理對於圖片的請求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章