專利名稱:一種流媒體點(diǎn)播系統(tǒng)中時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,是一種流媒體點(diǎn)播系統(tǒng)中時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法。
背景技術(shù):
流媒體技術(shù)的應(yīng)用一直是在互聯(lián)網(wǎng)上傳播多媒體信息的主要方式,隨著寬帶網(wǎng)的日益普及,流媒體點(diǎn)播服務(wù)的受關(guān)注程度也正日漸提高。
傳統(tǒng)的流媒體點(diǎn)播機(jī)制將大量待點(diǎn)播的流媒體數(shù)據(jù)存放在一組集中管理的視頻服務(wù)器上,視頻服務(wù)器負(fù)責(zé)響應(yīng)每個(gè)客戶端的點(diǎn)播請(qǐng)求。在這種客戶/服務(wù)器系統(tǒng)模式下,視頻服務(wù)器承擔(dān)了全部的工作。當(dāng)點(diǎn)播的用戶不斷增加時(shí),視頻服務(wù)器最終將達(dá)到其能力極限。為了增強(qiáng)系統(tǒng)的服務(wù)能力,常用的辦法是增加視頻服務(wù)器的數(shù)量,然而在增強(qiáng)系統(tǒng)服務(wù)能力的同時(shí),網(wǎng)絡(luò)帶寬也需要進(jìn)行相應(yīng)的提高。基于這種方案的系統(tǒng),其實(shí)現(xiàn)代價(jià)較高并且有限增加的視頻服務(wù)器數(shù)量和網(wǎng)絡(luò)帶寬也難以滿足無限增加的點(diǎn)播需求。因此找到一項(xiàng)適合于點(diǎn)播系統(tǒng)的技術(shù)迫在眉睫。
對(duì)等網(wǎng)絡(luò)技術(shù)是近年來興起的一項(xiàng)利用終端桌面PC計(jì)算能力以及終端網(wǎng)絡(luò)帶寬在用戶之間進(jìn)行文件共享的新技術(shù),它具有使用靈活性、可擴(kuò)展性、健壯性、負(fù)載均衡等諸多優(yōu)點(diǎn),因此它為流媒體服務(wù)的普及提供了一種良好的技術(shù)基礎(chǔ)。基于對(duì)等網(wǎng)絡(luò)的流媒體點(diǎn)播方法使得節(jié)點(diǎn)P能夠互相分享已有的數(shù)據(jù)而不用全部集中到視頻服務(wù)器端獲取數(shù)據(jù),從而大大減輕了視頻服務(wù)器和網(wǎng)絡(luò)的負(fù)擔(dān)。
目前存在的基于對(duì)等網(wǎng)絡(luò)的點(diǎn)播系統(tǒng)大都按照“樹形“邏輯結(jié)構(gòu)來組織系統(tǒng)中的節(jié)點(diǎn),例如P2VOD(T.Do,K.A.Hua,and M.Tantaoui.“P2VoDproviding fault tolerant video-on-demand streaming in peer-to-peerenvironment”,in Proc.of IEEE ICC’04,Paris,F(xiàn)rance,Jun.2004.)和P2Cast(Y.Guo,K.Suh,J.Kurose,and D.Towsley.“P2CastPeer-to-peer Patching Scheme for VoD Service”,in Proc.of the 12thWorld Wide Web Conference(WW’03),Budapest,Hungary,May 2003.),與傳統(tǒng)的流媒體點(diǎn)播系統(tǒng)相比它們更充分地利用了系統(tǒng)中各個(gè)節(jié)點(diǎn)的資源,使得系統(tǒng)不僅是在穩(wěn)定性而且在可擴(kuò)展性方面都有了很大的提高。然而,當(dāng)系統(tǒng)中的節(jié)點(diǎn)較為頻繁地加入或退出時(shí),系統(tǒng)為了維護(hù)這種“樹形”的邏輯網(wǎng)絡(luò)組織結(jié)構(gòu)需要花費(fèi)相當(dāng)大的代價(jià),特別是當(dāng)某些關(guān)鍵性的節(jié)點(diǎn)失效時(shí),“樹形”的邏輯網(wǎng)絡(luò)組織結(jié)構(gòu)幾乎需要重構(gòu),從而使得系統(tǒng)產(chǎn)生顛覆性影響。因此“樹形“結(jié)構(gòu)的網(wǎng)絡(luò)組織方法不能很好地適應(yīng)于對(duì)等網(wǎng)絡(luò)點(diǎn)播系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種流媒體點(diǎn)播系統(tǒng)中時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法,該方法保證了系統(tǒng)的穩(wěn)定性和動(dòng)態(tài)性,消除了“單點(diǎn)失效“,并提高了系統(tǒng)中節(jié)點(diǎn)獲取信息的準(zhǔn)確性。
本發(fā)明提供的一種流媒體點(diǎn)播系統(tǒng)中時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法,包括以下步驟(1)系統(tǒng)中任一節(jié)點(diǎn)P創(chuàng)建該節(jié)點(diǎn)的普通節(jié)點(diǎn)列表、“鄰居”節(jié)點(diǎn)列表和“伙伴”節(jié)點(diǎn)列表;(2)節(jié)點(diǎn)P獲取與其處于同一頻道的所有節(jié)點(diǎn)的節(jié)點(diǎn)信息,并加入其普通節(jié)點(diǎn)列表中;(3)節(jié)點(diǎn)P判斷其普通節(jié)點(diǎn)列表中的各節(jié)點(diǎn)的當(dāng)前播放時(shí)間是否與其當(dāng)前播放時(shí)間鄰近,如果是,進(jìn)入步驟(4);否則,進(jìn)入步驟(9);(4)節(jié)點(diǎn)P與和它當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)建立“鄰居”關(guān)系;(5)節(jié)點(diǎn)P判斷當(dāng)前時(shí)間與其上一次發(fā)送信息的時(shí)間的間隔是否達(dá)到交流周期,如果是,進(jìn)入步驟(6);否則,進(jìn)入步驟(7);(6)節(jié)點(diǎn)P先向其“鄰居”節(jié)點(diǎn)發(fā)送更新信息和拓?fù)渚S護(hù)信息;再通過信息標(biāo)識(shí)符判斷接收到的信息的類型,如果是加入信息,進(jìn)入步驟(A1);如果是退出信息,進(jìn)入步驟(B1);如果是更新信息,進(jìn)入步驟(C1);如果是拓?fù)渚S護(hù)信息,進(jìn)入步驟(D1);否則回到步驟(5);(A1)節(jié)點(diǎn)P將收到的加入信息中關(guān)于節(jié)點(diǎn)的信息加入其普通節(jié)點(diǎn)列表中;(A2)收到加入信息的節(jié)點(diǎn)判斷收到的信息是否失效,如果是,回到步驟(5);否則,進(jìn)入(A3);(A3)收到加入信息的節(jié)點(diǎn)將收到的加入信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給其所有的“鄰居”節(jié)點(diǎn),完成后回到步驟(5);(B1)節(jié)點(diǎn)P將收到的退出信息中的關(guān)于節(jié)點(diǎn)的信息從節(jié)點(diǎn)P的“鄰居”節(jié)點(diǎn)列表中刪除,然后進(jìn)入步驟(B2);(B2)步驟(B1)中收到退出信息的節(jié)點(diǎn)判斷收到的信息是否失效,如果是,回到步驟(5);否則,進(jìn)入步驟(B3);(B3)滿足步驟(B2)條件的節(jié)點(diǎn)將收到的退出信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給其所有的“鄰居”節(jié)點(diǎn),完成后回到步驟(5);(C1)節(jié)點(diǎn)P將收到的更新信息中關(guān)于節(jié)點(diǎn)的信息在其“鄰居”節(jié)點(diǎn)列表中更新,然后回到步驟(5);(D1)節(jié)點(diǎn)P判斷其普通節(jié)點(diǎn)列表中是否存在與收到的拓?fù)渚S護(hù)信息中節(jié)點(diǎn)標(biāo)識(shí)符相同的節(jié)點(diǎn),如果是,進(jìn)入(D2);否則,進(jìn)入步驟(D3);(D2)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息在其普通節(jié)點(diǎn)列表中更新,然后進(jìn)入步驟(D4);(D3)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息加入其普通節(jié)點(diǎn)列表中;(D4)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息判斷該拓?fù)渚S護(hù)信息是否失效,如果是,回到步驟(5);否則,進(jìn)入步驟(D5);(D5)滿足步驟(D4)條件的節(jié)點(diǎn)將收到的拓?fù)渚S護(hù)信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給從其“鄰居”節(jié)點(diǎn)中隨機(jī)選擇的多個(gè)節(jié)點(diǎn),完成后回到步驟(5);
(7)節(jié)點(diǎn)P判斷其“鄰居”節(jié)點(diǎn)是否具有它所需要的數(shù)據(jù),如果是,該“鄰居”節(jié)點(diǎn)為“伙伴”節(jié)點(diǎn),進(jìn)入步驟(8);否則,回到步驟(5);(8)節(jié)點(diǎn)P和鄰居節(jié)點(diǎn)互相將對(duì)方的節(jié)點(diǎn)信息加入其“伙伴”節(jié)點(diǎn)列表中,然后互相將對(duì)方的節(jié)點(diǎn)信息從其“鄰居”節(jié)點(diǎn)列表中刪除;(9)判斷節(jié)點(diǎn)P是否播放結(jié)束,如果是,向其所有的“鄰居“節(jié)點(diǎn)發(fā)送退出信息,然后結(jié)束;否則,回到步驟(3)。
上述步驟(2)包括以下步驟(2.1)節(jié)點(diǎn)P使用要觀看的頻道的標(biāo)識(shí)符和其當(dāng)前播放時(shí)間作為請(qǐng)求條件向索引服務(wù)器發(fā)起請(qǐng)求;(2.2)索引服務(wù)器查詢數(shù)據(jù)庫(kù)中的時(shí)間表后將與節(jié)點(diǎn)P播放時(shí)間鄰近的節(jié)點(diǎn)的節(jié)點(diǎn)信息反饋給請(qǐng)求節(jié)點(diǎn);(2.3)節(jié)點(diǎn)P將接收的節(jié)點(diǎn)信息加入其普通節(jié)點(diǎn)列表中。
上述步驟(4)包括以下步驟(4.1)節(jié)點(diǎn)P判斷其“鄰居”節(jié)點(diǎn)數(shù)目是否達(dá)到上限值, m是系統(tǒng)中節(jié)點(diǎn)的數(shù)目,如果是,進(jìn)入步驟(5);否則,進(jìn)入步驟(4.2);(4.2)節(jié)點(diǎn)P與和它當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)建立TCP網(wǎng)絡(luò)連接;(4.3)節(jié)點(diǎn)P向與其網(wǎng)絡(luò)連接的節(jié)點(diǎn)發(fā)起請(qǐng)求;(4.4)被請(qǐng)求節(jié)點(diǎn)收到節(jié)點(diǎn)P的請(qǐng)求后,判斷其“鄰居”節(jié)點(diǎn)數(shù)目是否達(dá)到上限值,如果是,發(fā)送拒絕信息,然后進(jìn)入步驟(5);否則,進(jìn)入步驟(4.5);(4.5)被請(qǐng)求節(jié)點(diǎn)判斷其“鄰居”列表中是否已經(jīng)存在節(jié)點(diǎn)P的節(jié)點(diǎn)信息,如果是,發(fā)送拒絕信息,然后進(jìn)入步驟(5);否則,進(jìn)入步驟(4.6);(4.6)被請(qǐng)求節(jié)點(diǎn)將節(jié)點(diǎn)P的節(jié)點(diǎn)信息加入其“鄰居”節(jié)點(diǎn)列表中,然后通知節(jié)點(diǎn)P;(4.7)節(jié)點(diǎn)P收到被請(qǐng)求節(jié)點(diǎn)回應(yīng)的信息后將被請(qǐng)求節(jié)點(diǎn)的節(jié)點(diǎn)信息加入其“鄰居”節(jié)點(diǎn)列表中;(4.8)判斷節(jié)點(diǎn)P是否第一次進(jìn)入系統(tǒng),如果是,進(jìn)入步驟(4.9);否則,進(jìn)入步驟(5);(4.9)節(jié)點(diǎn)P向其所有的“鄰居”節(jié)點(diǎn)發(fā)送加入信息。
本發(fā)明由節(jié)點(diǎn)首先挑選出與其播放時(shí)間鄰近的節(jié)點(diǎn),然后選取那些緩存有其所需數(shù)據(jù)的節(jié)點(diǎn),二者之間建立連接。具體而言,本發(fā)明具有以下特征(1)穩(wěn)定性節(jié)點(diǎn)P通過定期地交流它們當(dāng)前的時(shí)間信息使得所有節(jié)點(diǎn)都能夠不停的補(bǔ)充對(duì)其有用的節(jié)點(diǎn)信息,當(dāng)系統(tǒng)中有節(jié)點(diǎn)失效或正常退出時(shí)其他節(jié)點(diǎn)不至于受到很大的影響,從而保證了系統(tǒng)的穩(wěn)定性。
(2)動(dòng)態(tài)性節(jié)點(diǎn)P通過節(jié)點(diǎn)信息來發(fā)現(xiàn)對(duì)其有用的節(jié)點(diǎn),并且自適應(yīng)的與這些有用的節(jié)點(diǎn)建立關(guān)系,不受其他因素的影響。
(3)消除“單點(diǎn)失效“節(jié)點(diǎn)P定期交流它們的當(dāng)前播放時(shí)間,因此它們能夠及時(shí)、快速的尋找到許多與其播放時(shí)間鄰近并且能提供數(shù)據(jù)的節(jié)點(diǎn)。所以,系統(tǒng)不可能因?yàn)槟硞€(gè)節(jié)點(diǎn)突然失效而不能正常工作,從而消除了“單點(diǎn)失效“。
(4)系統(tǒng)中節(jié)點(diǎn)獲取的信息的準(zhǔn)確性節(jié)點(diǎn)P會(huì)定期交流它們當(dāng)前的時(shí)間信息,因此當(dāng)它們的信息發(fā)生變化時(shí),它們會(huì)立即通知相關(guān)的節(jié)點(diǎn),以保證這些相關(guān)節(jié)點(diǎn)獲取的節(jié)點(diǎn)信息的準(zhǔn)確性。
圖1為本發(fā)明方法的流程示意圖;圖2為節(jié)點(diǎn)列表的關(guān)系結(jié)構(gòu)圖;圖3為“鄰居”關(guān)系建立過程圖;圖4為步驟(6.2)的接收信息流程圖;圖5為實(shí)例的網(wǎng)絡(luò)組織圖。
具體實(shí)施例方式
本發(fā)明根據(jù)對(duì)等網(wǎng)絡(luò)中流媒體點(diǎn)播系統(tǒng)的需要建立了一種時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò),下面結(jié)合附圖和實(shí)例對(duì)本發(fā)明作詳細(xì)的說明。
如圖1所示,進(jìn)入點(diǎn)播系統(tǒng)的所有節(jié)點(diǎn)均按以下步驟組織對(duì)等網(wǎng)絡(luò)(1)節(jié)點(diǎn)P創(chuàng)建該節(jié)點(diǎn)的普通節(jié)點(diǎn)列表、“鄰居”節(jié)點(diǎn)列表和“伙伴”節(jié)點(diǎn)列表用于存放節(jié)點(diǎn)信息;節(jié)點(diǎn)信息包括節(jié)點(diǎn)標(biāo)識(shí)符、節(jié)點(diǎn)所觀看頻道的頻道標(biāo)識(shí)符、節(jié)點(diǎn)的IP地址和端口、節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置和節(jié)點(diǎn)的當(dāng)前播放時(shí)間。普通節(jié)點(diǎn)列表即附圖中的表A,用于記錄與節(jié)點(diǎn)P處于同一頻道的所有節(jié)點(diǎn)的節(jié)點(diǎn)信息?!班従印惫?jié)點(diǎn)列表即附圖中的表B,用來記錄節(jié)點(diǎn)P的“鄰居”節(jié)點(diǎn)的節(jié)點(diǎn)信息,“鄰居”節(jié)點(diǎn)是指當(dāng)前播放時(shí)間與節(jié)點(diǎn)P鄰近的節(jié)點(diǎn)。依據(jù)系統(tǒng)中節(jié)點(diǎn)的緩存容量設(shè)定一個(gè)基準(zhǔn)播放時(shí)間差,通常的范圍是100秒-600秒,當(dāng)二節(jié)點(diǎn)的播放時(shí)間之差小于該基準(zhǔn)播放時(shí)間差時(shí),稱二節(jié)點(diǎn)鄰近?!盎锇椤惫?jié)點(diǎn)列表即附圖中的表C,用于記錄節(jié)點(diǎn)P的“伙伴”節(jié)點(diǎn)的節(jié)點(diǎn)信息,“伙伴”節(jié)點(diǎn)是指“鄰居”節(jié)點(diǎn)中具有節(jié)點(diǎn)P所需要數(shù)據(jù)的節(jié)點(diǎn)。設(shè)節(jié)點(diǎn)P的當(dāng)前播放時(shí)間為T,其“鄰居”節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置為T1,終止位置為T2,當(dāng)滿足T1<T<T2時(shí),稱節(jié)點(diǎn)P的“鄰居”節(jié)點(diǎn)具有它所需要的數(shù)據(jù)。
“伙伴”節(jié)點(diǎn)列表是“鄰居”節(jié)點(diǎn)列表的子集,“鄰居”節(jié)點(diǎn)列表是普通節(jié)點(diǎn)列表的子集,三種節(jié)點(diǎn)列表的關(guān)系如圖2所示。
(2)節(jié)點(diǎn)P獲取與其處于同一頻道的所有節(jié)點(diǎn)的節(jié)點(diǎn)信息,并將這些節(jié)點(diǎn)信息加入其普通節(jié)點(diǎn)列表中,具體步驟如下;(2.1)節(jié)點(diǎn)P使用要觀看的頻道的標(biāo)識(shí)符和其當(dāng)前播放時(shí)間作為請(qǐng)求條件向索引服務(wù)器發(fā)起請(qǐng)求;(2.2)索引服務(wù)器查詢數(shù)據(jù)庫(kù)中的時(shí)間表后將與節(jié)點(diǎn)P播放時(shí)間鄰近的節(jié)點(diǎn)的節(jié)點(diǎn)信息反饋給請(qǐng)求節(jié)點(diǎn);(2.3)節(jié)點(diǎn)P將接收的節(jié)點(diǎn)信息加入其普通節(jié)點(diǎn)列表中;(3)節(jié)點(diǎn)P判斷其普通節(jié)點(diǎn)列表中的各節(jié)點(diǎn)的當(dāng)前播放時(shí)間是否與其當(dāng)前播放時(shí)間鄰近,如果是,進(jìn)入步驟(4);否則,進(jìn)入步驟(9);
(4)節(jié)點(diǎn)P與和它當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)(即附圖中的節(jié)點(diǎn)Q)建立“鄰居”關(guān)系,如圖3所示,其過程為(4.1)節(jié)點(diǎn)P判斷其“鄰居”節(jié)點(diǎn)數(shù)目是否達(dá)到上限值, m是系統(tǒng)中節(jié)點(diǎn)的數(shù)目,如果是,就進(jìn)入步驟(5);否則,進(jìn)入步驟(4.2);(4.2)節(jié)點(diǎn)P與和它當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)建立TCP網(wǎng)絡(luò)連接;(4.3)節(jié)點(diǎn)P向與其網(wǎng)絡(luò)連接的節(jié)點(diǎn)發(fā)起請(qǐng)求,請(qǐng)求的內(nèi)容包括一串標(biāo)識(shí)字符(REQUEST)和節(jié)點(diǎn)P緩存數(shù)據(jù)的起始位置和終止位置;(4.4)被請(qǐng)求節(jié)點(diǎn)收到節(jié)點(diǎn)P的請(qǐng)求后,判斷其“鄰居”節(jié)點(diǎn)數(shù)目是否達(dá)到上限值,如果是,發(fā)送一串標(biāo)識(shí)字符(REJECT)表示拒絕請(qǐng)求,然后進(jìn)入步驟(5);否則,進(jìn)入步驟(4.5);(4.5)被請(qǐng)求節(jié)點(diǎn)判斷其“鄰居”列表中是否已經(jīng)存在節(jié)點(diǎn)P的節(jié)點(diǎn)信息,如果是,就發(fā)送一串標(biāo)識(shí)字符(REJECT)表示拒絕請(qǐng)求,然后進(jìn)入步驟(5);否則,進(jìn)入步驟(4.6);(4.6)被請(qǐng)求節(jié)點(diǎn)將節(jié)點(diǎn)P的節(jié)點(diǎn)信息加入其“鄰居”節(jié)點(diǎn)列表中,然后通知節(jié)點(diǎn)P,通知的內(nèi)容包括一串字符(OK)和被請(qǐng)求節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置和終止位置;(4.7)節(jié)點(diǎn)P收到被請(qǐng)求節(jié)點(diǎn)回應(yīng)的信息后將被請(qǐng)求節(jié)點(diǎn)的節(jié)點(diǎn)信息加入其“鄰居”節(jié)點(diǎn)列表中;(4.8)判斷節(jié)點(diǎn)P是否第一次進(jìn)入系統(tǒng),如果是,進(jìn)入步驟(4.9);否則,進(jìn)入步驟(5);(4.9)節(jié)點(diǎn)P向其所有的“鄰居”節(jié)點(diǎn)發(fā)送加入信息,節(jié)點(diǎn)的加入信息包括信息標(biāo)識(shí)符(JOIN)、該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)所觀看頻道的頻道標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置、該節(jié)點(diǎn)的當(dāng)前播放時(shí)間和該信息在系統(tǒng)中已經(jīng)被轉(zhuǎn)發(fā)的次數(shù)n;(5)節(jié)點(diǎn)P判斷當(dāng)前時(shí)間與其上一次發(fā)送信息的時(shí)間的間隔是否達(dá)到交流周期,設(shè)節(jié)點(diǎn)P第一次發(fā)送信息的時(shí)間為其進(jìn)入系統(tǒng)的時(shí)間,交流周期由系統(tǒng)的硬件配置和網(wǎng)絡(luò)帶寬決定,通常取值為30秒。如果是,進(jìn)入步驟(6);否則,進(jìn)入步驟(7);
(6)節(jié)點(diǎn)P與其“鄰居”節(jié)點(diǎn)交流信息,過程如下;(6.1)節(jié)點(diǎn)P向其“鄰居”節(jié)點(diǎn)發(fā)送更新信息和拓?fù)渚S護(hù)信息;節(jié)點(diǎn)的更新信息包括信息標(biāo)識(shí)符(UPDATE)、該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)所觀看頻道的頻道標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置、該節(jié)點(diǎn)當(dāng)前播放時(shí)間位置和被轉(zhuǎn)發(fā)的次數(shù)n。
節(jié)點(diǎn)的拓?fù)渚S護(hù)信息包括信息標(biāo)識(shí)符(MAINTAIN)、該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)所觀看頻道的頻道標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置、該節(jié)點(diǎn)當(dāng)前播放時(shí)間和被轉(zhuǎn)發(fā)的次數(shù)n。
(6.2)節(jié)點(diǎn)P通過信息標(biāo)識(shí)符判斷接收到的信息的類型,如果是加入信息,進(jìn)入步驟(A1);如果是退出信息,進(jìn)入步驟(B1);如果是更新信息,進(jìn)入步驟(C1);如果是拓?fù)渚S護(hù)信息,進(jìn)入步驟(D1);否則回到步驟(5)。如圖4所示,過程如下(A1)節(jié)點(diǎn)P將收到的加入信息中關(guān)于節(jié)點(diǎn)的信息(即該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置和該節(jié)點(diǎn)的當(dāng)前播放時(shí)間)加入其普通節(jié)點(diǎn)列表中,然后進(jìn)入步驟(A2);(A2)步驟(A1)中收到加入信息的節(jié)點(diǎn)判斷收到的信息是否失效,如果是,回到步驟(5);否則,進(jìn)入(A3);本發(fā)明中,信息是否失效是通過判斷該加入信息在系統(tǒng)中已經(jīng)被轉(zhuǎn)發(fā)的次數(shù)是否達(dá)到其生存周期來確定,生存周期由系統(tǒng)中節(jié)點(diǎn)的數(shù)目和系統(tǒng)的網(wǎng)絡(luò)帶寬決定,通常取值為3-5。
(A3)滿足步驟(A2)條件的節(jié)點(diǎn)將收到的加入信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給其所有的“鄰居”節(jié)點(diǎn),完成后回到步驟(5);(B1)節(jié)點(diǎn)P將收到的退出信息中的關(guān)于節(jié)點(diǎn)的信息(即該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置和該節(jié)點(diǎn)的當(dāng)前播放時(shí)間)從節(jié)點(diǎn)P的“鄰居”節(jié)點(diǎn)列表中刪除,然后進(jìn)入步驟(B2);
(B2)步驟(B1)中收到退出信息的節(jié)點(diǎn)判斷收到的信息是否失效,如果是,回到步驟(5);否則,進(jìn)入步驟(B3);(B3)滿足步驟(B2)條件的節(jié)點(diǎn)將收到的退出信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給其所有的“鄰居”節(jié)點(diǎn),完成后回到步驟(5);(C1)節(jié)點(diǎn)P將收到的更新信息中關(guān)于節(jié)點(diǎn)的信息(即該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置和該節(jié)點(diǎn)的當(dāng)前播放時(shí)間)在其“鄰居”節(jié)點(diǎn)列表中更新,然后回到步驟(5);(D1)節(jié)點(diǎn)P判斷其普通節(jié)點(diǎn)列表中是否存在與收到的拓?fù)渚S護(hù)信息中節(jié)點(diǎn)標(biāo)識(shí)符相同的節(jié)點(diǎn),如果是,進(jìn)入(D2);否則,進(jìn)入步驟(D3);(D2)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息(即該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置和該節(jié)點(diǎn)的當(dāng)前播放時(shí)間)在其普通節(jié)點(diǎn)列表中更新,然后進(jìn)入步驟(D4);(D3)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息加入其普通節(jié)點(diǎn)列表中;(D4)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息判斷該拓?fù)渚S護(hù)信息是否失效,如果是,回到步驟(5);否則,進(jìn)入步驟(D5);(D5)滿足步驟(D4)條件的節(jié)點(diǎn)將收到的拓?fù)渚S護(hù)信息中該信息在系統(tǒng)中已經(jīng)被轉(zhuǎn)發(fā)的次數(shù)加1,然后轉(zhuǎn)發(fā)給從其“鄰居”節(jié)點(diǎn)中隨機(jī)選擇的多個(gè)節(jié)點(diǎn),完成后回到步驟(5);(7)節(jié)點(diǎn)P判斷其“鄰居”節(jié)點(diǎn)是否具有它所需要的數(shù)據(jù),如果是,該“鄰居”節(jié)點(diǎn)為“伙伴”節(jié)點(diǎn),進(jìn)入步驟(8);否則,回到步驟(5);(8)節(jié)點(diǎn)P和鄰居節(jié)點(diǎn)互相將對(duì)方的節(jié)點(diǎn)信息加入其“伙伴”節(jié)點(diǎn)列表中,然后互相將對(duì)方的節(jié)點(diǎn)信息從其“鄰居”節(jié)點(diǎn)列表中刪除;(9)判斷節(jié)點(diǎn)P是否播放結(jié)束,如果是,向其所有的“鄰居“節(jié)點(diǎn)發(fā)送退出信息,節(jié)點(diǎn)的退出信息包括信息標(biāo)識(shí)符(DROP)、該節(jié)點(diǎn)標(biāo)識(shí)符、該節(jié)點(diǎn)所觀看頻道的頻道標(biāo)識(shí)符、該節(jié)點(diǎn)的IP地址和端口、該節(jié)點(diǎn)網(wǎng)關(guān)的IP地址和端口、該節(jié)點(diǎn)緩存數(shù)據(jù)的起始位置、終止位置、該節(jié)點(diǎn)的當(dāng)前播放時(shí)間和被轉(zhuǎn)發(fā)的次數(shù)n,然后結(jié)束;否則,回到步驟(3)。
至此,流媒體點(diǎn)播系統(tǒng)就完成了時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織。
實(shí)例利用本發(fā)明所闡述的時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法,實(shí)驗(yàn)室提供了1個(gè)視頻服務(wù)器,1個(gè)索引服務(wù)器以及10臺(tái)普通PC機(jī),每臺(tái)PC的緩存容量為30M,根據(jù)這個(gè)緩存容量設(shè)定基準(zhǔn)播放時(shí)間差為300秒。PC機(jī)的硬件配置如下
PC 1-10分別稱為節(jié)點(diǎn)1、節(jié)點(diǎn)2……節(jié)點(diǎn)10。某時(shí)刻,根據(jù)節(jié)點(diǎn)1……節(jié)點(diǎn)9的播放時(shí)間組織的對(duì)等網(wǎng)絡(luò)如圖5所示。根據(jù)系統(tǒng)的硬件配置設(shè)定系統(tǒng)中節(jié)點(diǎn)的“鄰居”節(jié)點(diǎn)的上限值為4,各信息的生存周期是3,各信息的交流周期是30秒。
節(jié)點(diǎn)10加入時(shí),索引服務(wù)器返回給它鄰近的節(jié)點(diǎn)3和節(jié)點(diǎn)5,此時(shí)節(jié)點(diǎn)3和節(jié)點(diǎn)5的“鄰居”節(jié)點(diǎn)數(shù)目分別為1和2,因此節(jié)點(diǎn)10能夠與兩節(jié)點(diǎn)建立“鄰居”關(guān)系。節(jié)點(diǎn)5緩存數(shù)據(jù)的終止位置是00:03:20,節(jié)點(diǎn)3的當(dāng)前播放時(shí)間是00:01:53,兩個(gè)時(shí)間的差值在0秒和300秒之間,因此二者建立“伙伴”關(guān)系。
到達(dá)信息交流周期時(shí),節(jié)點(diǎn)1從其“鄰居”節(jié)點(diǎn)中隨機(jī)選擇了節(jié)點(diǎn)4發(fā)送拓?fù)渚S護(hù)信息,該信息被節(jié)點(diǎn)4轉(zhuǎn)發(fā)到節(jié)點(diǎn)2,節(jié)點(diǎn)2收到信息后首先將關(guān)于節(jié)點(diǎn)1的信息加入其普通節(jié)點(diǎn)列表中,然后它判斷該信息中的在系統(tǒng)中被轉(zhuǎn)發(fā)的次數(shù)1是否小于信息的生存周期3,繼續(xù)將該信息進(jìn)行轉(zhuǎn)發(fā)。節(jié)點(diǎn)2的當(dāng)前播放時(shí)間為00:07:45,其普通節(jié)點(diǎn)列表中的節(jié)點(diǎn)1的當(dāng)前播放時(shí)間為00:04:12,它們的當(dāng)前播放時(shí)間之差小于300秒,而且它們的“鄰居”節(jié)點(diǎn)數(shù)目都沒有達(dá)到上限值,因此二者建立“鄰居”關(guān)系。節(jié)點(diǎn)2緩存數(shù)據(jù)的起始位置和終止位置分別是00:03:00和00:08:00,節(jié)點(diǎn)1的當(dāng)前播放時(shí)間是00:04:12,它處于節(jié)點(diǎn)2緩存數(shù)據(jù)的起始位置和終止位置之間,因此二者建立“伙伴”關(guān)系。
同上述方式,節(jié)點(diǎn)8與節(jié)點(diǎn)9也會(huì)建立“鄰居”關(guān)系,并最終建立“伙伴”關(guān)系。節(jié)點(diǎn)P通過定期交流信息維護(hù)了“鄰居”這層關(guān)系,在“鄰居”關(guān)系的基礎(chǔ)上它們能夠?qū)ふ业礁嗟摹盎锇椤惫?jié)點(diǎn),保證服務(wù)的性能。
經(jīng)多次測(cè)試,采用本發(fā)明所論述的時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法,同一頻道上的節(jié)點(diǎn)都能夠非常流暢地觀看節(jié)目,整個(gè)系統(tǒng)能夠穩(wěn)定地工作。
權(quán)利要求
1.一種流媒體點(diǎn)播系統(tǒng)中時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法,包括以下步驟(1)系統(tǒng)中任一節(jié)點(diǎn)(P)創(chuàng)建該節(jié)點(diǎn)的普通節(jié)點(diǎn)列表、“鄰居”節(jié)點(diǎn)列表和“伙伴”節(jié)點(diǎn)列表;(2)節(jié)點(diǎn)(P)獲取與其處于同一頻道的所有節(jié)點(diǎn)的節(jié)點(diǎn)信息,并加入其普通節(jié)點(diǎn)列表中;(3)節(jié)點(diǎn)(P)判斷其普通節(jié)點(diǎn)列表中的各節(jié)點(diǎn)的當(dāng)前播放時(shí)間是否與其當(dāng)前播放時(shí)間鄰近,如果是,進(jìn)入步驟(4);否則,進(jìn)入步驟(9);(4)節(jié)點(diǎn)(P)與和它當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)建立“鄰居”關(guān)系;(5)節(jié)點(diǎn)(P)判斷當(dāng)前時(shí)間與其上一次發(fā)送信息的時(shí)間的間隔是否達(dá)到交流周期,如果是,進(jìn)入步驟(6);否則,進(jìn)入步驟(7);(6)節(jié)點(diǎn)(P)先向其“鄰居”節(jié)點(diǎn)發(fā)送更新信息和拓?fù)渚S護(hù)信息;再通過信息標(biāo)識(shí)符判斷接收到的信息的類型,如果是加入信息,進(jìn)入步驟(A1);如果是退出信息,進(jìn)入步驟(B1);如果是更新信息,進(jìn)入步驟(C1);如果是拓?fù)渚S護(hù)信息,進(jìn)入步驟(D1);否則回到步驟(5);(A1)節(jié)點(diǎn)(P)將收到的加入信息中關(guān)于節(jié)點(diǎn)的信息加入其普通節(jié)點(diǎn)列表中;(A2)收到加入信息的節(jié)點(diǎn)判斷收到的信息是否失效,如果是,回到步驟(5);否則,進(jìn)入(A3);(A3)收到加入信息的節(jié)點(diǎn)將收到的加入信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給其所有的“鄰居”節(jié)點(diǎn),完成后回到步驟(5);(B1)節(jié)點(diǎn)(P)將收到的退出信息中的關(guān)于節(jié)點(diǎn)的信息從節(jié)點(diǎn)(P)的“鄰居”節(jié)點(diǎn)列表中刪除,然后進(jìn)入步驟(B2);(B2)步驟(B1)中收到退出信息的節(jié)點(diǎn)判斷收到的信息是否失效,如果是,回到步驟(5);否則,進(jìn)入步驟(B3);(B3)滿足步驟(B2)條件的節(jié)點(diǎn)將收到的退出信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給其所有的“鄰居”節(jié)點(diǎn),完成后回到步驟(5);(C1)節(jié)點(diǎn)(P)將收到的更新信息中關(guān)于節(jié)點(diǎn)的信息在其“鄰居”節(jié)點(diǎn)列表中更新,然后回到步驟(5);(D1)節(jié)點(diǎn)(P)判斷其普通節(jié)點(diǎn)列表中是否存在與收到的拓?fù)渚S護(hù)信息中節(jié)點(diǎn)標(biāo)識(shí)符相同的節(jié)點(diǎn),如果是,進(jìn)入(D2);否則,進(jìn)入步驟(D3);(D2)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息在其普通節(jié)點(diǎn)列表中更新,然后進(jìn)入步驟(D4);(D3)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息加入其普通節(jié)點(diǎn)列表中;(D4)步驟(D1)中收到拓?fù)渚S護(hù)信息的節(jié)點(diǎn)將該拓?fù)渚S護(hù)信息中關(guān)于節(jié)點(diǎn)的信息判斷該拓?fù)渚S護(hù)信息是否失效,如果是,回到步驟(5);否則,進(jìn)入步驟(D5);(D5)滿足步驟(D4)條件的節(jié)點(diǎn)將收到的拓?fù)渚S護(hù)信息中被轉(zhuǎn)發(fā)的次數(shù)n加1,然后轉(zhuǎn)發(fā)給從其“鄰居”節(jié)點(diǎn)中隨機(jī)選擇的多個(gè)節(jié)點(diǎn),完成后回到步驟(5);(7)節(jié)點(diǎn)(P)判斷其“鄰居”節(jié)點(diǎn)是否具有它所需要的數(shù)據(jù),如果是,該“鄰居”節(jié)點(diǎn)為“伙伴”節(jié)點(diǎn),進(jìn)入步驟(8);否則,回到步驟(5);(8)節(jié)點(diǎn)(P)和鄰居節(jié)點(diǎn)互相將對(duì)方的節(jié)點(diǎn)信息加入其“伙伴”節(jié)點(diǎn)列表中,然后互相將對(duì)方的節(jié)點(diǎn)信息從其“鄰居”節(jié)點(diǎn)列表中刪除;(9)判斷節(jié)點(diǎn)(P)是否播放結(jié)束,如果是,向其所有的“鄰居“節(jié)點(diǎn)發(fā)送退出信息,然后結(jié)束;否則,回到步驟(3)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于步驟(2)包括以下步驟(2.1)節(jié)點(diǎn)(P)使用要觀看的頻道的標(biāo)識(shí)符和其當(dāng)前播放時(shí)間作為請(qǐng)求條件向索引服務(wù)器發(fā)起請(qǐng)求;(2.2)索引服務(wù)器查詢數(shù)據(jù)庫(kù)中的時(shí)間表后將與節(jié)點(diǎn)(P)播放時(shí)間鄰近的節(jié)點(diǎn)的節(jié)點(diǎn)信息反饋給請(qǐng)求節(jié)點(diǎn);(2.3)節(jié)點(diǎn)(P)將接收的節(jié)點(diǎn)信息加入其普通節(jié)點(diǎn)列表中。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于步驟(4)包括以下步驟(4.1)節(jié)點(diǎn)(P)判斷其“鄰居”節(jié)點(diǎn)數(shù)目是否達(dá)到上限值, m是系統(tǒng)中節(jié)點(diǎn)的數(shù)目,如果是,進(jìn)入步驟(5);否則,進(jìn)入步驟(4.2);(4.2)節(jié)點(diǎn)(P)與和它當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)建立TCP網(wǎng)絡(luò)連接;(4.3)節(jié)點(diǎn)(P)向與其網(wǎng)絡(luò)連接的節(jié)點(diǎn)發(fā)起請(qǐng)求;(4.4)被請(qǐng)求節(jié)點(diǎn)收到節(jié)點(diǎn)(P)的請(qǐng)求后,判斷其“鄰居”節(jié)點(diǎn)數(shù)目是否達(dá)到上限值,如果是,發(fā)送拒絕信息,然后進(jìn)入步驟(5);否則,進(jìn)入步驟(4.5);(4.5)被請(qǐng)求節(jié)點(diǎn)判斷其“鄰居”列表中是否已經(jīng)存在節(jié)點(diǎn)(P)的節(jié)點(diǎn)信息,如果是,發(fā)送拒絕信息,然后進(jìn)入步驟(5);否則,進(jìn)入步驟(4.6);(4.6)被請(qǐng)求節(jié)點(diǎn)將節(jié)點(diǎn)(P)的節(jié)點(diǎn)信息加入其“鄰居”節(jié)點(diǎn)列表中,然后通知節(jié)點(diǎn)(P);(4.7)節(jié)點(diǎn)(P)收到被請(qǐng)求節(jié)點(diǎn)回應(yīng)的信息后將被請(qǐng)求節(jié)點(diǎn)的節(jié)點(diǎn)信息加入其“鄰居”節(jié)點(diǎn)列表中;(4.8)判斷節(jié)點(diǎn)(P)是否第一次進(jìn)入系統(tǒng),如果是,進(jìn)入步驟(4.9);否則,進(jìn)入步驟(5);(4.9)節(jié)點(diǎn)(P)向其所有的“鄰居”節(jié)點(diǎn)發(fā)送加入信息。
全文摘要
本發(fā)明公開了一種流媒體點(diǎn)播系統(tǒng)中時(shí)間相關(guān)的對(duì)等網(wǎng)絡(luò)組織方法,各節(jié)點(diǎn)執(zhí)行以下步驟①創(chuàng)建節(jié)點(diǎn)列表;②記錄與其處于同一頻道所有節(jié)點(diǎn)的節(jié)點(diǎn)信息;③判斷其普通節(jié)點(diǎn)列表中的各節(jié)點(diǎn)的當(dāng)前播放時(shí)間是否與其鄰近;④與當(dāng)前播放時(shí)間鄰近的各節(jié)點(diǎn)建立“鄰居”關(guān)系;⑤判斷當(dāng)次與上次發(fā)送信息的時(shí)間間隔是否達(dá)到交流周期;⑥與各“鄰居”節(jié)點(diǎn)交流信息;⑦判斷其“鄰居”節(jié)點(diǎn)是否緩存有所需要的數(shù)據(jù);⑧與緩存有它所需要的數(shù)據(jù)的節(jié)點(diǎn)建立“伙伴”關(guān)系;⑨判斷播放是否結(jié)束。本發(fā)明由節(jié)點(diǎn)挑選出播放時(shí)間鄰近的節(jié)點(diǎn),再選取緩存有其所需數(shù)據(jù)的節(jié)點(diǎn),并建立連接。本發(fā)明保證了系統(tǒng)的穩(wěn)定性和動(dòng)態(tài)性,消除了“單點(diǎn)失效“,并提高了節(jié)點(diǎn)獲取信息的準(zhǔn)確性。
文檔編號(hào)H04L29/02GK1885812SQ20061001917
公開日2006年12月27日 申請(qǐng)日期2006年5月29日 優(yōu)先權(quán)日2006年5月29日
發(fā)明者金海 , 廖小飛, 周怡, 程斌 申請(qǐng)人:華中科技大學(xué)