專利名稱:一種基于十字鏈表的p2p流媒體下載方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對等網(wǎng)絡(luò)(Peer to Peer Networks, P2P網(wǎng)絡(luò))上的流媒體下載技術(shù) 領(lǐng)域,特別是涉及一種基于十字鏈表的P2P流媒體下載方法和系統(tǒng)。
背景技術(shù):
P2P下載技術(shù)是指客戶端從服務(wù)器下載文件過程中,定時與服務(wù)器交換共享該文 件的客戶端信息,客戶端同時更新下載源節(jié)點(diǎn)信息,從共享該文件的相應(yīng)客戶端下載文件 片段到本地。采用P2P下載技術(shù),由單一的從服務(wù)器獲取資源模式過渡到多點(diǎn)獲取資源的 模式,并共享自身已有資源;因此,P2P下載基于點(diǎn)對點(diǎn)技術(shù)可以實(shí)現(xiàn)文件共享、網(wǎng)絡(luò)交流、 文件交換和分布計算等。隨著骨干網(wǎng)絡(luò)的擴(kuò)容和網(wǎng)絡(luò)技術(shù)的發(fā)展,以前受制于網(wǎng)絡(luò)能力的基于P2P技術(shù)的 網(wǎng)絡(luò)應(yīng)用程序得到了較大的發(fā)展空間,用戶量呈爆炸式增長。與傳統(tǒng)的客戶端/服務(wù)器(C/ S)模式相比,P2P模式可以在短時間內(nèi)進(jìn)行大規(guī)模部署,并且部署系統(tǒng)的開銷會比同等條 件下的C/S部署模式要廉價許多。當(dāng)前最常見的P2P數(shù)據(jù)共享系統(tǒng)包括P2P文件共享系 統(tǒng)、P2P視頻直播平臺、P2P點(diǎn)播平臺、視頻電話系統(tǒng)等。以P2P視頻點(diǎn)播系統(tǒng)為例,觀看同一個點(diǎn)播節(jié)目的各個客戶端不但可以從視頻的 原始發(fā)布者處請求數(shù)據(jù),而且還可以從符合一定條件的其他觀看同一節(jié)目的客戶端中分享 數(shù)據(jù)。這種分享策略雖然會在一定程度上造成視頻播放的延遲,并且在視頻播放前會有一 個較長時間的緩沖時期,但卻可以極大減輕該流媒體發(fā)布者的負(fù)擔(dān),同時可以避免視頻發(fā) 布者單點(diǎn)失效問題。實(shí)際上,對于普通的網(wǎng)絡(luò)視頻點(diǎn)播服務(wù)來說,用戶只要能夠流暢收看到 所希望看到的點(diǎn)播節(jié)目就會有很高的用戶滿意度。目前,市場上有多個成功的P2P流媒體播放平臺,但其在實(shí)現(xiàn)細(xì)節(jié)方面,仍然有很 多值得深入探討和研究的問題,包括1)系統(tǒng)中一個節(jié)點(diǎn)的鄰居節(jié)點(diǎn)集合中,有多個節(jié)點(diǎn)包含同一個數(shù)據(jù)分片,該節(jié)點(diǎn) 應(yīng)該如何選擇該數(shù)據(jù)分片的資源節(jié)點(diǎn),是當(dāng)前還未有定論的熱點(diǎn)問題;2) 一個流媒體分享系統(tǒng)的參與節(jié)點(diǎn)中,鄰居節(jié)點(diǎn)集合、數(shù)據(jù)分片集合以及各個分 片的預(yù)計下載等各種信息,應(yīng)該以怎樣的數(shù)據(jù)結(jié)構(gòu)加以組織,才可以高效調(diào)度數(shù)據(jù)分片的 下載,減小流媒體回放的時延,得到較高的用戶滿意度,也是一個未能很好解決的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于十字鏈表的P2P流媒體下載方法和系統(tǒng)。其為流 媒體系統(tǒng)客戶端的數(shù)據(jù)分片下載過程提供合理化調(diào)度方案,提高了 P2P流媒體平臺的數(shù)據(jù) 分片共享與傳播效率。為實(shí)現(xiàn)本發(fā)明的目的而提供的一種基于十字鏈表的P2P流媒體下載方法,包括下 列步驟步驟100.用戶節(jié)點(diǎn)采用十字鏈表數(shù)據(jù)結(jié)構(gòu)為每個鄰居節(jié)點(diǎn)維護(hù)一個鄰居節(jié)點(diǎn)下載任務(wù)隊列,為每個數(shù)據(jù)分片維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將兩個隊列存儲于用戶 節(jié)點(diǎn)本身;步驟200.所述用戶節(jié)點(diǎn)在擁有預(yù)備下載的數(shù)據(jù)分片的鄰居節(jié)點(diǎn)集合中,選擇所 述用戶節(jié)點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)的下載任務(wù)隊列中所有任務(wù) 的估計完成時間最小的鄰居節(jié)點(diǎn),將該下載任務(wù)交給該節(jié)點(diǎn)完成所述數(shù)據(jù)分片的下載任 務(wù),同時更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載任務(wù)隊列。
所述下載任務(wù)通過下載任務(wù)三元組記錄,所述下載任務(wù)三元組為<Pi; bj; Τ,ρ,其 中Pi為資源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,h為準(zhǔn)備下載的數(shù)據(jù)分片的標(biāo)識,Tu為該任務(wù)的預(yù)計完成時 刻;其中Ti.」的計算方法為Tf (Pi)+bl0Ck_siZe/V (Pi),其中block_SiZe為數(shù)據(jù)分片 的大小,V(Pi)為資源節(jié)點(diǎn)Pi到用戶節(jié)點(diǎn)的數(shù)據(jù)傳輸速率。所述步驟200,包括下列步驟步驟210.所述用戶節(jié)點(diǎn)在擁有準(zhǔn)備下載的數(shù)據(jù)分片的鄰居節(jié)點(diǎn)中,選擇其下載 隊列所有任務(wù)的估計完成時間最小的鄰居節(jié)點(diǎn)安排下載該數(shù)據(jù)分片的任務(wù);步驟220.所述用戶節(jié)點(diǎn)建立相應(yīng)數(shù)據(jù)下載任務(wù)三元組記錄所述下載任務(wù);步驟230.所述用戶節(jié)點(diǎn)更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任 務(wù)隊列的所有任務(wù)的估計完成時刻;同時更新所述數(shù)據(jù)分片對應(yīng)的下載任務(wù)隊列的最早完 成時刻。所述方法,還包括下列步驟步驟300.所述用戶節(jié)點(diǎn)周期性更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的 下載任務(wù)隊列的所有任務(wù)的估計完成時刻;同時更新所述預(yù)備下載的數(shù)據(jù)分片對應(yīng)的下載 任務(wù)隊列的最早完成時刻,返回步驟200.所述步驟300,包括下列步驟步驟310.所述用戶節(jié)點(diǎn)在間隔時間內(nèi)估計并更新各個所述鄰居節(jié)點(diǎn)到所述用戶 節(jié)點(diǎn)的下載速率;步驟320.所述用戶節(jié)點(diǎn)根據(jù)所述估算的下載速率,估算各個所述下載任務(wù)三元 組的估計下載完成時刻;步驟330.所述用戶節(jié)點(diǎn)更新各個下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任 務(wù)隊列的所有任務(wù)的估計完成時刻;同時更新各個下載任務(wù)三元組中所述數(shù)據(jù)分片對應(yīng)的 下載任務(wù)隊列的最早完成時刻記錄;步驟340.判斷是否存在待下載的數(shù)據(jù)分片在預(yù)計播放時刻之前無法到達(dá),若是, 則根據(jù)步驟100至步驟200所述方法重新調(diào)度待下載的數(shù)據(jù)分片的下載任務(wù)。在P2P點(diǎn)播系統(tǒng)中用戶節(jié)點(diǎn)在發(fā)現(xiàn)用戶進(jìn)行跳轉(zhuǎn)操作時,或在P2P直播系統(tǒng)中用 戶節(jié)點(diǎn)的節(jié)目時延較大時,所述方法,還包括下列步驟步驟400.根據(jù)用戶的跳轉(zhuǎn)要求,執(zhí)行點(diǎn)播跳轉(zhuǎn)操作。所述步驟400,包括下列步驟步驟410.所述用戶節(jié)點(diǎn)清空所述下載隊列中的所有下載任務(wù)三元組;步驟420.所述用戶節(jié)點(diǎn)向所有已確定的資源節(jié)點(diǎn)發(fā)送取消下載請求;步驟430.所述用戶節(jié)點(diǎn)從用戶選擇的新時刻,或直播系統(tǒng)給定的新時刻起采用步驟100的方法重新建立十字鏈表數(shù)據(jù)結(jié)構(gòu)的下載任務(wù)隊列。為實(shí)現(xiàn)本發(fā)明的目的還提供一種基于十字鏈表的P2P流媒體下載系統(tǒng),所述系 統(tǒng),包括
鄰居節(jié)點(diǎn)管理模塊,用于為用戶節(jié)點(diǎn)維護(hù)一個采用十字鏈表數(shù)據(jù)結(jié)構(gòu)存儲的鄰居 節(jié)點(diǎn)下載任務(wù)隊列,并根據(jù)數(shù)據(jù)分片為用戶節(jié)點(diǎn)維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將兩 個隊列存儲于用戶節(jié)點(diǎn)本身;下載調(diào)度模塊,用于根據(jù)所述用戶節(jié)點(diǎn)在擁有數(shù)據(jù)分片…的鄰居節(jié)點(diǎn)集合中,選 擇所述用戶節(jié)點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)下載隊列中所有任務(wù)的 估計完成時間Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi,將該下載任務(wù)交給該節(jié)點(diǎn)Pi完成所述數(shù)據(jù)分片的 下載任務(wù),通過所述鄰居節(jié)點(diǎn)管理模塊更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載任 務(wù)隊列。所述下載調(diào)度模塊,包括鄰居節(jié)點(diǎn)選擇模塊,用于所述用戶節(jié)點(diǎn)在擁有…的鄰居節(jié)點(diǎn)中,選擇其下載隊列 所有任務(wù)的估計完成時間Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi安排下載該數(shù)據(jù)分片的任務(wù);下載任務(wù)建立模塊,用于建立相應(yīng)數(shù)據(jù)下載任務(wù)三元組Ji,bj; Τ, j>記錄所述下載 任務(wù);更新模塊,用于更新所述下載任務(wù)三元組〈PybpT,」> 中所述鄰居節(jié)點(diǎn)對應(yīng)的下載 任務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對應(yīng)的下載 任務(wù)隊列BQ屯)的最早完成時刻Tb屯)。所述系統(tǒng),還包括時間更新模塊,用于周期性更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載 任務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對應(yīng)的下載 任務(wù)隊列BQ屯)的最早完成時刻Tb屯)。所述時間更新模塊,包括下載速率更新子模塊,用于在間隔時間內(nèi)估計并更新各個所述鄰居節(jié)點(diǎn)到所述用 戶節(jié)點(diǎn)的下載速率V(Pi);下載完成時刻更新子模塊,用于根據(jù)所述估算的下載速率V(Pi),估算各個所述下 載任務(wù)三元組的估計下載完成時刻Τ";更新子模塊,用于更新各個下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù)隊列 Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新各個下載任務(wù)三元組中所述數(shù)據(jù)分片 對應(yīng)的下載任務(wù)隊列BQ (bp的最早完成時刻記錄Tb (bp ;判斷模塊,用于判斷是否存在數(shù)據(jù)分片bk在預(yù)計播放時刻之前無法到達(dá),若是,則 觸發(fā)所述鄰居節(jié)點(diǎn)管理模塊和下載調(diào)度模塊重新調(diào)度數(shù)據(jù)分片bk的下載任務(wù)。所述系統(tǒng),包括跳轉(zhuǎn)模塊,用于根據(jù)用戶的跳轉(zhuǎn)要求,執(zhí)行點(diǎn)播跳轉(zhuǎn)操作。所述跳轉(zhuǎn)模塊,包括跳轉(zhuǎn)處理模塊,用于清空所述下載隊列中的所有三元組,并向所有已確定的鄰居 節(jié)點(diǎn)發(fā)送取消下載請求;跳轉(zhuǎn)下載模塊,用于根據(jù)用戶選擇的新時刻,或直播系統(tǒng)給定的新時刻起重新建立十字鏈表調(diào)度數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的有益效果是本發(fā)明提供的基于十字鏈表的P2P流媒體下載方法和系 統(tǒng),能夠在二維空間中清晰描述各個下載任務(wù)的關(guān)聯(lián)關(guān)系,提高P2P流媒體平臺的數(shù)據(jù)分 片共享與傳播效率。
圖1是本發(fā)明的基于十字鏈表的P2P流媒體下載方法的步驟流程圖;圖2是本發(fā)明中十字鏈表數(shù)據(jù)結(jié)構(gòu)的實(shí)施例示意圖;圖3是本發(fā)明中用戶節(jié)點(diǎn)在安排一個數(shù)據(jù)分片…的下載任務(wù)的一種實(shí)施方案流 程圖;圖4是本發(fā)明的基于十字鏈表的P2P流媒體下載方法的一種實(shí)施方案的步驟流程 圖;圖5是本發(fā)明的基于十字鏈表數(shù)據(jù)結(jié)構(gòu)的P2P流媒體下載方法的周期性更新方法 的一種實(shí)施方案流程圖;圖6是跳轉(zhuǎn)操作的一應(yīng)用實(shí)例的示意圖;圖7是本發(fā)明的基于十字鏈表數(shù)據(jù)結(jié)構(gòu)的P2P流媒體下載方法的跳轉(zhuǎn)操作處理方 法的一種實(shí)施方案流程圖;圖8是本發(fā)明基于十字鏈表的P2P流媒體下載系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對 本發(fā)明的一種基于十字鏈表的P2P流媒體下載方法和系統(tǒng)進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理 解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的一種基于十字鏈表的P2P流媒體下載方法和系統(tǒng)。在二維空間中清晰地 描述了各個下載任務(wù)的關(guān)聯(lián)關(guān)系,可以應(yīng)用于P2P點(diǎn)播/直播平臺,為流媒體系統(tǒng)客戶端的 數(shù)據(jù)分片下載過程提供合理化調(diào)度方案,提高了 P2P流媒體平臺的數(shù)據(jù)分片共享與傳播效 率。本發(fā)明要解決的技術(shù)問題包括1.下載任務(wù)調(diào)度方法;2.周期性調(diào)整方法;3.跳轉(zhuǎn)操作處理方法。為了避免概念混淆,對以下概念加以解釋用戶節(jié)點(diǎn),為發(fā)出流媒體下載指令的P2P系統(tǒng)用戶所使用的節(jié)點(diǎn);所述鄰居節(jié)點(diǎn),為在應(yīng)用層拓?fù)鋱D中與所述用戶節(jié)點(diǎn)直接相連的節(jié)點(diǎn);資源節(jié)點(diǎn),為擁有或部分擁有所述下載指令所請求流媒體數(shù)據(jù),并被選定為所述 用戶節(jié)點(diǎn)提供該數(shù)據(jù)的鄰居節(jié)點(diǎn);數(shù)據(jù)分片,指在互聯(lián)網(wǎng)絡(luò)流媒體傳輸過程中,在數(shù)據(jù)發(fā)送端將流媒體數(shù)據(jù)編碼并 切分為適合互聯(lián)網(wǎng)傳輸?shù)妮^小數(shù)據(jù)包。數(shù)據(jù)的接收端在接收到前述數(shù)據(jù)分片后能夠?qū)ζ溥M(jìn) 行解碼,還原為連續(xù)的流媒體數(shù)據(jù)。
下面結(jié)合上述目標(biāo)詳細(xì)介紹本發(fā)明一種基于十字鏈表的P2P流媒體下載方法,圖 1是本發(fā)明的基于十字鏈表的P2P流媒體下載方法的步驟流程圖,如圖1所示,所述方法,包 括下列步驟步驟100.用戶節(jié)點(diǎn)采用十字鏈表數(shù)據(jù)結(jié)構(gòu)為每個鄰居節(jié)點(diǎn)維護(hù)一個鄰居節(jié)點(diǎn)下 載任務(wù)隊列,為每個數(shù)據(jù)分片維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將兩個隊列存儲于用戶 節(jié)點(diǎn)本身;
圖2是本發(fā)明中十字鏈表數(shù)據(jù)結(jié)構(gòu)的實(shí)施例示意圖,如圖2所示,所述用戶節(jié)點(diǎn)維 護(hù)兩個下載任務(wù)隊列1)用戶節(jié)點(diǎn)為它的每個鄰居節(jié)點(diǎn)維護(hù)一個鄰居節(jié)點(diǎn)下載任務(wù)隊列Q(Pi),如圖2 中的水平方向隊列所示;該隊列中的下載任務(wù)按照預(yù)計下載完成時刻進(jìn)行排序,并記錄該 隊列全部下載任務(wù)的完成時刻Tf(Pi)。2)用戶節(jié)點(diǎn)為每個正在下載的數(shù)據(jù)分片維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列BQ(bp, 如圖2中的垂直方向隊列所示;并記錄隊列中的最早下載完成時刻TMbj).作為一種可實(shí)施方式,為確保數(shù)據(jù)分片按時到達(dá)、保證流媒體播放的質(zhì)量,同一個 數(shù)據(jù)分片可能會被安排從多個鄰居節(jié)點(diǎn)上同時進(jìn)行下載。較佳地,本發(fā)明中用戶節(jié)點(diǎn)通過建立數(shù)據(jù)分片下載任務(wù)三元組記錄下載任務(wù),包 括該資源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識、該數(shù)據(jù)分片的標(biāo)識、以及所述數(shù)據(jù)分片的預(yù)計下載完成時刻;所述下載任務(wù)三元組為見,1^_,1\.」>,其中Pi為資源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識,bj為準(zhǔn)備下 載的數(shù)據(jù)分片的標(biāo)識,Tlj為該任務(wù)的預(yù)計完成時刻。例如<P6,b5,T6.5>描述的是這樣一個 下載任務(wù)數(shù)據(jù)請求節(jié)點(diǎn)指定節(jié)點(diǎn)標(biāo)識為P6的鄰居節(jié)點(diǎn)提供標(biāo)識為b5的數(shù)據(jù)分片,預(yù)計該 下載任務(wù)在T6.5時刻完成。其中Ti.」的計算方法為Tf (Pi)+bl0Ck_siZe/V (Pi),其中block_SiZe為數(shù)據(jù)分片 的大小,V(Pi)為資源節(jié)點(diǎn)Pi到用戶節(jié)點(diǎn)的數(shù)據(jù)傳輸速率。用戶節(jié)點(diǎn)在安排一個數(shù)據(jù)分片…的下載任務(wù)時,執(zhí)行如下步驟步驟200.所述用戶節(jié)點(diǎn)在擁有數(shù)據(jù)分片bj的鄰居節(jié)點(diǎn)集合中,選擇所述用戶節(jié) 點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)下載隊列中所有任務(wù)的估計完成時間 Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi,將該下載任務(wù)交給該節(jié)點(diǎn)Pi完成所述數(shù)據(jù)分片的下載任務(wù),同 時更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載任務(wù)隊列;所述更新操作只是對一個數(shù)據(jù)分片的下載任務(wù)進(jìn)行分配后做的局部更新,與步驟 300中所述的周期性完全更新各個隊列是不同的。所述用戶節(jié)點(diǎn)根據(jù)其所維護(hù)的各個鄰居節(jié)點(diǎn)的下載任務(wù)隊列依次向該鄰居節(jié)點(diǎn) 請求數(shù)據(jù)以完成所述數(shù)據(jù)分片的下載任務(wù)。圖3是本發(fā)明中用戶節(jié)點(diǎn)在安排一個數(shù)據(jù)分片…的下載任務(wù)的一種實(shí)施方案流 程圖,如圖3所示,所述步驟200,包括下列步驟步驟210.所述用戶節(jié)點(diǎn)在擁有…的鄰居節(jié)點(diǎn)中,選擇其下載隊列所有任務(wù)的估 計完成時間Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi安排下載該數(shù)據(jù)分片的任務(wù);步驟220.所述用戶節(jié)點(diǎn)建立相應(yīng)數(shù)據(jù)下載任務(wù)三元組〈PybpIY」> 記錄所述下載 任務(wù);步驟230.所述用戶節(jié)點(diǎn)更新所述下載任務(wù)三元組〈PylvIYj〉中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對 應(yīng)的下載任務(wù)隊列BQ (bp的最早完成時刻Tb (bp。圖4是本發(fā)明的基于十字鏈表的P2P流媒體下載方法的一種實(shí)施方案的步驟流程 圖,如圖4所示,所述基于十字鏈表的P2P流媒體下載方法,還包括下列步驟步驟300.所述用戶節(jié)點(diǎn)周期性更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的 下載任務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對應(yīng)的 下載任務(wù)隊列BQ(bp的最早完成時刻TMbj),返回步驟200.圖5是本發(fā)明的基于十字鏈表數(shù)據(jù)結(jié)構(gòu)的P2P流媒體下載方法的周期性更新方法 的一種實(shí)施方案流程圖,如圖5所示,所述步驟300,包括下列步驟步驟310.所述用戶節(jié)點(diǎn)在間隔時間內(nèi)估計并更新各個所述鄰居節(jié)點(diǎn)到所述用戶 節(jié)點(diǎn)的下載速率V(Pi);所述估計下載速率(帶寬)的方法屬于現(xiàn)有技術(shù),在此不再一一贅述。步驟320.所述用戶節(jié)點(diǎn)根據(jù)所述估算的下載速率V(Pi),估算各個所述下載任務(wù) 三元組的估計下載完成時刻IYj ;步驟330.所述用戶節(jié)點(diǎn)更新各個下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任 務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新各個下載任務(wù)三元組中所述數(shù) 據(jù)分片對應(yīng)的下載任務(wù)隊列BQ (bp的最早完成時刻記錄Tb (bp ;步驟340.判斷是否存在數(shù)據(jù)分片bk在預(yù)計播放時刻之前無法到達(dá),若是,則根據(jù) 步驟100至步驟200所述方法重新調(diào)度數(shù)據(jù)分片bk的下載任務(wù)。較佳地,本發(fā)明還提供一種基于十字鏈表數(shù)據(jù)結(jié)構(gòu)的P2P流媒體下載方法的跳轉(zhuǎn) 操作處理方法。P2P點(diǎn)播系統(tǒng)用戶經(jīng)常會因?yàn)楫?dāng)前視頻節(jié)目比較拖沓等原因,拖動用戶界面 的時間飛梭,使媒體播放時刻發(fā)生突變;而P2P直播系統(tǒng)則會出現(xiàn)用戶節(jié)點(diǎn)當(dāng)前播放時刻 落后直播源當(dāng)前提供內(nèi)容時刻過多導(dǎo)致用戶節(jié)點(diǎn)進(jìn)行的重新連接的情況。所述基于十字鏈表數(shù)據(jù)結(jié)構(gòu)的P2P流媒體下載方法,還包括步驟400.根據(jù)用戶的跳轉(zhuǎn)要求,執(zhí)行點(diǎn)播跳轉(zhuǎn)操作;所述點(diǎn)播跳轉(zhuǎn)操作是指用戶的當(dāng)前觀看時刻向前變化,或向后作較大的變化。圖 6是跳轉(zhuǎn)操作的一應(yīng)用實(shí)例的示意圖,如圖6所示。原播放時刻時間軸坐標(biāo)為5分50秒,數(shù) 據(jù)下載緩存為1分鐘。當(dāng)用戶拖動時間飛梭到10分0秒時,下載緩存中的數(shù)據(jù)就會變成無 效數(shù)據(jù),需要將其全部清空。同時,該客戶端需要立即緩存時刻在10分0秒到11分0秒?yún)^(qū) 間之內(nèi)的數(shù)據(jù)分片。但若用戶只是將時間飛梭向后作較小調(diào)整,如將播放時刻調(diào)整為6分 10秒,由于數(shù)據(jù)緩存的存在,流媒體的播放不會受到明顯影響,所述下載任務(wù)管理十字鏈表 也并不需要執(zhí)行跳轉(zhuǎn)操作。圖7是本發(fā)明的基于十字鏈表數(shù)據(jù)結(jié)構(gòu)的P2P流媒體下載方法的跳轉(zhuǎn)操作處理方 法的一種實(shí)施方案流程圖,如圖7所示,所述步驟400,包括下列步驟步驟410.所述用戶節(jié)點(diǎn)清空所述下載隊列中的所有三元組;步驟420.所述用戶節(jié)點(diǎn)向所有已確定的資源節(jié)點(diǎn)發(fā)送取消下載請求;步驟430.所述用戶節(jié)點(diǎn)從用戶選擇的新時刻,或直播系統(tǒng)給定的新時刻起采用步驟100的方法重新建立十字鏈表調(diào)度數(shù)據(jù)結(jié)構(gòu)。相應(yīng)于本發(fā)明的基于十字鏈表的P2P流媒體下載方法,還提供一種基于十字鏈表的P2P流媒體下載系統(tǒng),圖8是本發(fā)明基于十字鏈表的P2P流媒體下載系統(tǒng)的結(jié)構(gòu)示意圖, 如圖8所示,所述系統(tǒng),包括鄰居節(jié)點(diǎn)管理模塊1,用于為用戶節(jié)點(diǎn)維護(hù)一個采用十字鏈表數(shù)據(jù)結(jié)構(gòu)存儲的鄰 居節(jié)點(diǎn)下載任務(wù)隊列,并根據(jù)數(shù)據(jù)分片為用戶節(jié)點(diǎn)維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將 兩個隊列存儲于用戶節(jié)點(diǎn)本身;所述為用戶節(jié)點(diǎn)維護(hù)的兩個下載任務(wù)隊列的結(jié)構(gòu),在前面已經(jīng)詳細(xì)說明,在此不
再一一贅述。 下載調(diào)度模塊2,用于根據(jù)所述用戶節(jié)點(diǎn)在擁有數(shù)據(jù)分片…的鄰居節(jié)點(diǎn)集合中,選 擇所述用戶節(jié)點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)下載隊列中所有任務(wù)的 估計完成時間Tf (Pi)最小的鄰居節(jié)點(diǎn)Pi,將該下載任務(wù)交給該節(jié)點(diǎn)Pi完成所述數(shù)據(jù)分片的 下載任務(wù),同時通過鄰居節(jié)點(diǎn)管理模塊1更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載 任務(wù)隊列。其中,所述下載調(diào)度模塊2,包括鄰居節(jié)點(diǎn)選擇模塊21,用于所述用戶節(jié)點(diǎn)在擁有…的鄰居節(jié)點(diǎn)中,選擇其下載隊 列所有任務(wù)的估計完成時間Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi安排下載該數(shù)據(jù)分片的任務(wù);下載任務(wù)建立模塊22,用于建立相應(yīng)數(shù)據(jù)下載任務(wù)三元組<Pi; bj; Ti. j>記錄所述 下載任務(wù);更新模塊23,用于更新所述下載任務(wù)三元組<Pi; bj, Ti. J>中所述鄰居節(jié)點(diǎn)對應(yīng)的 下載任務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對應(yīng)的 下載任務(wù)隊列BQ (bp的最早完成時刻Tb (bp。較佳地,所述基于十字鏈表的P2P流媒體載系統(tǒng),還包括時間更新模塊3,用于周期性更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下 載任務(wù)隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對應(yīng)的下 載任務(wù)隊列B(Kbj)的最早完成時刻Tb (bp。其中,所述時間更新模塊3,包括下載速率更新子模塊31,用于在間隔時間內(nèi)估計并更新各個所述鄰居節(jié)點(diǎn)到所述 用戶節(jié)點(diǎn)的下載速率V(Pi);下載完成時刻更新子模塊32.用于根據(jù)所述估算的下載速率V(Pi),估算各個所述 下載任務(wù)三元組的估計下載完成時刻IYj ;更新子模塊33,用于更新各個下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù)隊 列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新各個下載任務(wù)三元組中所述數(shù)據(jù)分 片對應(yīng)的下載任務(wù)隊列BQ (bp的最早完成時刻記錄Tb (bp ;判斷模塊34.用于判斷是否存在數(shù)據(jù)分片bk在預(yù)計播放時刻之前無法到達(dá),若 是,則觸發(fā)鄰居節(jié)點(diǎn)管理模塊1和下載調(diào)度模塊2重新調(diào)度數(shù)據(jù)分片bk的下載任務(wù)。較佳地,所述基于十字鏈表的P2P流媒體下載系統(tǒng),還包括跳轉(zhuǎn)模塊4,用于根據(jù)用戶的跳轉(zhuǎn)要求,執(zhí)行點(diǎn)播跳轉(zhuǎn)操作;其中,所述跳轉(zhuǎn)模塊4,包括跳轉(zhuǎn)處理模塊41,用于清空所述下載隊列中的所有三元組,并向所有已確定的鄰 居節(jié)點(diǎn)發(fā)送取消下載請求;
跳轉(zhuǎn)下載模塊42,用于根據(jù)用戶選擇的新時刻,或直播系統(tǒng)給定的新時刻起重新 建立十字鏈表調(diào)度數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的有益效果在于本發(fā)明提供的基于十字鏈表的P2P流媒體下載方法和系統(tǒng),能夠在二維空間中清 晰描述各個下載任務(wù)的關(guān)聯(lián)關(guān)系,提高P2P流媒體平臺的數(shù)據(jù)分片共享與傳播效率。通過結(jié)合附圖對本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征對本領(lǐng)域的技術(shù)人員而言是顯而易見的。以上對本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只是示例性的,并不用于對本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行解釋。
權(quán)利要求
一種基于十字鏈表的P2P流媒體下載方法,其特征在于,所述方法,包括下列步驟步驟100.用戶節(jié)點(diǎn)采用十字鏈表數(shù)據(jù)結(jié)構(gòu)為每個鄰居節(jié)點(diǎn)維護(hù)一個鄰居節(jié)點(diǎn)下載任務(wù)隊列,為每個數(shù)據(jù)分片維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將兩個隊列存儲于用戶節(jié)點(diǎn)本身;步驟200.所述用戶節(jié)點(diǎn)在擁有預(yù)備下載的數(shù)據(jù)分片的鄰居節(jié)點(diǎn)集合中,選擇所述用戶節(jié)點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)的下載任務(wù)隊列中所有任務(wù)的估計完成時間最小的鄰居節(jié)點(diǎn),將該下載任務(wù)交給該節(jié)點(diǎn)完成所述數(shù)據(jù)分片的下載任務(wù),同時更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載任務(wù)隊列。
2.根據(jù)權(quán)利要求1所述的基于十字鏈表的P2P流媒體下載方法,其特征在于,所述下載 任務(wù)通過下載任務(wù)三元組記錄,所述下載任務(wù)三元組為<Pi; bj; Υ」>,其中Pi為資源節(jié)點(diǎn)的 節(jié)點(diǎn)標(biāo)識,bj為準(zhǔn)備下載的數(shù)據(jù)分片的標(biāo)識,Tlj為該任務(wù)的預(yù)計完成時刻;其中TLj的計算方法為Tf (PiHblocIsizeZV(Pi),其中block_Size為數(shù)據(jù)分片的大 小,V(Pi)為資源節(jié)點(diǎn)Pi到用戶節(jié)點(diǎn)的數(shù)據(jù)傳輸速率。
3.根據(jù)權(quán)利要求1所述的基于十字鏈表的P2P流媒體下載方法,其特征在于,所述步驟 200,包括下列步驟步驟210.所述用戶節(jié)點(diǎn)在擁有準(zhǔn)備下載的數(shù)據(jù)分片的鄰居節(jié)點(diǎn)中,選擇其下載隊列 所有任務(wù)的估計完成時間最小的鄰居節(jié)點(diǎn)安排下載該數(shù)據(jù)分片的任務(wù);步驟220.所述用戶節(jié)點(diǎn)建立相應(yīng)數(shù)據(jù)下載任務(wù)三元組記錄所述下載任務(wù);步驟230.所述用戶節(jié)點(diǎn)更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù)隊 列的所有任務(wù)的估計完成時刻;同時更新所述數(shù)據(jù)分片對應(yīng)的下載任務(wù)隊列的最早完成時 刻。
4.根據(jù)權(quán)利要求2所述的基于十字鏈表的P2P流媒體下載方法,其特征在于,所述方 法,還包括下列步驟步驟300.所述用戶節(jié)點(diǎn)周期性更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載 任務(wù)隊列的所有任務(wù)的估計完成時刻;同時更新所述預(yù)備下載的數(shù)據(jù)分片對應(yīng)的下載任務(wù) 隊列的最早完成時刻,返回步驟200。
5.根據(jù)權(quán)利要求4所述的基于十字鏈表的P2P流媒體下載方法,其特征在于,所述步驟 300,包括下列步驟步驟310.所述用戶節(jié)點(diǎn)在間隔時間內(nèi)估計并更新各個所述鄰居節(jié)點(diǎn)到所述用戶節(jié)點(diǎn) 的下載速率;步驟320.所述用戶節(jié)點(diǎn)根據(jù)所述估算的下載速率,估算各個所述下載任務(wù)三元組的 估計下載完成時刻;步驟330.所述用戶節(jié)點(diǎn)更新各個下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù)隊 列的所有任務(wù)的估計完成時刻;同時更新各個下載任務(wù)三元組中所述數(shù)據(jù)分片對應(yīng)的下載 任務(wù)隊列的最早完成時刻記錄;步驟340.判斷是否存在待下載的數(shù)據(jù)分片在預(yù)計播放時刻之前無法到達(dá),若是,則根 據(jù)步驟100至步驟200所述方法重新調(diào)度待下載的數(shù)據(jù)分片的下載任務(wù)。
6.根據(jù)權(quán)利要求1所述的基于十字鏈表的P2P流媒體下載方法,其特征在于,在P2P點(diǎn) 播系統(tǒng)中用戶節(jié)點(diǎn)在發(fā)現(xiàn)用戶進(jìn)行跳轉(zhuǎn)操作時,或在P2P直播系統(tǒng)中用戶節(jié)點(diǎn)的節(jié)目時延較大時,所述方法,還包括下列步驟步驟400.根據(jù)用戶的跳轉(zhuǎn)要求,執(zhí)行點(diǎn)播跳轉(zhuǎn)操作。
7.根據(jù)權(quán)利要求2所述的基于十字鏈表的P2P流媒體下載方法,其特征在于,所述步驟 400,包括下列步驟步驟410.所述用戶節(jié)點(diǎn)清空所述下載隊列中的所有下載任務(wù)三元組;步驟420.所述用戶節(jié)點(diǎn)向所有已確定的資源節(jié)點(diǎn)發(fā)送取消下載請求;步驟430.所述用戶節(jié)點(diǎn)從用戶選擇的新時刻,或直播系統(tǒng)給定的新時刻起采用步驟 100的方法重新建立十字鏈表數(shù)據(jù)結(jié)構(gòu)的下載任務(wù)隊列。
8.一種基于十字鏈表的P2P流媒體下載系統(tǒng),其特征在于,所述系統(tǒng),包括鄰居節(jié)點(diǎn)管理模塊,用于為用戶節(jié)點(diǎn)維護(hù)一個采用十字鏈表數(shù)據(jù)結(jié)構(gòu)存儲的鄰居節(jié)點(diǎn) 下載任務(wù)隊列,并根據(jù)數(shù)據(jù)分片為用戶節(jié)點(diǎn)維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將兩個隊 列存儲于用戶節(jié)點(diǎn)本身;下載調(diào)度模塊,用于根據(jù)所述用戶節(jié)點(diǎn)在擁有數(shù)據(jù)分片b的鄰居節(jié)點(diǎn)集合中,選擇所 述用戶節(jié)點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)下載隊列中所有任務(wù)的估計 完成時間Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi,將該下載任務(wù)交給該節(jié)點(diǎn)Pi完成所述數(shù)據(jù)分片的下載 任務(wù),通過所述鄰居節(jié)點(diǎn)管理模塊更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載任務(wù)隊 列。
9.根據(jù)權(quán)利要求8所述的基于十字鏈表的P2P流媒體下載系統(tǒng),其特征在于,所述下載 調(diào)度模塊,包括鄰居節(jié)點(diǎn)選擇模塊,用于所述用戶節(jié)點(diǎn)在擁有h的鄰居節(jié)點(diǎn)中,選擇其下載隊列所有 任務(wù)的估計完成時間Tf(Pi)最小的鄰居節(jié)點(diǎn)Pi安排下載該數(shù)據(jù)分片的任務(wù);下載任務(wù)建立模塊,用于建立相應(yīng)數(shù)據(jù)下載任務(wù)三元組<Pi,bj, Tu>記錄所述下載任務(wù);更新模塊,用于更新所述下載任務(wù)三元組<Pi,bj,T, j>中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù) 隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片h對應(yīng)的下載任務(wù) 隊列BQ (bj)的最早完成時刻Tb (bj)。
10.根據(jù)權(quán)利要求8所述的基于十字鏈表的P2P流媒體下載系統(tǒng),其特征在于,所述系 統(tǒng),還包括時間更新模塊,用于周期性更新所述下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù) 隊列Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新所述數(shù)據(jù)分片…對應(yīng)的下載任務(wù) 隊列BQ (bj)的最早完成時刻Tb (bj)。
11.根據(jù)權(quán)利要求10所述的基于十字鏈表的P2P流媒體下載系統(tǒng),其特征在于,所述時 間更新模塊,包括下載速率更新子模塊,用于在間隔時間內(nèi)估計并更新各個所述鄰居節(jié)點(diǎn)到所述用戶節(jié) 點(diǎn)的下載速率V(Pi);下載完成時刻更新子模塊,用于根據(jù)所述估算的下載速率ν (Pi),估算各個所述下載任 務(wù)三元組的估計下載完成時刻IYj ;更新子模塊,用于更新各個下載任務(wù)三元組中所述鄰居節(jié)點(diǎn)對應(yīng)的下載任務(wù)隊列 Q(Pi)的所有任務(wù)的估計完成時刻Tf(Pi);同時更新各個下載任務(wù)三元組中所述數(shù)據(jù)分片對應(yīng)的下載任務(wù)隊列BQ (bp的最早完成時刻記錄Tb (bp ;判斷模塊,用于判斷是否存在數(shù)據(jù)分片bk在預(yù)計播放時刻之前無法到達(dá),若是,則觸發(fā) 所述鄰居節(jié)點(diǎn)管理模塊和下載調(diào)度模塊重新調(diào)度數(shù)據(jù)分片bk的下載任務(wù)。
12.根據(jù)權(quán)利要求10所述的基于十字鏈表的P2P流媒體下載系統(tǒng),其特征在于,所述系 統(tǒng),包括跳轉(zhuǎn)模塊,用于根據(jù)用戶的跳轉(zhuǎn)要求,執(zhí)行點(diǎn)播跳轉(zhuǎn)操作。
13.根據(jù)權(quán)利要求12所述的基于十字鏈表的P2P流媒體下載系統(tǒng),其特征在于,所述跳 轉(zhuǎn)模塊,包括跳轉(zhuǎn)處理模塊,用于清空所述下載隊列中的所有三元組,并向所有已確定的鄰居節(jié)點(diǎn) 發(fā)送取消下載請求;跳轉(zhuǎn)下載模塊,用于根據(jù)用戶選擇的新時刻,或直播系統(tǒng)給定的新時刻起重新建立十 字鏈表調(diào)度數(shù)據(jù)結(jié)構(gòu)。
全文摘要
本發(fā)明公開了一種基于十字鏈表的P2P流媒體下載方法和系統(tǒng)。所述方法,包括下列步驟用戶節(jié)點(diǎn)采用十字鏈表數(shù)據(jù)結(jié)構(gòu)為每個鄰居節(jié)點(diǎn)維護(hù)一個鄰居節(jié)點(diǎn)下載任務(wù)隊列,為每個數(shù)據(jù)分片維護(hù)一個數(shù)據(jù)分片下載任務(wù)隊列,并將兩個隊列存儲于用戶節(jié)點(diǎn)本身;所述用戶節(jié)點(diǎn)在擁有預(yù)備下載的數(shù)據(jù)分片的鄰居節(jié)點(diǎn)集合中,選擇所述用戶節(jié)點(diǎn)本地所維護(hù)的下載任務(wù)十字鏈表中相應(yīng)鄰居節(jié)點(diǎn)的下載任務(wù)隊列中所有任務(wù)的估計完成時間最小的鄰居節(jié)點(diǎn),將該下載任務(wù)交給該節(jié)點(diǎn)完成所述數(shù)據(jù)分片的下載任務(wù),同時更新所述鄰居節(jié)點(diǎn)下載任務(wù)隊列和數(shù)據(jù)分片下載任務(wù)隊列。
文檔編號H04L29/08GK101841557SQ20101011715
公開日2010年9月22日 申請日期2010年3月2日 優(yōu)先權(quán)日2010年3月2日
發(fā)明者馮凱, 劉悅, 劉祥濤, 李靜遠(yuǎn), 林思明, 王雷, 程學(xué)旗 申請人:中國科學(xué)院計算技術(shù)研究所