link

特別推薦facebook 中文網站: http://www.zwzpyg.com/?p=383

2011年5月15日星期日

淺談Facebook圖片存儲系統HayStack概要

淺談Facebook圖片存儲系統HayStack概要
美國《紐約時報》網絡版今天撰文稱,一向鼓吹實名重要性的Facebook卻通過匿名方式散佈競爭對手谷歌的負面新聞,從而引發了一場公關危機。

  以下為文章全文:

  言行不一

  Facebook似乎並不總是言行一致。

多年以來,Facebook CEO馬克·扎克伯格(Mark Zuckerberg)一直都在讚揚透明的美德,並且以這一標準來打造Facebook。這家社交網絡要求人們使用真實的身份註冊,因為扎克伯格說,他相信,如果不能以匿名方式隱藏自己的言行,人們的行為和社會都將變得更好。

“擁有兩個身份表明不夠誠懇。”扎克伯格說。

但現在,當Facebook試圖誘騙記者和技術專家撰文揭露其競爭對手谷歌的Social Circle搜索功能的隱私問題時,它卻隱藏了自己的身份。

在《每日野獸》(The Daily Beast)週三揭露出Facebook正是這一事件的幕後主使後,原本就因為隱私問題而久遭詬病的Fac​​ebook終於引火燒身。儘管仍有部分技術專家批評谷歌對隱私問題的響應不夠及時,但依舊沒有給Facebook帶來任何幫助。

“採用這種匿名方式顯然與Facebook長期以來倡導的價值相悖。”《Facebook效應》(The Facebook Effect)一書的作者大衛·柯克帕特里克(David K​​irkpatrick)說,“感覺很偽善。”

  Facebook辯解

儘管Facebook週四發布了簡短的道歉信,表示它從未有意從事或授權詆毀谷歌的行動,但批評的聲音依舊在矽谷和其他地方迴響。影響力頗高的美國科技博客TechCrunch要求Facebook給出更好的解釋,並將這種行為定性為“骯髒”和“卑鄙”。另外一家知名博客Inside Facebook則將此事稱作是“賠了夫人又折兵”。

美國科技博客Search Engine Land編輯丹尼·沙利文(Danny Sullivan)說:“無論Facebook作何解釋,這種誹謗行為都是一個污點。”

Facebook內部匿名人士表示,該公司之所以聘請著名的公關公司博雅公關(Burson-Marsteller)將Social Circle的問題散佈給記者,是因為不想牽扯到Facebook與穀歌的競爭。 Social Circle是谷歌搜索的一項可選功能,可以利用公開的社交網絡信息對搜索結果進行個性化。

在周四發表的聲明中,Facebook說:“我們想讓第三方來證實,人們並沒有批准谷歌Social Circle蒐集並使用他們在Facebook和其他服務中的信息。我們聘請博雅公關來關注這一問題,使用的都是現成的,而且可以被任何媒體獨立確認或分析的公開信息。這些問題很嚴重,我們應當以嚴肅而透明的方式將其呈現出來。”

矽谷和其他地方的企業都會經常性地與記者和分析師接觸,通報其競爭對手的所謂“不端行為”。但是新聞業和公關專家批評Facebook採用匿名方式開展這一行為,而且堅持要求博雅公關不要披露其身份。

“這完全不可接受。記者應當披露他們的身份,而那些與記者交易的人也必須要聲明自己的身份及其所屬機構。”美國加州大學伯克利分校新聞系教授、倫理學專家湯姆·戈爾茨坦(Tom Goldstein)說。

美國公關學會CEO羅莎娜·菲斯克(Rosanna M. Fiske)表示,Facebook堅持匿名的行為不當,博雅公關同意Facebook匿名的行為同樣不當。 “按照公關人員的基本操守,必須要拒絕這種行為。”她說。

負責報導此事的《每日野獸》記者丹·萊昂斯(Dan Lyons)對於假身份有著親身體會。他曾經多年偽裝成假史蒂夫·喬布斯(Steve Jobs),並時常利用博客抨擊記者、企業和公關人員。

  競爭使然

Facebook的秘密計劃也凸顯出谷歌長期以來給該公司帶來的陰影。雖然Facebook在社交網絡領域完胜競爭對手,但該公司的高管一直都在擔心,谷歌會利用互聯網搜索市場的主導地位逐漸入侵Facebook的領地。值得一提的是,Facebook的許多高管都是從谷歌挖來的。

Social Circle似乎正是Facebook所擔心的功能。當谷歌用戶搜索“芝加哥的餐館”這樣的關鍵詞時,就可以看到好友在Facebook、 LinkedIn或Yelp上發布的相關信息。但要使用這項功能,必須要將谷歌賬戶與這些服務的賬戶相關聯,而且只能使用這些服務的公開信息。

作為博雅公關聯繫過的隱私專家之一、印第安納大學應用網絡安全中心研究員克里斯多夫·蘇格安(Christopher Soghoian)說:“我不認為這個功能有多大問題。如果Facebook不想讓數據公開,他們就可以停止分享,或者可以利用技術手段阻止谷歌訪問。”

當博雅公關拒絕透露他們為誰工作時,蘇格安卻公佈了他與博雅公關的代表之間的郵件。郵件顯示,博雅公關曾經試圖代替蘇格安撰寫意見文章,並以蘇格安的名義提交給各大報紙。

博雅公關發言人保羅·克達斯科(Paul Cordasco)表示,該公司犯了一個錯誤。 “錯誤顯然是沒有對客戶身份保持透明。”他週五接受媒體採訪時說。他還補充道,將對員工進行更多培訓,讓他們“充分意識到我們的責任,重視信息的透明性”。

Facebook絕非第一家匿名散佈競爭對手負面消息的個人或機構。這種行為在華盛頓的政治圈很常見,在矽谷也有著悠久的歷史。

例如,當微軟1998年遭到反壟斷監管者的審查時,一件事情的披露令該公司頗為尷尬。微軟曾經謀劃過一次行動,向全美各地的報紙編輯和評論版發布一些有利於該公司的信件,以此作為普通用戶的證詞提交給監管者。

兩年後,一家為甲骨文工作的公司被曝賄賂門衛,讓其檢查微軟支持的行業團體的垃圾箱,希望藉此找到對微軟不利的證據。
  圖片存儲的幾個關鍵點:

  1. Metadata信息存儲。由於圖片數量巨大,單機存放不了所有的Metadata信息,假設每個圖片文件的Metadata佔用100字節,260 billion圖片Metadata佔用的空間為260G * 100 = 26000GB。

  2. 減少圖片讀取的IO次數。在普通的Linux文件系統中,讀取一個文件包括三次磁盤IO:讀取目錄元數據到內存,把文件的inode節點裝載到內存,最後讀取實際的文件內容。由於文件數太多,無法將所有目錄及文件的inode信息緩存到內存,因此磁盤IO次數很難達到每個圖片讀取只需要一次磁盤IO的理想狀態​​。

  3. 圖片緩存。圖片寫入以後就不再修改,因此,需要對圖片進行緩存並且將緩存放到離用戶最近的位置,一般會使用CDN技術。

  HayStack的主要目標:

1. High throughput and low latency(高吞吐量、低延時):簡化元數據結構與存儲模式,直接存儲文件在物理卷上的位置,減小lookup時間。

2. Fault-tolerant(容錯性):在不同的機器上維護多個副本

3. Cost-effective(高效):提高存儲空間利用率、提高請求處理效率。

4. Simple(簡單):易於實現和維護,部署週期短。

  HayStack的總體架構:

Haystack的寫請求(圖片上傳)處理流程為:Web Server首先請求Haystack Directory獲取圖片的id和可寫的邏輯捲軸,接著將數據寫入對應的每一個物理捲軸(備份數一般為3)。

Haystack圖片讀取請求大致流程為:用戶訪問一個頁面時,Web Server請求Haystack Directory構造一個URL:後續根據各個部分的信息依次訪問CDN,Cache和後端的Haystack Store存儲節點。 Haystack Directory構造URL時可以省略部分從而使得用戶直接請求Haystack Cache而不必經過CDN。 Haystack cache收到的請求包含兩個部分:用戶Browser的請求及CDN的請求,Haystack cache只緩存用戶Browser發送的請求且要求請求的Haystack Store存儲節點是可寫的。一般來說,Haystack Store的存儲節點寫一段時間以後達到容量上限變為只讀,因此,可寫節點的圖片為最近增加的圖片,是熱點數據。

Haystack 刪除操作比較簡單,只是在Haystack 存儲的指針上設置一個已刪除標誌,已經刪除的指針和索引的空間並不回收。可通過定期的對物理捲進行合併,以回收已刪除的空間。

  Haystack Directory的主要功能如下:

1, 提供邏輯捲軸到物理捲軸的映射,為寫請求分配圖片id;

2, 提供負載均衡,為寫操作選擇邏輯捲軸,讀操作選擇物理捲軸;

3, 屏蔽CDN服務,可以選擇某些圖片請求直接走HayStack Cache;

  4, 標記某些邏輯捲軸為read-only;

HayStack中的圖片順序的存放在物理卷中,獲取圖片在物理卷中的偏移即可讀取圖片,圖片的存儲結構如下所示(每張圖片稱為一個needle)。

其中,key為圖片的唯一標示,alternate key為尺寸的標示,flag為刪除標誌,size為數據大小,data為實際的數據。

淺談Facebook圖片存儲系統HayStack概要

HayStack為每張圖片在內存中維護圖片與其位置的映射表,在圖片被寫入時更新映射關係,每次系統啟動時可通過讀取物理卷並構造映射表,但這樣做很耗時間,但HayStack通過為每張圖片構造index file來簡化了系統啟動時映射表的構建,index file的結構如下所示:(其主要包含key與對應圖片位置的映射關係,系統啟動時,通過讀取index file便能很快的構造映射表。)

淺談Facebook圖片存儲系統HayStack概要

  HayStack的幾點優勢:

1. 採用輕量級的HayStack Directory維護邏輯捲到多個物理卷的映射關係,方便的實現了副本技術,以實現系統容錯。

2. 簡化文件的元數據結構,以追加寫的方式往物理卷中存儲圖片,效率高。同時將圖片key與位置的映射關係全部保留在內存中,通過一次lookup即可獲取圖片的位置。

3. 物理卷中所有的圖片都對應有index文件(固定大小,結構簡單),從而每次系統重啟時,物理卷的映射信息能快速的通過index文件構建。

4. 引入delete flag、compaction、batch upload以及進一步提高存儲的效率。

淺談Facebook圖片存儲系統HayStack概要

淺談Facebook圖片存儲系統HayStack概要
HayStack是Fackbook用於存儲照片的系統,其存儲照片的數量在千億數量級,本文簡要分析HayStack的設計與實現原理。

  圖片存儲的幾個關鍵點:

  1. Metadata信息存儲。由於圖片數量巨大,單機存放不了所有的Metadata信息,假設每個圖片文件的Metadata佔用100字節,260 billion圖片Metadata佔用的空間為260G * 100 = 26000GB。

  2. 減少圖片讀取的IO次數。在普通的Linux文件系統中,讀取一個文件包括三次磁盤IO:讀取目錄元數據到內存,把文件的inode節點裝載到內存,最後讀取實際的文件內容。由於文件數太多,無法將所有目錄及文件的inode信息緩存到內存,因此磁盤IO次數很難達到每個圖片讀取只需要一次磁盤IO的理想狀態​​。

  3. 圖片緩存。圖片寫入以後就不再修改,因此,需要對圖片進行緩存並且將緩存放到離用戶最近的位置,一般會使用CDN技術。

  HayStack的主要目標:

1. High throughput and low latency(高吞吐量、低延時):簡化元數據結構與存儲模式,直接存儲文件在物理卷上的位置,減小lookup時間。

2. Fault-tolerant(容錯性):在不同的機器上維護多個副本

3. Cost-effective(高效):提高存儲空間利用率、提高請求處理效率。

4. Simple(簡單):易於實現和維護,部署週期短。

  HayStack的總體架構:

Haystack的寫請求(圖片上傳)處理流程為:Web Server首先請求Haystack Directory獲取圖片的id和可寫的邏輯捲軸,接著將數據寫入對應的每一個物理捲軸(備份數一般為3)。

Haystack圖片讀取請求大致流程為:用戶訪問一個頁面時,Web Server請求Haystack Directory構造一個URL:後續根據各個部分的信息依次訪問CDN,Cache和後端的Haystack Store存儲節點。 Haystack Directory構造URL時可以省略部分從而使得用戶直接請求Haystack Cache而不必經過CDN。 Haystack cache收到的請求包含兩個部分:用戶Browser的請求及CDN的請求,Haystack cache只緩存用戶Browser發送的請求且要求請求的Haystack Store存儲節點是可寫的。一般來說,Haystack Store的存儲節點寫一段時間以後達到容量上限變為只讀,因此,可寫節點的圖片為最近增加的圖片,是熱點數據。

Haystack 刪除操作比較簡單,只是在Haystack 存儲的指針上設置一個已刪除標誌,已經刪除的指針和索引的空間並不回收。可通過定期的對物理捲進行合併,以回收已刪除的空間。

  Haystack Directory的主要功能如下:

1, 提供邏輯捲軸到物理捲軸的映射,為寫請求分配圖片id;

2, 提供負載均衡,為寫操作選擇邏輯捲軸,讀操作選擇物理捲軸;

3, 屏蔽CDN服務,可以選擇某些圖片請求直接走HayStack Cache;

  4, 標記某些邏輯捲軸為read-only;

HayStack中的圖片順序的存放在物理卷中,獲取圖片在物理卷中的偏移即可讀取圖片,圖片的存儲結構如下所示(每張圖片稱為一個needle)。

其中,key為圖片的唯一標示,alternate key為尺寸的標示,flag為刪除標誌,size為數據大小,data為實際的數據。

淺談Facebook圖片存儲系統HayStack概要

HayStack為每張圖片在內存中維護圖片與其位置的映射表,在圖片被寫入時更新映射關係,每次系統啟動時可通過讀取物理卷並構造映射表,但這樣做很耗時間,但HayStack通過為每張圖片構造index file來簡化了系統啟動時映射表的構建,index file的結構如下所示:(其主要包含key與對應圖片位置的映射關係,系統啟動時,通過讀取index file便能很快的構造映射表。)

淺談Facebook圖片存儲系統HayStack概要

  HayStack的幾點優勢:

1. 採用輕量級的HayStack Directory維護邏輯捲到多個物理卷的映射關係,方便的實現了副本技術,以實現系統容錯。

2. 簡化文件的元數據結構,以追加寫的方式往物理卷中存儲圖片,效率高。同時將圖片key與位置的映射關係全部保留在內存中,通過一次lookup即可獲取圖片的位置。

3. 物理卷中所有的圖片都對應有index文件(固定大小,結構簡單),從而每次系統重啟時,物理卷的映射信息能快速的通過index文件構建。

4. 引入delete flag、compaction、batch upload以及進一步提高存儲的效率。

Techcrunch:Facebook品牌頁面增長及趨勢

Techcrunch:Facebook品牌頁面增長及趨勢
矽谷創業者史蒂芬·卡朋特(Steven Carpenter)是科技博客Techcrunch欄目Techcrunch Teardown的專欄作者,擅長研究消費者互聯網公司的商業模式。近日他對Facebook上排名前165位的品牌頁面進行了深入研究,並得出了這些品牌頁面的增長規律和趨勢。

我在TechCrunch Teardown欄目的上一篇文章中概述了在線廣告營銷存在著數十億美元的機遇。作為這項研究的一部分,我研究了Facebook上一些頂尖品牌的頁面,看看這些品牌是如何成功利用社交媒體與消費者加強聯繫的。 Facebook的營收近年來迅速飆升,其中很大的一塊就來自於品牌廣告宣傳。我還仔細研究了Facebook上排名前165位的廣告品牌在2011年第1季度的表現,進而可以摸清哪些品牌可以從Facebook脫穎而出,哪些品牌的增長趨勢有放緩跡象。

Facebook二號人物桑德伯格掌舵護航扎克伯格

Facebook二號人物桑德伯格掌舵護航扎克伯格
近日《商業周刊》專欄作家布拉德-斯通(Brad Stone)撰文分析了Facebook首席運營官(COO)雪莉-桑德伯格(Sheryl Sandberg)在該公司發展中所發揮的重要作用。這位被從谷歌挖來的高管已經成為Facebook的二號人物,並為這家年輕的公司量身定制了發展戰略,同時也為略顯稚嫩的首席執行官馬克-扎克伯格(Mark Zuckerberg)保駕護航。

微軟或利用Skype聯合Facebook 對抗谷歌

微軟或利用Skype聯合Facebook 對抗谷歌
據國外媒體報導,本週早些時候,微軟宣布以85億美元收購Skype。微軟CEO史蒂夫鮑爾默稱公司會將主要的服務與Skype連接起來,例如Outlook email客戶端以及Xbox和Kinect遊戲系統。但另有分析家推測,微軟可能會將Skype與其在線合作夥伴Facebook連接起來。

Facebook可以從中得到很多好處,Skype與Facebook聯合可以給微軟提供一個已成型的市場平台,同時讓Facebook用戶擁有一項新的工具。微軟與Facebook於去年十月宣布合作,並宣稱用戶將從公司獲得更多的工具和技術。

Facebook沒有自己花費大價錢收購Skype,而是通過與微軟合作的方式來為用戶提供Skype工具,合作的費用要少很多。目前Facebook和微軟均面臨與穀歌的激烈競爭,因此不難想到,微軟為Facebook提供使用Skype的機會,是為了共同抗衡谷歌。