1. 程式人生 > >論文閱讀筆記(五)

論文閱讀筆記(五)

P2P檔案共享和流媒體系統,內容分發,減輕伺服器負載,VoD在使用者共享視訊內容方面同步很少,因此更難。需要每個節點貢獻出一些硬碟空間(1GB)。新的內容複製,內容發現的排程機制。

VoD和其他流媒體播放系統不同的地方在於每個節點可以在同一時間觀看影片的不同部分,從而減小了相互之間的協助性,因此需要每個節點貢獻出一些硬碟,而不是隻貢獻出一些播放緩衝區。從某種意義上看,就成為一個分散式檔案系統。

一個P2P VoD系統包含如下幾個部分:1)源內容分發伺服器 2)一組tracker,用來幫助節點連線到其他節點上去分享內容。3)一個bootstap伺服器,用來幫助節點找到一個合適的tracker

4)其他伺服器,比如日誌伺服器(記錄用於資料管理的重要事件),傳輸伺服器(幫助節點穿越NAT)。5)一組節點,它們會和上述各種伺服器通訊,並與其他節點貢獻內容,此外,還會實現分散式雜湊表(DHT)來備份和查詢bootstap伺服器和tracker

系統中傳輸的資料塊大小是分層次的,這樣設計可以滿足系統不同的需求。

資料塊

層次

Size

movie

entire video

> 100MB

chunk

儲存和向鄰接點公告

2MB

piece

WMP

播放單元

16KB

sub-piece

傳輸單元

1KB

複製策略首先考慮的是若硬碟空間夠的話,是否cache多部影片。若這樣的話,則一個節點可以在觀看一部的同時上傳另一部。其次是是否預取影片內容。若不預取,則只有那些觀看過的影片可以在硬碟上找到,若預取,則又會影響頻寬,像PPLive就不預取,因為國內的ADSL速度不夠。然後是當硬碟滿的時候,選擇哪些資料塊/影片清除掉,可以像OS一樣使用LRU演算法或LFU演算法。當然更好的是基於權值的方法,這種方法可以在tracker的協助下來評估此影片的權值。

除了節點的內容複製策略外,還要考慮如何發現內容和擁有這些內容的其他節點。依賴如下方法來進行內容公告和查詢:1tracker(或超級節點)。2DHT3gossip演算法。

Tracker用來登記各個節點擁有影片的情況。當用戶開始或結束觀看時,都會通知Tracker。一個節點擁有的資料塊的資訊儲存在資料塊點陣圖中,節點會向它的鄰接節點獲取它們的資料塊點陣圖。然後選擇從哪些鄰接節點中下載。發現數據塊的位置使用gossip演算法,這就減小了對Tracker伺服器的依賴性。

每個節點會定時給Tracker伺服器傳送心跳包來報告它的資料塊點陣圖和其他資訊,這些資訊用於系統的監控和管理。

選擇哪些資料片下載需要考慮幾個因素:1)選擇離播放所需要最近的資料片。2)選擇系統中最稀有的資料片(一般是最新的資料片),這樣可以加速這些新成員的擴散,從而提高播放質量。3)基於錨點的策略。儘量選擇最近的錨點資料片,當用戶跳到一個特點位置時,可以使用這個錨點資料片。

當選擇要下載的特定資料塊後,假設資料塊在多個鄰接節點處存在,如何選擇從哪些節點下載呢?同時選擇的鄰接節點的數目?如何進行請求排程,設定超時?

PPLive的傳輸策略是基於如下思想:一個節點可以同時向多個鄰接節點請求不同的內容,若請求超時,它就重定向到另一個鄰接節點。而且根據響應時間會調整發送請求的數目。經測試,要達到500kbps的速率,8-20個鄰接節點是最優的,而要達到1Mbps16-32個鄰接節點最優。

P2P VoD系統中沒有BT中那樣的激勵機制,客戶端軟體必須定時向Tracker伺服器回送資料塊點陣圖,否則Playback會被關掉。

為了防止垃圾資訊攻擊,必須進行內容驗證,這可以使用訊息摘要和數字簽名。可以在兩個層次上進行:資料塊層次或資料片層次。