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