專利名稱:具有高播放連續(xù)度的p2p流媒體系統(tǒng)的設(shè)計(jì)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法,它的使用具有能使系統(tǒng)以較低的額外開銷保持高播放連續(xù)度的效果。
背景技術(shù):
目前,基于Gossip協(xié)議的P2P流媒體系統(tǒng)已成為P2P流媒體系統(tǒng)的主流。例如Journal of Software,2006,18(2)391-399(軟件學(xué)報(bào),2006-18(2)391-399)公開了一種基于P2P(peer-to-peer)網(wǎng)絡(luò)的大規(guī)模視頻直播系統(tǒng)GridMedia.該系統(tǒng)采用Gossip協(xié)議構(gòu)建無結(jié)構(gòu)的應(yīng)用層覆蓋網(wǎng)絡(luò),每個(gè)節(jié)點(diǎn)可以獨(dú)立地選擇自己的伙伴節(jié)點(diǎn)。在覆蓋網(wǎng)絡(luò)上,每個(gè)節(jié)點(diǎn)通過一種推拉結(jié)合的流傳輸策略從鄰居節(jié)點(diǎn)獲取數(shù)據(jù)。
雖然改進(jìn)的Gossip協(xié)議能更為明智地獲取數(shù)據(jù),但它并不能夠克服Gossip協(xié)議固有的缺點(diǎn)數(shù)據(jù)傳播的隨機(jī)性與不確定性,因此,很難保證從媒體數(shù)據(jù)源發(fā)布的每個(gè)數(shù)據(jù)分片能按時(shí)傳播到每個(gè)結(jié)點(diǎn),導(dǎo)致當(dāng)前基于Gossip協(xié)議的P2P流媒體系統(tǒng)普遍存在著播放連續(xù)度較低的問題。播放連續(xù)度一般被認(rèn)為是一個(gè)流媒體系統(tǒng)最重要的屬性,不連續(xù)的播放效果往往要比低數(shù)據(jù)率造成的低畫質(zhì)效果要更損害觀看體驗(yàn)。目前,未見有效保持P2P流媒體系統(tǒng)高播放連續(xù)度的設(shè)計(jì)方案。
發(fā)明內(nèi)容
本發(fā)明目的是提出一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方案,通過采用基于DHT(Distributed Hash Table即分布式哈希表,一種分布式存儲(chǔ)方法)的數(shù)據(jù)預(yù)取方法來彌補(bǔ)Gossip協(xié)議數(shù)據(jù)傳播隨機(jī)性的缺陷,從而設(shè)計(jì)出一個(gè)具有高播放連續(xù)度的P2P流媒體系統(tǒng)。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法案,包括以下步驟 1、組織DHT,將系統(tǒng)中所有結(jié)點(diǎn)按照DHT的方法分布式地組織到一個(gè)P2P覆蓋網(wǎng)上; 2、有目的的數(shù)據(jù)存儲(chǔ),即讓每個(gè)結(jié)點(diǎn)存儲(chǔ)k個(gè)數(shù)據(jù)分片,k是一個(gè)較小的常數(shù),所存儲(chǔ)的數(shù)據(jù)分片id與結(jié)點(diǎn)的ID密切相關(guān); 3、數(shù)據(jù)調(diào)度算法,即每個(gè)結(jié)點(diǎn)從其建立連接的網(wǎng)絡(luò)鄰居中周期性地獲取數(shù)據(jù)可用性信息,從而規(guī)劃數(shù)據(jù)分片的獲取過程; 4、數(shù)據(jù)預(yù)取算法,即系統(tǒng)中每個(gè)結(jié)點(diǎn)不斷預(yù)測哪些數(shù)據(jù)分片很可能被數(shù)據(jù)調(diào)度算法遺漏,如果有認(rèn)為遺漏的數(shù)據(jù)分片,就啟動(dòng)數(shù)據(jù)預(yù)取算法快速查找并獲得它們,從而保證連續(xù)播放; 5、結(jié)束,當(dāng)流媒體播放結(jié)束時(shí)終止整個(gè)過程。
步驟(1)中,所述DHT包括 (1)連接鄰居包含無結(jié)構(gòu)P2P覆蓋網(wǎng)上M個(gè)鄰居;當(dāng)前結(jié)點(diǎn)與這M個(gè)鄰居建立TCP連接,周期性的數(shù)據(jù)交換僅發(fā)生在當(dāng)前結(jié)點(diǎn)和其連接鄰居之間;如果當(dāng)前結(jié)點(diǎn)發(fā)現(xiàn)某個(gè)鄰居已失效或者給自己提供的數(shù)據(jù)很少,即相比于其它鄰居平均提供給自身的數(shù)據(jù)量不到五分之一,就從監(jiān)聽結(jié)點(diǎn)中選取時(shí)延最小的結(jié)點(diǎn)來替換這個(gè)鄰居; (2)DHT結(jié)點(diǎn)包含logN個(gè)按層排列的DHT結(jié)點(diǎn);N是覆蓋網(wǎng)最多能容納的結(jié)點(diǎn)個(gè)數(shù);對于某個(gè)結(jié)點(diǎn)n來說,n是該結(jié)點(diǎn)的ID,它的第i層DHT結(jié)點(diǎn)唯一需要滿足的條件是必須落在區(qū)間[n+2i-1,n+2i)中,所有結(jié)點(diǎn)的ID均是模N后的結(jié)果;所有的DHT結(jié)點(diǎn)周期性地用監(jiān)聽結(jié)點(diǎn)來更新; (3)監(jiān)聽結(jié)點(diǎn)包含H個(gè)最近監(jiān)聽到的網(wǎng)絡(luò)結(jié)點(diǎn);每個(gè)結(jié)點(diǎn)不斷地監(jiān)聽經(jīng)過自身的路由消息,用路由消息中的結(jié)點(diǎn)信息更新監(jiān)聽結(jié)點(diǎn)的信息;連接鄰居和DHT結(jié)點(diǎn)都是根據(jù)監(jiān)聽結(jié)點(diǎn)來更新的,而監(jiān)聽結(jié)點(diǎn)是通過本地監(jiān)聽來更新。
所述步驟(2)中,對一個(gè)結(jié)點(diǎn)n,設(shè)其在DHT中最近的結(jié)點(diǎn)是n1,則n最終需要在其按需數(shù)據(jù)備份中保存id符合如下公式的數(shù)據(jù)hash(id×i)%N∈[n,n1),i=1,2,Λk.,hash()是一個(gè)普通的安全散列函數(shù),%代表取模操作,這樣每個(gè)數(shù)據(jù)分片最終會(huì)備份在k個(gè)不同的結(jié)點(diǎn)中; 結(jié)點(diǎn)n想離開系統(tǒng),它首先找到逆時(shí)針方向離n最近的結(jié)點(diǎn),然后將自身數(shù)據(jù)備份中的數(shù)據(jù)移交給n′來保存n′,所述逆時(shí)針是指系統(tǒng)中各個(gè)節(jié)點(diǎn)構(gòu)成的環(huán)狀網(wǎng)絡(luò)的逆時(shí)針。
步驟(3)中,規(guī)劃數(shù)據(jù)分片的獲取過程 綜合考慮每個(gè)數(shù)據(jù)分片的緊迫性與稀缺性,通過公式(1)到(3)計(jì)算出每個(gè)數(shù)據(jù)分片的獲取優(yōu)先權(quán) 首先計(jì)算數(shù)據(jù)分片Di的緊迫性 那么 將數(shù)據(jù)分片Di的稀缺性理解為Di在其所有提供者的緩存中都被替換掉的概率 數(shù)據(jù)分片Di的獲取優(yōu)先權(quán)priorityi=max{urgencyi,rarityi}(3) 計(jì)算出每個(gè)數(shù)據(jù)分片的獲取優(yōu)先權(quán)后,數(shù)據(jù)調(diào)度器將需要獲取的數(shù)據(jù)分片按優(yōu)先權(quán)降序排列,獲取數(shù)據(jù)分片按此優(yōu)先權(quán)順序; 上述Ri是數(shù)據(jù)分片Di的最大獲取速率、idi數(shù)據(jù)分片Di的id、idplay是當(dāng)前正在播放的數(shù)據(jù)分片的id、ti是數(shù)據(jù)分片Di的過期時(shí)間、
是從第j個(gè)提供者那里獲取Di的速率、urgencyi是數(shù)據(jù)分片Di的緊迫性、rarityi是數(shù)據(jù)分片Di的稀缺性、priorityi是數(shù)據(jù)分片Di的獲取優(yōu)先權(quán)、B是緩存大小、p是每秒播放的數(shù)據(jù)分片數(shù)目、
是數(shù)據(jù)分片Di在第j個(gè)提供者的緩存中的位置。
所述步驟(4)中,數(shù)據(jù)預(yù)取算法的流程 設(shè)被預(yù)測為遺漏的數(shù)據(jù)分片是D1,D2,Λ,Dm,對每個(gè)數(shù)據(jù)Di,首先需要定位到k個(gè),也可能不足k個(gè),備份了Di的結(jié)點(diǎn),然后選擇能以最大發(fā)送速率傳送Di的結(jié)點(diǎn)作為Di的預(yù)取提供者; 當(dāng)結(jié)點(diǎn)n向一個(gè)應(yīng)當(dāng)備份Di的結(jié)點(diǎn)n0索取Di時(shí),有可能n0也沒有獲得Di,這個(gè)概率記為Pfail,一般認(rèn)為n和n0有等價(jià)的概率獲得Di,所以平均來說那么n從k個(gè)應(yīng)當(dāng)備份Di的結(jié)點(diǎn)處都不能獲得Di的概率是
這個(gè)概率是相當(dāng)?shù)偷模越^大多數(shù)情況下遺漏數(shù)據(jù)的預(yù)取操作都能成功。
數(shù)據(jù)預(yù)取算法包含了一套稱為“緊迫界線”的機(jī)制讓每個(gè)結(jié)點(diǎn)動(dòng)態(tài)、自適應(yīng)地預(yù)測可能被數(shù)據(jù)調(diào)度算法遺漏的數(shù)據(jù)分片,有效地避免不必要的數(shù)據(jù)預(yù)取操作,所述“緊迫界線”的機(jī)制的基本工作原理是, 緩存中的數(shù)據(jù)分片被緊迫界線分成兩部分,即緊迫部分和不急于獲取部分;僅是緊迫部分的尚未獲得的分片被預(yù)測為可能遺漏; 緊迫界線機(jī)制的基本公式idurgent=idhead+α×B 所有尚未獲得的id小于idurgent的數(shù)據(jù)分片都被預(yù)測為遺漏數(shù)據(jù),它們的總數(shù)目為Nmiss,根據(jù)Nmiss與參數(shù)l的關(guān)系,數(shù)據(jù)預(yù)取算法采取不同行為 情形1如果Nmiss=0,不需要啟動(dòng)數(shù)據(jù)預(yù)取算法; 情形2如果Nmiss≤l,啟動(dòng)數(shù)據(jù)預(yù)取算法并行獲取所有遺漏的數(shù)據(jù)分片; 情形3如果Nmiss>l,不啟動(dòng)數(shù)據(jù)預(yù)取算法; 上述α是緩存的緊迫比率、B是緩存大小、idhead是緩存頭部的數(shù)據(jù)分片的id、idurgent是緊迫界線對應(yīng)的數(shù)據(jù)分片的id、Nmiss是被預(yù)測為遺漏的數(shù)據(jù)分片數(shù)目、1是數(shù)據(jù)預(yù)取算法在一個(gè)調(diào)度周期中最多能獲取1個(gè)遺漏分片。
參數(shù)α的計(jì)算方法 在一個(gè)調(diào)度周期τ中,數(shù)據(jù)預(yù)取算法必須為按期獲得遺漏分片的過程分配足夠的時(shí)間,也就是說必須滿足α×B>p×τ和α×B>p×tfetch,即這就是α的下限和初始值。隨著時(shí)間的推移,在出現(xiàn)下面兩種情況時(shí)α需要被動(dòng)態(tài)更新 情形1——數(shù)據(jù)過期如果發(fā)現(xiàn)有預(yù)取的數(shù)據(jù)獲得時(shí)已經(jīng)過期,說明為預(yù)取操作分配的時(shí)間不足,因此必須增加緩存緊迫數(shù)據(jù)的比例, 情形2——數(shù)據(jù)重復(fù)如果發(fā)現(xiàn)有預(yù)取的數(shù)據(jù)和數(shù)據(jù)調(diào)度算法按期取得的數(shù)據(jù)重復(fù),說明預(yù)測為遺漏的數(shù)據(jù)比例過大,因此必須減少緩存緊迫數(shù)據(jù)的比例,其中thop為路由一跳的時(shí)間估計(jì)值,tfetch為一次預(yù)取操作的時(shí)間估計(jì)值。
所述步驟(4)中預(yù)測可能被數(shù)據(jù)調(diào)度算法遺漏的數(shù)據(jù)分片按照上述的“緊迫界限”機(jī)制進(jìn)行。
本方法首先將系統(tǒng)結(jié)點(diǎn)組織到一個(gè)輕量級的混合式P2P覆蓋網(wǎng)上,此覆蓋網(wǎng)組合了無結(jié)構(gòu)P2P覆蓋網(wǎng)和結(jié)構(gòu)化P2P覆蓋網(wǎng),結(jié)構(gòu)化P2P覆蓋網(wǎng)也就是用來實(shí)現(xiàn)高效數(shù)據(jù)定位的DHT。之所以稱此混合式P2P網(wǎng)絡(luò)是輕量級的,因?yàn)樗С值腄HT是松散組織的,并且其中結(jié)點(diǎn)狀態(tài)的更新主要依靠監(jiān)聽經(jīng)過的路由消息,所以維護(hù)開銷很低。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)是它是純分布式的方法,實(shí)現(xiàn)起來十分簡單并且可以方便地嵌入到現(xiàn)有P2P流媒體系統(tǒng)中,它能使系統(tǒng)中每個(gè)結(jié)點(diǎn)維持穩(wěn)定的高播放連續(xù)度,并且?guī)淼念~外開銷非常低。
四
圖1 Peer Table結(jié)構(gòu)示意圖 圖2緊迫界線機(jī)制基本原理示意圖 五具體實(shí)施例方式 下面結(jié)合附圖與具體實(shí)施方式
對本發(fā)明作進(jìn)一步說明。
本發(fā)明可分為4個(gè)步驟組織DHT、有目的的數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)調(diào)度算法、數(shù)據(jù)預(yù)取算法。
1組織DHT 本發(fā)明所設(shè)計(jì)的P2P流媒體系統(tǒng)稱為ContinuStreaming系統(tǒng),該系統(tǒng)中每個(gè)結(jié)點(diǎn)維護(hù)一張稱為“Peer Table”的表,該表正是分布式Hash表的基礎(chǔ)結(jié)構(gòu),如圖1所示,它由3個(gè)部分組成 (1)連接鄰居(Connected Neighbors)包含無結(jié)構(gòu)P2P覆蓋網(wǎng)上M個(gè)鄰居。當(dāng)前結(jié)點(diǎn)與這M個(gè)鄰居建立TCP連接,周期性的數(shù)據(jù)交換僅發(fā)生在當(dāng)前結(jié)點(diǎn)和其連接鄰居之間。如果當(dāng)前結(jié)點(diǎn)發(fā)現(xiàn)某個(gè)鄰居已失效或者給自己提供的數(shù)據(jù)很少,就從監(jiān)聽結(jié)點(diǎn)中選取時(shí)延最小的結(jié)點(diǎn)來替換這個(gè)鄰居。
(2)DHT結(jié)點(diǎn)(DHT Peers)包含logN個(gè)按層(Level)排列的DHT結(jié)點(diǎn)。N是覆蓋網(wǎng)最多能容納的結(jié)點(diǎn)個(gè)數(shù)。對于某個(gè)結(jié)點(diǎn)n來說(n是該結(jié)點(diǎn)的ID),它的第i層DHT結(jié)點(diǎn)唯一需要滿足的條件是必須落在區(qū)間[n+2i-1,n+2i)中,所有結(jié)點(diǎn)的ID均是模N后的結(jié)果??梢娊Y(jié)點(diǎn)n在選擇它的DHT結(jié)點(diǎn)時(shí)擁有很高的靈活性,所以這里設(shè)計(jì)的DHT是松散組織的。所有的DHT結(jié)點(diǎn)周期性地用監(jiān)聽結(jié)點(diǎn)來更新。
(3)監(jiān)聽結(jié)點(diǎn)(Overheard Nodes)包含H個(gè)最近監(jiān)聽到的網(wǎng)絡(luò)結(jié)點(diǎn)。根據(jù)模擬實(shí)驗(yàn)經(jīng)驗(yàn),H=20通常就足夠了。每個(gè)結(jié)點(diǎn)不斷地監(jiān)聽經(jīng)過自身的路由消息,用路由消息中的結(jié)點(diǎn)信息更新監(jiān)聽結(jié)點(diǎn)的信息。
由上可見,連接鄰居和DHT結(jié)點(diǎn)都是根據(jù)監(jiān)聽結(jié)點(diǎn)來更新的,而監(jiān)聽結(jié)點(diǎn)又是通過本地監(jiān)聽來更新,本地監(jiān)聽操作不需要額外的通信開銷,因此本方法所設(shè)計(jì)的混合式P2P覆蓋網(wǎng)維護(hù)開銷非常低。
如果結(jié)點(diǎn)A想要加入覆蓋網(wǎng),A首先需要聯(lián)系“會(huì)合服務(wù)器”(RendezvousServer),會(huì)合服務(wù)器的IP地址是公開的,它維護(hù)系統(tǒng)結(jié)點(diǎn)的列表。會(huì)合服務(wù)器給A分配一個(gè)獨(dú)一無二的ID,并給A發(fā)送一張很短的列表,其中包含著與A的ID最相近的若干現(xiàn)存結(jié)點(diǎn)的信息。假定A收到的列表是{B,C,D,E},A首先使用UDP數(shù)據(jù)報(bào)給B、C、D、E發(fā)送PING消息來探測哪個(gè)結(jié)點(diǎn)離A最近且在線,結(jié)點(diǎn)間的距離(也就是時(shí)延)通過RTT/2來近似估計(jì),RTT是探測消息的往返時(shí)間(Round Trip Time)。如果B、C、D都在線而E已失效,且B是其中離A最近的結(jié)點(diǎn),那么A就獲取B的Peer Table作為A的Peer Table的基礎(chǔ),同時(shí)通知B、C、D它的加入,并且通知會(huì)合服務(wù)器E已失效。
2有目的的數(shù)據(jù)存儲(chǔ) 對一個(gè)結(jié)點(diǎn)n,假設(shè)其Peer Table中最近的結(jié)點(diǎn)是n1,那么n最終需要在其按需數(shù)據(jù)備份中保存id符合如下公式的數(shù)據(jù)hash(id×i)%N∈[n,n1),i=1,2,Λk.,hash()是一個(gè)普通的安全散列函數(shù),%代表取模操作,這樣每個(gè)數(shù)據(jù)分片最終會(huì)備份在k個(gè)不同的結(jié)點(diǎn)中。使用id×i來散列是為了平衡負(fù)載,如果使用id+i來散列,那么連續(xù)的數(shù)據(jù)分片可能會(huì)聚集在同一個(gè)結(jié)點(diǎn)上導(dǎo)致該結(jié)點(diǎn)負(fù)載過重。如果結(jié)點(diǎn)n想離開系統(tǒng),它應(yīng)首先找到逆時(shí)針方向離n最近的結(jié)點(diǎn)n′,然后將自身數(shù)據(jù)備份中的數(shù)據(jù)移交給n′來保存。如果結(jié)點(diǎn)n離開系統(tǒng)是突然的,數(shù)據(jù)移交就不可能發(fā)生,然而考慮到隨著時(shí)間的流逝,n所備份的數(shù)據(jù)變得越來越陳舊和無意義,所以n的突然離開并不會(huì)給系統(tǒng)帶來多少影響。
3數(shù)據(jù)調(diào)度算法 每個(gè)結(jié)點(diǎn)和其連接鄰居周期性地交換各自緩存中的數(shù)據(jù)信息,交換的周期稱為“調(diào)度周期”,符號τ。在本例中設(shè)計(jì)一個(gè)數(shù)據(jù)調(diào)度器,由它來調(diào)度數(shù)據(jù)分片的搜尋與獲取。每個(gè)調(diào)度周期中,結(jié)點(diǎn)的數(shù)據(jù)調(diào)度器首先查明連接鄰居的緩存中有哪些數(shù)據(jù)分片可用,“可用”指的是這些數(shù)據(jù)分片是當(dāng)前結(jié)點(diǎn)還沒得到的。數(shù)據(jù)調(diào)度過程所涉及的各項(xiàng)參數(shù)列舉在表1中?,F(xiàn)有技術(shù)中,可以完成所述數(shù)據(jù)調(diào)度器功能的軟件模塊比較常見,在此不作進(jìn)一步限制。
表1 數(shù)據(jù)調(diào)度算法的相關(guān)參數(shù)
綜合考慮每個(gè)數(shù)據(jù)分片的緊迫性與稀缺性,數(shù)據(jù)調(diào)度器通過公式(1)到(3)計(jì)算出每個(gè)數(shù)據(jù)分片的獲取優(yōu)先權(quán)。首先計(jì)算數(shù)據(jù)分片Di的緊迫性 那么 我們將數(shù)據(jù)分片Di的稀缺性理解為Di在其所有提供者的緩存中都被替換掉的概率,這比過去的文獻(xiàn)中普遍將Di的稀缺性理解為要更為合理 數(shù)據(jù)分片Di的獲取優(yōu)先權(quán)priorityi=max{urgencyi,rarityi}(3) 計(jì)算出每個(gè)數(shù)據(jù)分片的獲取優(yōu)先權(quán)后,數(shù)據(jù)調(diào)度器將需要獲取的數(shù)據(jù)分片按優(yōu)先權(quán)降序排列,比如排列成形如D1,D2,Λ,Dm。對一個(gè)數(shù)據(jù)分片Di來說,可能有多個(gè)鄰居能提供Di,通常會(huì)選擇能夠最快傳送Di的鄰居作為Di的提供者。然而,這樣的選擇方式可能會(huì)出現(xiàn)沖突,比如當(dāng)兩個(gè)數(shù)據(jù)分片選擇了同一個(gè)鄰居作為提供者時(shí),其中一個(gè)數(shù)據(jù)分片必須等待或者重選提供者。因此,為數(shù)據(jù)分片選擇合適的提供者可表述為如下調(diào)度問題如何為每一個(gè)數(shù)據(jù)分片選擇一個(gè)合適的提供者,以使得過期或被替換的數(shù)據(jù)分片數(shù)目最少?實(shí)際上,即使是這個(gè)問題的一個(gè)簡化版的特例(并行機(jī)調(diào)度問題)都已被證明是NP難的,因此我們使用算法1所示的貪心調(diào)度算法來試圖盡早取得高優(yōu)先權(quán)的數(shù)據(jù)分片,而不必追求總體最優(yōu)的效果。
算法1數(shù)據(jù)調(diào)度算法 輸入(1)按照獲取優(yōu)先權(quán)降序排列的數(shù)據(jù)分片D1,D2,Λ,Dm; (2)每個(gè)數(shù)據(jù)分片的提供者集合S1,S2,Λ,Sm; (3)結(jié)點(diǎn)j的發(fā)送數(shù)據(jù)率R(j); (4)結(jié)點(diǎn)j處的預(yù)期排隊(duì)時(shí)間τ(j),初始時(shí)τ(j)=0。
輸出每個(gè)數(shù)據(jù)分片Di的提供者supplieri。
算法 1 計(jì)算在此調(diào)度周期內(nèi)最多能接收的數(shù)據(jù)分片數(shù)目min(m,I×τ); 2 for i=1 to min(m,I×τ)do 3 設(shè)置Di的最早獲取時(shí)間tmin=∞; 4 假設(shè)Si中包含k個(gè)提供者
5 for j=1 to k do 6 計(jì)算從
處獲取Di的預(yù)期時(shí)間 7 8 9 if supplieri≠null 10 τ(supplieri)←tmin; 4數(shù)據(jù)預(yù)取算法 在每個(gè)調(diào)度周期中,數(shù)據(jù)調(diào)度器預(yù)測哪些數(shù)據(jù)分片很可能被數(shù)據(jù)調(diào)度算法遺漏。因?yàn)閷?shí)際上不可能精確預(yù)測到數(shù)據(jù)分片被遺漏的可能性,所以我們設(shè)計(jì)了一套稱為“緊迫界線”的機(jī)制讓每個(gè)結(jié)點(diǎn)動(dòng)態(tài)、自適應(yīng)地預(yù)測。圖2描畫了緊迫界線機(jī)制的基本工作原理。緩存中的數(shù)據(jù)分片被緊迫界線(Urgent Line)分成兩部分,左邊的部分是緊迫的,右邊的部分并不急于獲取,灰色的部分是已獲得的數(shù)據(jù),白色部分尚未獲得。因此,僅是緊迫界線左邊的白色數(shù)據(jù)分片被預(yù)測為可能遺漏。數(shù)據(jù)預(yù)取算法相關(guān)的參數(shù)列舉在表2中。
表2數(shù)據(jù)預(yù)取算法的相關(guān)參數(shù) 對照表2和圖2,可以得出緊迫界線機(jī)制的基本公式idurgent=idhead+α×B??梢钥闯靓潦蔷o迫界線機(jī)制的關(guān)鍵性參數(shù),我們將在這一小節(jié)的最后部分詳細(xì)講述參數(shù)α的計(jì)算。所有尚未獲得的id小于idurgent的數(shù)據(jù)分片都被預(yù)測為遺漏數(shù)據(jù),它們的總數(shù)目為Nmiss,根據(jù)Nmiss與參數(shù)l的關(guān)系,數(shù)據(jù)預(yù)取算法采取不同行為 情形1如果Nmiss=0,不需要啟動(dòng)數(shù)據(jù)預(yù)取算法; 情形2如果Nmiss≤l,啟動(dòng)數(shù)據(jù)預(yù)取算法并行獲取所有遺漏的數(shù)據(jù)分片; 情形3如果Nmiss>l,不啟動(dòng)數(shù)據(jù)預(yù)取算法,因?yàn)檫z漏分片太多,預(yù)取將帶來過大開銷; 算法2描述了數(shù)據(jù)預(yù)取算法的流程。假設(shè)被預(yù)測為遺漏的數(shù)據(jù)分片是D1,D2,Λ,Dm,對每個(gè)數(shù)據(jù)Di,首先需要定位到k個(gè)(有可能不足k個(gè))備份了Di的結(jié)點(diǎn),然后選擇能以最大發(fā)送速率傳送Di的結(jié)點(diǎn)作為Di的預(yù)取提供者。當(dāng)結(jié)點(diǎn)n向一個(gè)應(yīng)當(dāng)備份Di的結(jié)點(diǎn)n0索取Di時(shí),有可能n0也沒有獲得Di,這個(gè)概率記為Pfail,一般認(rèn)為n和n0有等價(jià)的概率獲得Di,所以平均來說那么n從k個(gè)應(yīng)當(dāng)備份Di的結(jié)點(diǎn)處都不能獲得Di的概率是
這個(gè)概率是相當(dāng)?shù)偷模越^大多數(shù)情況下遺漏數(shù)據(jù)的預(yù)取操作都能成功。
所述參數(shù)α的計(jì)算方法 在一個(gè)調(diào)度周期τ中,數(shù)據(jù)預(yù)取算法必須為按期獲得遺漏分片的過程分配足夠的時(shí)間,也就是說必須滿足α×B>p×τ和α×B>p×tfetch,即這就是α的下限和初始值; 隨著時(shí)間的推移,在出現(xiàn)下面兩種情況時(shí)α需要被動(dòng)態(tài)更新 情形1——數(shù)據(jù)過期如果發(fā)現(xiàn)有預(yù)取的數(shù)據(jù)獲得時(shí)已經(jīng)過期,說明為預(yù)取操作分配的時(shí)間不足,因此必須增加緩存緊迫數(shù)據(jù)的比例, 情形2——數(shù)據(jù)重復(fù)如果發(fā)現(xiàn)有預(yù)取的數(shù)據(jù)和數(shù)據(jù)調(diào)度算法按期取得的數(shù)據(jù)重復(fù),說明預(yù)測為遺漏的數(shù)據(jù)比例過大,因此必須減少緩存緊迫數(shù)據(jù)的比例,其中thop為路由一跳的時(shí)間估計(jì)值,tfetch為一次預(yù)取操作的時(shí)間估計(jì)值。
算法2數(shù)據(jù)預(yù)取算法 輸入預(yù)測遺漏的數(shù)據(jù)分片D1,D2,Λ,Dm,按id升序排列; 輸出每個(gè)數(shù)據(jù)分片Di的預(yù)取提供者on-demand supplieri; 算法 1 for i=1 to m do 2 為獲取Di,并行發(fā)送k條路由消息去尋找k個(gè)目標(biāo)結(jié)點(diǎn)n1,n2,Λ,nk; 3 設(shè)置Di的最大接收速率Ri=0; 4 for j=1 to k do 5 對于目標(biāo)結(jié)點(diǎn)nj,最終將會(huì)找到逆時(shí)針方向離nj最近的結(jié)點(diǎn)nj′; 7 if nj′已備份了Di and nj′的發(fā)送速率大于Ri 8 on-demand supplieri←nj′;
權(quán)利要求
1、一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法,其特征是采用基于DHT的數(shù)據(jù)預(yù)取方法來彌補(bǔ)Gossip協(xié)議數(shù)據(jù)傳播隨機(jī)性的缺陷,從而設(shè)計(jì)出一個(gè)具有高播放連續(xù)度的P2P流媒體系統(tǒng),包括以下步驟
(1)組織分布式哈希表DHT,將系統(tǒng)中所有結(jié)點(diǎn)按照DHT的方法分布式地組織到一個(gè)P2P覆蓋網(wǎng)上;
(2)有目的的數(shù)據(jù)存儲(chǔ),即讓每個(gè)結(jié)點(diǎn)存儲(chǔ)k個(gè)數(shù)據(jù)分片,k是一個(gè)較小的常數(shù),所存儲(chǔ)的數(shù)據(jù)分片的id與結(jié)點(diǎn)的ID密切相關(guān);
(3)數(shù)據(jù)調(diào)度算法,即每個(gè)結(jié)點(diǎn)從其建立連接的網(wǎng)絡(luò)鄰居中周期性地獲取數(shù)據(jù)可用性信息,從而規(guī)劃數(shù)據(jù)分片的獲取過程;
(4)數(shù)據(jù)預(yù)取算法,即系統(tǒng)中每個(gè)結(jié)點(diǎn)不斷預(yù)測哪些數(shù)據(jù)分片很可能被數(shù)據(jù)調(diào)度算法遺漏,如果有認(rèn)為遺漏的數(shù)據(jù)分片,就啟動(dòng)數(shù)據(jù)預(yù)取算法快速查找并獲得它們,從而保證連續(xù)播放;
(5)結(jié)束,當(dāng)流媒體播放結(jié)束時(shí)終止整個(gè)過程。
2、根據(jù)權(quán)利要求1所述的一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方案,其特征是步驟(1)中,所述DHT包括
(1)連接鄰居包含無結(jié)構(gòu)P2P覆蓋網(wǎng)上M個(gè)鄰居;當(dāng)前結(jié)點(diǎn)與這M個(gè)鄰居建立TCP連接,周期性的數(shù)據(jù)交換僅發(fā)生在當(dāng)前結(jié)點(diǎn)和其連接鄰居之間;如果當(dāng)前結(jié)點(diǎn)發(fā)現(xiàn)某個(gè)鄰居已失效或者給自己提供的數(shù)據(jù)很少,即相比于其它鄰居平均提供給自身的數(shù)據(jù)量不到五分之一,就從監(jiān)聽結(jié)點(diǎn)中選取時(shí)延最小的結(jié)點(diǎn)來替換這個(gè)鄰居;
(2)DHT結(jié)點(diǎn)包含logN個(gè)按層排列的DHT結(jié)點(diǎn);N是覆蓋網(wǎng)最多能容納的結(jié)點(diǎn)個(gè)數(shù);對于某個(gè)結(jié)點(diǎn)n來說,n是該結(jié)點(diǎn)的ID,它的第i層DHT結(jié)點(diǎn)唯一需要滿足的條件是必須落在區(qū)間[n+2i-1,n+2i)中,所有結(jié)點(diǎn)的ID均是模N后的結(jié)果;所有的DHT結(jié)點(diǎn)周期性地用監(jiān)聽結(jié)點(diǎn)來更新;
(3)監(jiān)聽結(jié)點(diǎn)包含H個(gè)最近監(jiān)聽到的網(wǎng)絡(luò)結(jié)點(diǎn);每個(gè)結(jié)點(diǎn)不斷地監(jiān)聽經(jīng)過自身的路由消息,用路由消息中的結(jié)點(diǎn)信息更新監(jiān)聽結(jié)點(diǎn)的信息;連接鄰居和DHT結(jié)點(diǎn)都是根據(jù)監(jiān)聽結(jié)點(diǎn)來更新的,而監(jiān)聽結(jié)點(diǎn)是通過本地監(jiān)聽來更新。
3、根據(jù)權(quán)利要求1所述的一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方案,其特征是所述步驟(2)中,對一個(gè)結(jié)點(diǎn)n,設(shè)其在DHT中最近的結(jié)點(diǎn)是n1,則n最終需要在其按需數(shù)據(jù)備份中保存id符合如下公式的數(shù)據(jù)hash(id×i)%N∈[n,n1),i=1,2,Λk.,hash()是一個(gè)普通的安全散列函數(shù),%代表取模操作,這樣每個(gè)數(shù)據(jù)分片最終會(huì)備份在k個(gè)不同的結(jié)點(diǎn)中;
結(jié)點(diǎn)n想離開系統(tǒng),它首先找到逆時(shí)針方向離n最近的結(jié)點(diǎn)n′,然后將自身數(shù)據(jù)備份中的數(shù)據(jù)移交給′n′來保存′,所述逆時(shí)針是指系統(tǒng)中各個(gè)節(jié)點(diǎn)構(gòu)成的環(huán)狀網(wǎng)絡(luò)的逆時(shí)針。
4、根據(jù)權(quán)利要求1所述的具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法,其特征是步驟(3)中,規(guī)劃數(shù)據(jù)分片的獲取過程
綜合考慮每個(gè)數(shù)據(jù)分片的緊迫性與稀缺性,通過公式(1)到(3)計(jì)算出每個(gè)數(shù)據(jù)分片的獲取優(yōu)先權(quán)
首先計(jì)算數(shù)據(jù)分片Di的緊迫性
那么
將數(shù)據(jù)分片Di的稀缺性理解為Di在其所有提供者的緩存中都被替換掉的概率
數(shù)據(jù)分片Di的獲取優(yōu)先權(quán)priorityi=max{urgencyi,rarityi}(3)
計(jì)算出每個(gè)數(shù)據(jù)分片的獲取優(yōu)先權(quán)后,數(shù)據(jù)調(diào)度器將需要獲取的數(shù)據(jù)分片按優(yōu)先權(quán)降序排列,獲取數(shù)據(jù)分片按此優(yōu)先權(quán)順序;
上述Ri是數(shù)據(jù)分片Di的最大獲取速率、idi數(shù)據(jù)分片Di的id、idplay是當(dāng)前正在播放的數(shù)據(jù)分片的id、ti是數(shù)據(jù)分片Di的過期時(shí)間、
是從第j個(gè)提供者那里獲取Di的速率、urgencyi是數(shù)據(jù)分片Di的緊迫性、rarityi是數(shù)據(jù)分片Di的稀缺性、priorityi是數(shù)據(jù)分片Di的獲取優(yōu)先權(quán)、B是緩存大小、p是每秒播放的數(shù)據(jù)分片數(shù)目、
是數(shù)據(jù)分片Di在第j個(gè)提供者的緩存中的位置。
5、根據(jù)權(quán)利要求1所述的具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法,其特征是所述步驟(4)中,數(shù)據(jù)預(yù)取算法的流程
設(shè)被預(yù)測為遺漏的數(shù)據(jù)分片是D1,D2,Λ,Dm,對每個(gè)數(shù)據(jù)Di,首先需要定位到k個(gè),也可能不足k個(gè),備份了Di的結(jié)點(diǎn),然后選擇能以最大發(fā)送速率傳送Di的結(jié)點(diǎn)作為Di的預(yù)取提供者;
當(dāng)結(jié)點(diǎn)n向一個(gè)應(yīng)當(dāng)備份Di的結(jié)點(diǎn)n0索取Di時(shí),有可能n0也沒有獲得Di,這個(gè)概率記為Pfail,一般認(rèn)為n和n0有等價(jià)的概率獲得Di,所以平均來說那么n從k個(gè)應(yīng)當(dāng)備份Di的結(jié)點(diǎn)處都不能獲得Di的概率是
這個(gè)概率是相當(dāng)?shù)偷?,所以絕大多數(shù)情況下遺漏數(shù)據(jù)的預(yù)取操作都能成功。
6、根據(jù)權(quán)利要求1或5所述的具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法,其特征是數(shù)據(jù)預(yù)取算法包含了一套稱為“緊迫界線”的機(jī)制讓每個(gè)結(jié)點(diǎn)動(dòng)態(tài)、自適應(yīng)地預(yù)測可能被數(shù)據(jù)調(diào)度算法遺漏的數(shù)據(jù)分片,有效地避免不必要的數(shù)據(jù)預(yù)取操作,所述“緊迫界線”的機(jī)制的基本工作原理是,
緩存中的數(shù)據(jù)分片被緊迫界線分成兩部分,即緊迫部分和不急于獲取部分;僅是緊迫部分的尚未獲得的分片被預(yù)測為可能遺漏;
緊迫界線機(jī)制的基本公式idurgent=idhead+α×B
所有尚未獲得的id小于idurgent的數(shù)據(jù)分片都被預(yù)測為遺漏數(shù)據(jù),它們的總數(shù)目為Nmiss,根據(jù)Nmiss與參數(shù)l的關(guān)系,數(shù)據(jù)預(yù)取算法采取不同行為
情形1如果Nmiss=0,不需要啟動(dòng)數(shù)據(jù)預(yù)取算法;
情形2如果Nmiss≤l,啟動(dòng)數(shù)據(jù)預(yù)取算法并行獲取所有遺漏的數(shù)據(jù)分片;
情形3如果Nmiss>l,不啟動(dòng)數(shù)據(jù)預(yù)取算法;
上述α是緩存的緊迫比率、B是緩存大小、idhead是緩存頭部的數(shù)據(jù)分片的id、idurgent是緊迫界線對應(yīng)的數(shù)據(jù)分片的id、Nmiss是被預(yù)測為遺漏的數(shù)據(jù)分片數(shù)目、1是數(shù)據(jù)預(yù)取算法在一個(gè)調(diào)度周期中最多能獲取1個(gè)遺漏分片。
7、根據(jù)權(quán)利要求7所述的具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方法,其特征是所述參數(shù)α的計(jì)算方法
在一個(gè)調(diào)度周期τ中,數(shù)據(jù)預(yù)取算法必須為按期獲得遺漏分片的過程分配足夠的時(shí)間,也就是說必須滿足α×B>p×τ和α×B>p×tfetch,即這就是α的下限和初始值;
隨著時(shí)間的推移,在出現(xiàn)下面兩種情況時(shí)α需要被動(dòng)態(tài)更新
情形1——數(shù)據(jù)過期如果發(fā)現(xiàn)有預(yù)取的數(shù)據(jù)獲得時(shí)已經(jīng)過期,說明為預(yù)取操作分配的時(shí)間不足,因此必須增加緩存緊迫數(shù)據(jù)的比例,
情形2——數(shù)據(jù)重復(fù)如果發(fā)現(xiàn)有預(yù)取的數(shù)據(jù)和數(shù)據(jù)調(diào)度算法按期取得的數(shù)據(jù)重復(fù),說明預(yù)測為遺漏的數(shù)據(jù)比例過大,因此必須減少緩存緊迫數(shù)據(jù)的比例,其中thop為路由一跳的時(shí)間估計(jì)值,tfetch為一次預(yù)取操作的時(shí)間估計(jì)值。
全文摘要
一種具有高播放連續(xù)度的P2P流媒體系統(tǒng)的設(shè)計(jì)方案,包括步驟1.組織DHT,將系統(tǒng)中所有結(jié)點(diǎn)按照DHT的方法分布式地組織到一個(gè)P2P覆蓋網(wǎng)上;2.有目的的數(shù)據(jù)存儲(chǔ),即讓每個(gè)結(jié)點(diǎn)存儲(chǔ)k個(gè)數(shù)據(jù)分片,k是一個(gè)較小的常數(shù),所存儲(chǔ)的數(shù)據(jù)分片id與結(jié)點(diǎn)的ID密切相關(guān);3.數(shù)據(jù)調(diào)度算法;4.數(shù)據(jù)預(yù)取算法;5.結(jié)束。本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)是它是純分布式的方法,實(shí)現(xiàn)起來十分簡單并且可以方便地嵌入到現(xiàn)有P2P流媒體系統(tǒng)中,它能使系統(tǒng)中每個(gè)結(jié)點(diǎn)維持穩(wěn)定的高播放連續(xù)度,并且?guī)淼念~外開銷非常低。
文檔編號H04L29/08GK101304437SQ20081012290
公開日2008年11月12日 申請日期2008年6月20日 優(yōu)先權(quán)日2008年6月20日
發(fā)明者陳貴海, 李振華 申請人:南京大學(xué)