專利名稱:在p2p直播流系統(tǒng)中基于dht的分布式索引實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及P2P流媒體系統(tǒng)中資源索引映射技術(shù),同時涉及DHT(Distributed Hash Table)離散哈希表技術(shù)。
背景技術(shù):
在P2P(Peer to Peer)直播流媒體系統(tǒng)中,播放相同視頻節(jié)目的所有節(jié)點組成一個覆蓋網(wǎng)絡(luò)(Overlay Network)。視頻流服務(wù)器將視頻源劃分為一個個小的數(shù)據(jù)塊 (Chunk),每個數(shù)據(jù)塊代表著一定長度地流媒體數(shù)據(jù)。覆蓋網(wǎng)中的節(jié)點相互之間可以提供以數(shù)據(jù)塊為單位的數(shù)據(jù)共享服務(wù),從而達到降低流媒體系統(tǒng)對于服務(wù)器的依賴性和提高系統(tǒng)可擴展性的目的。現(xiàn)階段大部分P2P直播流媒體系統(tǒng)按其組成的覆蓋網(wǎng)絡(luò)架構(gòu)來說,大致可以分為2類基于樹型(Tree)和網(wǎng)狀(Mesh)結(jié)構(gòu)的系統(tǒng)。在樹型結(jié)構(gòu)下,節(jié)點通常被組織成單樹(Single Tree)或多樹(Multi-tree)的網(wǎng)絡(luò)。樹的根節(jié)點為視頻流服務(wù)器所在, 數(shù)據(jù)塊是以父節(jié)點到子節(jié)點的順序向下一層層地推送(Push)。在網(wǎng)狀結(jié)構(gòu)下,每個節(jié)點維護一定數(shù)量地鄰居節(jié)點,這些鄰居節(jié)點在邏輯上與自己直接相連。鄰居節(jié)點間通過周期性地交換BM(Buffer Map)信息來獲悉其它節(jié)點上是否有自己需要的數(shù)據(jù)。根據(jù)這些BM信息, 節(jié)點再選用推送或者拉(Pull)的方式來從其它節(jié)點處獲取數(shù)據(jù)。然而上述這兩種網(wǎng)絡(luò)架構(gòu)下的系統(tǒng)都存在一定的局限性,例如前者對網(wǎng)絡(luò)抖動很敏感且存在沒有充分利用網(wǎng)絡(luò)資源的問題,后者存在高時延和高信息交換開銷等問題。鑒于此,到目前為止還存在著另一種研究趁勢,即將DHT技術(shù)引入到P2P流媒體系統(tǒng)。DHT(Distributed Hash Table)又稱為離散哈希表技術(shù),其原理是P2P網(wǎng)絡(luò)中每個節(jié)點和資源通過哈希(HASH)獲得一個ID來標識自己,節(jié)點根據(jù)自己的ID負責一部分ID 空間,資源根據(jù)自己的ID映射到相應(yīng)的節(jié)點;節(jié)點維護一個特定大小地路由表,定位資源時通過路由表進行選擇性轉(zhuǎn)發(fā),可以保證在確定的跳數(shù)內(nèi)定位到任何資源。DHT是許多分布式應(yīng)用的基礎(chǔ),例如在P2P流媒體系統(tǒng)中通常利用DHT來進行分布式地索引存儲與查找。在引入DHT技術(shù)的P2P流媒體系統(tǒng)中,每個用戶在P2P網(wǎng)絡(luò)中表現(xiàn)為一個節(jié)點,每個數(shù)據(jù)塊在網(wǎng)絡(luò)中表現(xiàn)為一個資源(考慮到開銷相關(guān)因素,或由多個連續(xù)數(shù)據(jù)塊表現(xiàn)為一個資源)。用戶根據(jù)自己的IP地址或其它信息經(jīng)過哈希來得到一個標識ID,數(shù)據(jù)塊根據(jù)編號或其它信息通過哈希也得到一個標識ID。為了便于區(qū)分,我們將資源(數(shù)據(jù)塊)的標識 ID另記為Key。所謂索引指的一個<Key,Value〉對,在當前應(yīng)用場景下此處的Key可與數(shù)據(jù)塊標識Key等同。當某個用戶收到一個完整數(shù)據(jù)塊時,它便會為其產(chǎn)生一個索引。其中, Key值由數(shù)據(jù)塊經(jīng)過哈希得到,Value包含了用戶IP地址等相關(guān)信息。再由資源與節(jié)點之間的映射關(guān)系,用戶將索引按其Key值發(fā)送并存儲到相應(yīng)地節(jié)點之上。此過程即為P2P流媒體系統(tǒng)中基于DHT的分布索引應(yīng)用。至于查找,用戶根據(jù)需要查找的數(shù)據(jù)塊計算出Key 值,再通過映射關(guān)系找到相應(yīng)地節(jié)點,此節(jié)點上存儲著與該數(shù)據(jù)塊相關(guān)的索引。最后讀取這些索引中Value信息來獲悉哪些用戶上有著該數(shù)據(jù)塊的數(shù)據(jù)。在傳統(tǒng)的索引映射及管理方法中,相同的數(shù)據(jù)塊將得到完全相同地標識Key值,從而那些針對相同數(shù)據(jù)塊所產(chǎn)生的索引都將被映射存儲到同一節(jié)點上。如圖1所示,Ln表示某一特定數(shù)據(jù)塊編號,K20表示數(shù)據(jù)塊標識Key的值為20,N20表示節(jié)點標識ID的值為 20 ;N79、N102、N150三個節(jié)點上都有數(shù)據(jù)塊LN,產(chǎn)生的資源標識均為K20,三個關(guān)于數(shù)據(jù)塊 Ln的索引都將存儲在節(jié)點N38上。如果節(jié)點N38失效,所有相關(guān)數(shù)據(jù)塊的查找請求都將無法得到響應(yīng)。因此,為了避免單點失效并提高索引有效性,節(jié)點通常會將其存儲的所有索引復(fù)制k份到隨后的k個節(jié)點上,這便是復(fù)制機制application Mechanism)。由于索引的產(chǎn)生與發(fā)布是以數(shù)據(jù)塊為單位,通常數(shù)據(jù)塊代表的數(shù)據(jù)長度很有限,即便沒有采用復(fù)制機制的網(wǎng)絡(luò)也會存在大量地索引。采用復(fù)制機制來提高索引有效性后,又成k倍地增加了索引數(shù)量,帶來額外地開銷,并且,由于直播系統(tǒng)中用戶播放位置相近,同一數(shù)據(jù)塊在許多節(jié)點都存在,針對該數(shù)據(jù)塊所產(chǎn)生的帶有冗余性質(zhì)的索引也就相應(yīng)較多。實際的情況是,我們不需要存儲和維護如此多的帶有冗余性質(zhì)的索引。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種在P2P直播流系統(tǒng)中,不降低查詢效率、 索引有效性的前提下,盡量減少系統(tǒng)開銷的基于DHT的分布式索引實現(xiàn)方法。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案是,在P2P直播流系統(tǒng)中基于DHT 的分布式索引實現(xiàn)方法,其特征在于,包括以下步驟將網(wǎng)絡(luò)中的每個節(jié)點劃分至相應(yīng)的子空間,并為每個節(jié)點分配對應(yīng)子空間的子空間標識符SID ;當節(jié)點需要作為源節(jié)點發(fā)送數(shù)據(jù)塊的索引時,該節(jié)點根據(jù)數(shù)據(jù)塊信息與源節(jié)點的 SID值生成資源標識Key,并產(chǎn)生該數(shù)據(jù)塊的索引<Key,Value〉,其中Key為生成資源標識, Value為索引值,索引值包括有源節(jié)點IP地址;之后,該節(jié)點根據(jù)約定的資源標識Key與指定節(jié)點的映射關(guān)系將所述索引發(fā)送至指定節(jié)點進行存儲;當節(jié)點需要查找數(shù)據(jù)塊時,該節(jié)點根據(jù)需要查找數(shù)據(jù)塊的數(shù)據(jù)塊信息以及網(wǎng)絡(luò)中所有的子空間標識符SID得到不同的資源標識Key,從而根據(jù)約定的資源標識Key與指定節(jié)點的映射關(guān)系,在所有指定節(jié)點中進行查找,從而可得到網(wǎng)絡(luò)中該數(shù)據(jù)塊對應(yīng)的所有索引。本發(fā)明為同一數(shù)據(jù)塊生成的資源標識Key會因源節(jié)點的子空間標識符SID不同而不同。這樣,同一數(shù)據(jù)塊的索引會存儲在不同的指定節(jié)點上,能夠避免單點失效,保證索引有效性,并且由于沒有采用復(fù)制機制,因此不同節(jié)點上存儲同一數(shù)據(jù)塊存儲的索引值各不相同,避免了網(wǎng)絡(luò)存儲和維護帶有冗余性質(zhì)的索引,減小系統(tǒng)開銷。進一步的,將網(wǎng)絡(luò)中的每個節(jié)點劃分至相應(yīng)的子空間的具體方式是首先確定子空間個數(shù),將網(wǎng)絡(luò)中所有節(jié)點均勻地劃分至各子空間中。由于子空間劃分的均勻性,當節(jié)點數(shù)量不是很少時,可以認為Key的每種取值也是均勻的,更有利于提高不同數(shù)據(jù)塊的索引在不同指定節(jié)點上存儲的幾率,保證索引有效性。如果將針對相同數(shù)據(jù)塊產(chǎn)生的索引稱作為同類索引,則考慮讓節(jié)點在索引存儲的過程中會對每組同類索引中的索引項數(shù)目加以限制。通過限制部分索引存儲的方式縮減了系統(tǒng)中的索引總量,降低了存儲以及相關(guān)地維護開銷。另一方面,索引更新方式的提出使得系統(tǒng)中所存儲的索引總是有效且性能較優(yōu)。進一步的,所述索引值中還包括該索引的生命周期,網(wǎng)絡(luò)中的節(jié)點本地存儲的索引對應(yīng)的生命周期到期后,節(jié)點自動清除到期索引。更進一步的,索引值中還包括發(fā)送該索引的源節(jié)點評分;所述源節(jié)點評分用于評估索引指向的源節(jié)點給其它節(jié)點提供服務(wù)的能力;網(wǎng)絡(luò)中的節(jié)點在存儲新接收的索引之前,先判斷相同資源標識Key對應(yīng)的存儲量是否達到上限,如否,直接添加;如是,則先新接收的索引的源節(jié)點評分與當前存儲相同資源標識Key的索引中源節(jié)點評分最低的索引進行比較,如大于,則用新接收的索引替代當前存儲的源節(jié)點評分最低的索引,否則,丟棄新接收的索引。
圖1為現(xiàn)有索引映射及索引發(fā)布的示意圖;圖2為實施例中哈希子空間的劃分示意圖;圖3為實施例的分布式索引映射機制下針對數(shù)據(jù)塊Ln的索引發(fā)布示意圖;圖4為是子空間劃分數(shù)量對系統(tǒng)中索引有效性的影響。
具體實施例方式本實施例方法包括1)分布式地索引映射機制的具體內(nèi)容包括1. 1引入一個子空間標識符SID (Sub-space Identif ier),每個節(jié)點在確定了其標識ID后也將產(chǎn)生一個相應(yīng)地SID ;1. 2更改現(xiàn)有資源(數(shù)據(jù)塊)標識Key的產(chǎn)生方式,使Key不僅與數(shù)據(jù)塊信息相關(guān),還與數(shù)據(jù)塊所在節(jié)點的SID值相關(guān);1. 3索引按照新Key值進行發(fā)布,同一數(shù)據(jù)塊可能產(chǎn)生幾個不同的新Key值,該類數(shù)據(jù)塊的索引將分布存儲在全網(wǎng)多個節(jié)點上。上述的方法,其中,總的子空間數(shù)被定義為i個,則子空間標識符SID e [l,i],而 SID的計算方式為
權(quán)利要求
1.在P2P直播流系統(tǒng)中基于DHT的分布式索引實現(xiàn)方法,其特征在于,包括以下步驟將網(wǎng)絡(luò)中的每個節(jié)點劃分至相應(yīng)的子空間,并為每個節(jié)點分配對應(yīng)子空間的子空間標識符SID ;當節(jié)點需要作為源節(jié)點發(fā)送數(shù)據(jù)塊的索引時,該節(jié)點根據(jù)數(shù)據(jù)塊信息與源節(jié)點的SID 值生成資源標識Key,并產(chǎn)生該數(shù)據(jù)塊的索引<Key,Value〉,其中Key為生成資源標識, Value為索引值,索引值包括有源節(jié)點IP地址;之后,該節(jié)點根據(jù)約定的資源標識Key與指定節(jié)點的映射關(guān)系將所述索引發(fā)送至指定節(jié)點進行存儲;當節(jié)點需要查找數(shù)據(jù)塊時,該節(jié)點根據(jù)需要查找數(shù)據(jù)塊的數(shù)據(jù)塊信息以及網(wǎng)絡(luò)中所有的子空間標識符SID得到不同的資源標識Key,從而根據(jù)約定的資源標識Key與指定節(jié)點的映射關(guān)系,在所有指定節(jié)點中進行查找,從而可得到網(wǎng)絡(luò)中該數(shù)據(jù)塊對應(yīng)的所有索引。
2.如權(quán)利要求1所述在P2P直播流系統(tǒng)中基于DHT的分布式索引實現(xiàn)方法,其特征在于,將網(wǎng)絡(luò)中的每個節(jié)點劃分至相應(yīng)的子空間的具體方式是首先確定子空間個數(shù),將網(wǎng)絡(luò)中所有節(jié)點均勻地劃分至各子空間中。
3.如權(quán)利要求1或2所述在P2P直播流系統(tǒng)中基于DHT的分布式索引實現(xiàn)方法,其特征在于,所述索引值中還包括該索引的生命周期;網(wǎng)絡(luò)中的節(jié)點本地存儲的索引對應(yīng)的生命周期到期后,節(jié)點自動清除到期索引。
4.如權(quán)利要求3所述在P2P直播流系統(tǒng)中基于DHT的分布式索引實現(xiàn)方法,其特征在于,所述索引值中還包括發(fā)送該索引的源節(jié)點評分;所述源節(jié)點評分用于評估索引指向的源節(jié)點給其它節(jié)點提供服務(wù)的能力;網(wǎng)絡(luò)中的節(jié)點在存儲新接收的索引之前,先判斷相同資源標識Key對應(yīng)的存儲量是否達到上限,如否,直接添加;如是,則先將新接收索引的源節(jié)點評分與當前存儲相同資源標識Key的索引中源節(jié)點評分最低的索引進行比較,如大于,則用新接收的索引替代當前存儲的源節(jié)點評分最低的索引,否則,丟棄新接收的索引。
5.如權(quán)利要求3所述在P2P直播流系統(tǒng)中基于DHT的分布式索引實現(xiàn)方法,其特征在于,將網(wǎng)絡(luò)中子空間個數(shù)為4。
全文摘要
本發(fā)明提供一種在P2P直播流系統(tǒng)中,不降低查詢效率、索引有效性的前提下,盡量減少系統(tǒng)開銷的基于DHT的分布式索引實現(xiàn)方法。在P2P直播流系統(tǒng)中基于DHT的分布式索引實現(xiàn)方法,同一數(shù)據(jù)塊生成的資源標識Key會因源節(jié)點的子空間標識符SID不同而不同。這樣,同一數(shù)據(jù)塊的索引會存儲在不同的指定節(jié)點上,能夠避免單點失效,保證索引有效性,并且由于沒有采用復(fù)制機制,因此不同節(jié)點上存儲同一數(shù)據(jù)塊存儲的索引值各不相同,避免了網(wǎng)絡(luò)存儲和維護帶有冗余性質(zhì)的索引,減小系統(tǒng)開銷。
文檔編號H04N21/63GK102572602SQ20121001191
公開日2012年7月11日 申請日期2012年1月16日 優(yōu)先權(quán)日2012年1月16日
發(fā)明者馮鋼, 陸毅, 陳卓 申請人:電子科技大學