專利名稱:一種客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法及流媒體分發(fā)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法、流媒體分發(fā)系統(tǒng)、系統(tǒng)相關(guān)實體及P2P客戶端節(jié)點加入流媒體系統(tǒng)的方法。
背景技術(shù):
現(xiàn)有技術(shù)中產(chǎn)生了一種內(nèi)容分發(fā)網(wǎng)絡(luò)/媒體分發(fā)網(wǎng)絡(luò)(content/mediadelivery network,CDN/MDN),通過將網(wǎng)站的內(nèi)容從源節(jié)點發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”節(jié)點,使用戶可以就近取得所需的內(nèi)容,提高用戶訪問網(wǎng)站的響應(yīng)速度。對于多媒體內(nèi)容,如視頻點播、視頻直播等由于視頻傳輸具有實時性、大容量的特點,通過將視頻內(nèi)容分布到靠近用戶的邊緣節(jié)點上,可以為用戶提供更好的播放質(zhì)量,同時又能大大降低對骨干網(wǎng)絡(luò)的沖擊。
現(xiàn)有技術(shù)中的CDN/MDN結(jié)構(gòu)示意圖如圖1所示,其中全局服務(wù)器負載平衡(Global Server Load Balancing,GSLB),將用戶對媒體內(nèi)容的請求調(diào)度到靠近用戶的邊緣節(jié)點上。
服務(wù)器負載平衡(Server Load Balancing,SLB),負責(zé)本地用戶的內(nèi)容請求路由和負載均衡,根據(jù)內(nèi)容分布和設(shè)備負載狀況選擇最優(yōu)的媒體服務(wù)器(MS,Media Server)提供服務(wù)。
媒體管理器(Media Management,MM),進行媒體內(nèi)容的分發(fā),中心和邊緣之間、邊緣和邊緣之間、邊緣節(jié)點內(nèi)多個MS之間的調(diào)度。
圖1所示CDM/MDN結(jié)構(gòu)中,由于邊緣節(jié)點上MS的帶寬是確定的,因此能服務(wù)的用戶數(shù)量是有限的。要想滿足用戶的需求,邊緣節(jié)點的能力要隨用戶數(shù)量的增加作線性增長,因此現(xiàn)有技術(shù)中這種CDM/MDN結(jié)構(gòu),對邊緣節(jié)點的投資是很龐大的。由于用戶的服務(wù)請求具有很大的不確定性,即使增加邊緣節(jié)點的系統(tǒng)能力也不可能完全滿足用戶請求的突發(fā)性增長。因此一旦某個區(qū)域的用戶請求超過網(wǎng)絡(luò)的最大并發(fā)量,網(wǎng)絡(luò)只能拒絕服務(wù)。
目前互聯(lián)網(wǎng)上已經(jīng)出現(xiàn)了很多純P2P(peer to peer)的流媒體軟件系統(tǒng),這些系統(tǒng)的共同特點在于能夠通過一個網(wǎng)絡(luò)上的調(diào)度模塊,在客戶端之間建立互助關(guān)系,網(wǎng)絡(luò)上的流服務(wù)器僅提供少量的流,客戶端(peer節(jié)點)之間通過上述互助關(guān)系,相互分發(fā)流數(shù)據(jù)來實現(xiàn)大量客戶端同時觀看流媒體節(jié)目的功能。調(diào)度模塊不記錄節(jié)點網(wǎng)絡(luò)的拓撲關(guān)系,節(jié)點之間的相互幫助采用“盡力而為”的方式。發(fā)明人在本發(fā)明過程中發(fā)現(xiàn),現(xiàn)有技術(shù)中的這種P2P流媒體軟件系統(tǒng)沒有考慮地域性的問題,有可能造成大量的跨骨干網(wǎng)流量。且調(diào)度模塊不記錄節(jié)點網(wǎng)絡(luò)的拓撲關(guān)系,不進行統(tǒng)一的資源調(diào)度,基本上只依靠節(jié)點相互之間進行數(shù)據(jù)分發(fā),頻道切換時間長,不能支持大碼流節(jié)目,由于節(jié)點自身的不穩(wěn)定和“盡力而為”的互助方式也可能造成節(jié)目播放的不穩(wěn)定。
綜上所述,現(xiàn)有技術(shù)中基于客戶端/服務(wù)器(Client/Server)模式的流媒體系統(tǒng),無論是完全中心式的模式,還是中心-邊緣分布式(例如CDN)的模式,對媒體服務(wù)器的負載都是很大的。媒體服務(wù)器的能力決定了能同時提供服務(wù)的用戶的數(shù)量,因而,為了滿足大量用戶的流媒體應(yīng)用要求,對流媒體服務(wù)提供商來說,服務(wù)器的投資是很大的。而互聯(lián)網(wǎng)上基于P2P技術(shù)的流媒體直播服務(wù),由于服務(wù)器資源有限,服務(wù)器只提供很少的啟動流媒體數(shù)據(jù),大部分節(jié)點只能依靠其它節(jié)點的上傳能力來觀看視頻,因此服務(wù)質(zhì)量難以保證。同時,P2P技術(shù)由于受用戶節(jié)點上傳能力的限制,一般無法提供高碼率的直播節(jié)目。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法及流媒體分發(fā)系統(tǒng),用以提高現(xiàn)有技術(shù)中流媒體播放的傳輸速度和播放質(zhì)量。
一種客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法,應(yīng)用于流媒體分發(fā)系統(tǒng),所述流媒體分發(fā)系統(tǒng)包括中心內(nèi)容服務(wù)器、邊緣服務(wù)器、用戶請求調(diào)度服務(wù)器以及客戶端節(jié)點;該方法包括由所述用戶請求調(diào)度服務(wù)器為中心內(nèi)容服務(wù)器發(fā)送給邊緣服務(wù)器的數(shù)據(jù)子流建立若干個子樹,每一個子樹用于傳輸一個數(shù)據(jù)子流;每一個子樹包含一個或多個樹干,每一個樹干節(jié)點僅有一個樹干子節(jié)點,每一個樹干節(jié)點連接一個或多個葉節(jié)點;每一個所述樹干節(jié)點和葉節(jié)點為客戶端節(jié)點;一個客戶端節(jié)點僅作為一個樹干的樹干節(jié)點,可作為多個不同子樹的葉節(jié)點;當(dāng)用戶請求調(diào)度服務(wù)器收到客戶端節(jié)點發(fā)送的加入系統(tǒng)請求后,向客戶端節(jié)點返回可連接的邊緣服務(wù)器信息,返回指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,當(dāng)判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時,還返回對應(yīng)子樹的樹干底層節(jié)點信息,當(dāng)判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,還返回傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述空閑節(jié)點為連接的葉節(jié)點數(shù)量沒有達到設(shè)定的葉節(jié)點閾值的樹干節(jié)點;所述用戶請求調(diào)度服務(wù)器接收所述客戶端節(jié)點上報的節(jié)點狀態(tài)信息,所述節(jié)點狀態(tài)信息為所述客戶端節(jié)點加入到對應(yīng)子樹后,根據(jù)建立連接的樹干節(jié)點信息和葉節(jié)點數(shù)量,上報的樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點信息;并根據(jù)上報的節(jié)點狀態(tài)信息更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;所述用戶請求調(diào)度服務(wù)器接收到所述客戶端節(jié)點發(fā)送的退出系統(tǒng)消息后,更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲。
一種流媒體分發(fā)系統(tǒng),包括中心內(nèi)容服務(wù)器、邊緣服務(wù)器、用戶請求調(diào)度服務(wù)器;所述中心內(nèi)容服務(wù)器用于將流媒體數(shù)據(jù)進行切片處理,形成多個數(shù)據(jù)子流,發(fā)送給所述邊緣服務(wù)器;所述邊緣服務(wù)器用于緩存接收的數(shù)據(jù)子流并發(fā)送給加入到系統(tǒng)中的客戶端節(jié)點;所述用戶請求調(diào)度服務(wù)器用于建立、存儲并更新客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;具體包括接收客戶端節(jié)點發(fā)送的加入系統(tǒng)請求,向客戶端節(jié)點返回可連接的邊緣服務(wù)器信息,返回指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,當(dāng)判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時,還返回對應(yīng)子樹的樹干底層節(jié)點信息,當(dāng)判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,還返回傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述空閑節(jié)點為連接的葉節(jié)點數(shù)量沒有達到設(shè)定的葉節(jié)點閾值的樹干節(jié)點;接收客戶端節(jié)點上報的節(jié)點狀態(tài)信息,所述節(jié)點狀態(tài)信息為所述客戶端節(jié)點加入到對應(yīng)子樹后,根據(jù)建立連接的樹干節(jié)點信息和葉節(jié)點數(shù)量,上報的樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點信息;并根據(jù)上報的節(jié)點狀態(tài)信息更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;接收客戶端節(jié)點發(fā)送的退出系統(tǒng)消息后,更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲。
一種用戶請求調(diào)度服務(wù)器,應(yīng)用本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng),包括存儲單元、交互單元和更新單元;所述存儲單元,用于存儲所述流媒體分發(fā)系統(tǒng)中的邊緣服務(wù)器網(wǎng)絡(luò)拓撲、客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;所述交互單元,用于接收所述客戶端節(jié)點發(fā)起的加入系統(tǒng)請求,根據(jù)所述存儲單元存儲的所述網(wǎng)絡(luò)拓撲和空閑節(jié)點信息,向發(fā)起加入系統(tǒng)請求的客戶端節(jié)點返回可連接的邊緣服務(wù)器信息,返回指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,當(dāng)判斷出指定傳輸?shù)臄?shù)據(jù)子流存在樹干底層節(jié)點時還返回對應(yīng)子樹的樹干底層節(jié)點信息,當(dāng)判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,還返回傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;
還用于接收所述客戶端節(jié)點在加入系統(tǒng)后上報的包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息,發(fā)送給所述更新單元;接收所述客戶端節(jié)點發(fā)送的退出系統(tǒng)消息,發(fā)送給所述更新單元;所述更新單元,用于根據(jù)所述交互單元發(fā)送的節(jié)點狀態(tài)信息及退出系統(tǒng)消息,更新所述存儲單元中保存的客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息。
一種客戶端節(jié)點,應(yīng)用于本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng),包括加入系統(tǒng)功能單元、退出系統(tǒng)功能單元、樹干功能單元、樹葉功能單元、流媒體播放單元、信息存儲更新單元和上報功能單元;所述加入系統(tǒng)功能單元,用于向所述流媒體分發(fā)系統(tǒng)中的用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求,接收所述用戶請求調(diào)度服務(wù)器返回的邊緣服務(wù)器信息,接收指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收所述用戶請求調(diào)度服務(wù)器判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時返回的樹干底層節(jié)點信息,接收所述用戶請求調(diào)度服務(wù)器判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;并將接收的所述邊緣服務(wù)器信息、傳輸?shù)臄?shù)據(jù)子流標(biāo)識以及所述樹干底層節(jié)點信息發(fā)送給所述樹干功能單元,將接收的所述空閑節(jié)點信息發(fā)送給所述樹葉功能單元;所述退出系統(tǒng)功能單元,用于向所述用戶請求調(diào)度服務(wù)器以及建立連接的其它客戶端節(jié)點發(fā)送退出系統(tǒng)消息并斷開連接;接收其它P2P客戶端發(fā)送的退出系統(tǒng)消息,通知給所述信息存儲更新單元;所述樹干功能單元,用于與所述加入系統(tǒng)功能單元發(fā)送的邊緣服務(wù)器或樹干底層節(jié)點之一建立連接,將客戶端節(jié)點加入到所述對應(yīng)子樹中作為樹干節(jié)點接收指定的數(shù)據(jù)子流,發(fā)送給所述流媒體播放單元;并傳輸指定的數(shù)據(jù)子流給建立連接的葉節(jié)點;并將樹干節(jié)點連接關(guān)系和建立連接的葉節(jié)點數(shù)量信息發(fā)送給所述信息存儲更新單元;所述樹葉功能單元,用于與所述加入系統(tǒng)功能單元發(fā)送的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,將客戶端節(jié)點作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收其它數(shù)據(jù)子流,發(fā)送給所述流媒體播放單元;所述流媒體播放單元,用于將接收的各數(shù)據(jù)子流合成流媒體數(shù)據(jù)通過本地播放器播放。
一種客戶端節(jié)點加入流媒體分發(fā)系統(tǒng)的方法,應(yīng)用本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng),該方法包括客戶端節(jié)點向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求,接收所述用戶請求調(diào)度服務(wù)器返回的邊緣服務(wù)器信息,接收指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收所述用戶請求調(diào)度服務(wù)器判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時返回的樹干底層節(jié)點信息,接收所述用戶請求調(diào)度服務(wù)器判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述客戶端節(jié)點與接收的所述邊緣服務(wù)器或樹干底層節(jié)點之一建立連接,加入到所述對應(yīng)子樹中作為樹干節(jié)點接收指定的數(shù)據(jù)子流,并傳輸指定的數(shù)據(jù)子流給建立連接的葉節(jié)點;與接收的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收其它數(shù)據(jù)子流;并當(dāng)自身成功作為樹干節(jié)點時,向所述用戶請求調(diào)度服務(wù)器上報包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息。
本發(fā)明實施例通過構(gòu)建P2P客戶端之間的P2P網(wǎng)絡(luò)拓撲來傳輸一部分流數(shù)據(jù),降低了ES-P內(nèi)容服務(wù)器的負載,相對于P2P流媒體直播網(wǎng)絡(luò)能提供高帶寬、質(zhì)量有保證的直播服務(wù)。同時,本發(fā)明實施例提供的流媒體分發(fā)網(wǎng)絡(luò)避免了P2P直播中節(jié)點間長距離傳輸數(shù)據(jù)對骨干網(wǎng)絡(luò)的沖擊,使P2P節(jié)點間的數(shù)據(jù)傳輸被局限在網(wǎng)絡(luò)邊緣的小區(qū)域內(nèi),有利于節(jié)點間流媒體數(shù)據(jù)的互助下載,在節(jié)點退出時能快速恢復(fù)網(wǎng)絡(luò)拓撲,有效地降低因此帶來的網(wǎng)絡(luò)擾動。
圖1為現(xiàn)有技術(shù)中的CDN/MDN結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng)結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng)中RRS-P的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng)中P2P客戶端節(jié)點的結(jié)構(gòu)示意圖之一;圖5為本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng)中P2P客戶端節(jié)點的結(jié)構(gòu)示意圖之二;圖6為本發(fā)明實施例提供的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲示意圖;圖7為本發(fā)明實施例提供的P2P客戶端節(jié)點加入流媒體分發(fā)系統(tǒng)的流程圖;圖8為本發(fā)明實施例提供的P2P客戶端節(jié)點以幫助節(jié)點身份加入流媒體分發(fā)系統(tǒng)的流程圖;圖9為本發(fā)明實施例提供的P2P客戶端節(jié)點作為葉節(jié)點加入到P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲中的對應(yīng)子樹的流程圖;圖10為本發(fā)明實施例提供的節(jié)點退出流媒體分發(fā)系統(tǒng)的流程圖。
具體實施例方式
本發(fā)明實施例通過構(gòu)建P2P客戶端之間的P2P網(wǎng)絡(luò)拓撲,使得P2P客戶端節(jié)點能夠從其它P2P客戶端節(jié)點獲取一部分流媒體數(shù)據(jù)(不足的部分仍然向內(nèi)容服務(wù)器請求),實現(xiàn)在不降低服務(wù)質(zhì)量的同時,降低了對服務(wù)器的負載能力要求。本發(fā)明實施例的側(cè)重點是通過P2P客戶端節(jié)點間網(wǎng)絡(luò)拓撲的構(gòu)建,使P2P客戶端節(jié)點間的連接都局限在局部網(wǎng)絡(luò)中,從而提供相對有保證的傳輸質(zhì)量并減少跨網(wǎng)絡(luò)的流量。
下面結(jié)合各個附圖對本發(fā)明實施例技術(shù)方案的主要實現(xiàn)原理具體實施方式
及其對應(yīng)能夠達到的有益效果進行詳細的闡述。
本發(fā)明實施例提供的流媒體分發(fā)系統(tǒng)結(jié)構(gòu)如圖2所示,包括最終用戶接口(Ender User Portal,EU-Portal)、支持P2P技術(shù)的中心內(nèi)容服務(wù)器(P2P CentreServer,下面的描述中簡寫為CS-P)、支持P2P技術(shù)的用戶請求調(diào)度服務(wù)器(Request Routing Server,下面的描述中簡寫為RRS-P)、支持P2P技術(shù)的邊緣服務(wù)器(P2P Edge Server,下面的描述中簡寫為ES-P)以及若干個P2P客戶端節(jié)點。
流媒體分發(fā)系統(tǒng)中的CS-P、RRS-P、ES-P為1+1+N配置,即CS-P、RRS-P各一對(雙機熱備份),ES-P為一個以上,地理位置接近的多個ES-P組成邊緣P2P自治域;同一個邊緣P2P自治域中的各ES-P共享接收的數(shù)據(jù)子流。
EU-Portal負責(zé)流媒體直播內(nèi)容的展示、檢索,供用戶點播不同的流媒體節(jié)目。
CS-P用于將流媒體數(shù)據(jù)進行切片處理,形成多個數(shù)據(jù)子流,發(fā)送給ES-P。CS-P將流媒體數(shù)據(jù)進行切片處理形成n個數(shù)據(jù)切片,并使用冗余算法生成m個冗余切片,將n個數(shù)據(jù)切片和m個冗余切片編碼成n+m個獨立的數(shù)據(jù)子流發(fā)送給所述ES-P。例如,1Mbps碼流的數(shù)據(jù),將每秒的流量按照時間切分成20份,利用RS(Reed-Solomon里德所羅門)算法生成22個包,相當(dāng)于整個碼流形成了22條子流,這些子流被發(fā)送到ES-P上。
ES-P用于緩存接收的數(shù)據(jù)子流并發(fā)送給加入到系統(tǒng)中的P2P客戶端節(jié)點。
RRS-P用于存儲ES-P網(wǎng)絡(luò)拓撲,還用于建立并存儲P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲,每一個P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲中包括n+m個子樹,每個子樹分別用于傳輸一個CS-P發(fā)送給ES-P的獨立的數(shù)據(jù)子流,RRS-P還存儲P2P客戶端節(jié)點上報的空閑節(jié)點信息,所述空閑節(jié)點為連接的葉節(jié)點數(shù)量沒有達到設(shè)定的葉節(jié)點閾值的樹干節(jié)點。
P2P客戶端用于向RRS-P發(fā)起加入/退出系統(tǒng)請求,接收RRS-P返回的ES-P信息,接收指定所述P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收RRS-P判斷出存在指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹樹干底層節(jié)點時返回的對應(yīng)子樹的樹干底層節(jié)點信息,接收RRS-P判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述P2P客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;并加入到對應(yīng)子樹中作為樹干節(jié)點接收并傳輸指定的數(shù)據(jù)子流,與返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收其它數(shù)據(jù)子流,將接收的各數(shù)據(jù)子流合成流媒體數(shù)據(jù)通過本地播放器播放。
特別的,系統(tǒng)中的ES-P不止一個,地理位置接近的多個ES-P組成邊緣P2P自治域;同一個邊緣P2P自治域中的各ES-P共享接收的數(shù)據(jù)子流。
特別的,在RRS-P中,對每一個流媒體直播頻道,為每一個邊緣P2P自治域存儲一個對應(yīng)的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲。
特別的,如圖3所示,本發(fā)明實施例所述的請求調(diào)度服務(wù)器RRS-P包括存儲單元101、交互單元102和更新單元103和檢測單元104,其中存儲單元101,用于存儲流媒體分發(fā)系統(tǒng)中的ES-P網(wǎng)絡(luò)拓撲、P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息。
交互單元102,用于接收P2P客戶端節(jié)點發(fā)起的加入系統(tǒng)請求,根據(jù)存儲單元101存儲的網(wǎng)絡(luò)拓撲和空閑節(jié)點信息,向發(fā)起加入系統(tǒng)請求的P2P客戶端節(jié)點返回可連接的ES-P信息、指定P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息、傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息。
還用于接收P2P客戶端節(jié)點在加入系統(tǒng)后上報的包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息,發(fā)送給更新單元103;接收P2P客戶端節(jié)點發(fā)送的退出系統(tǒng)消息,發(fā)送給更新單元103。
更新單元103,用于根據(jù)交互單元102發(fā)送的節(jié)點狀態(tài)信息及退出系統(tǒng)消息,更新存儲單元101中保存的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息。
檢測單元104,用于檢測P2P客戶端節(jié)點是否異常退出;當(dāng)檢測到P2P客戶端節(jié)點異常退出時,更新存儲單元101中保存的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲。
如圖4所示,本發(fā)明實施例所述的P2P客戶端節(jié)點包括加入系統(tǒng)功能單元201、退出系統(tǒng)功能單元202、樹干功能單元203、樹葉功能單元204、流媒體播放單元205、信息存儲更新單元206和上報功能單元207,其中,加入系統(tǒng)功能單元201,用于向流媒體分發(fā)系統(tǒng)中的RRS-P發(fā)起加入系統(tǒng)請求,接收RRS-P返回的ES-P信息、指定P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息、傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;并將接收的ES-P信息、樹干底層節(jié)點信息發(fā)送給樹干功能單元203,將接收的空閑節(jié)點信息發(fā)送給樹葉功能單元204。
退出系統(tǒng)功能單元202,用于向RRS-P以及建立連接的其它P2P客戶端節(jié)點發(fā)送退出系統(tǒng)消息并斷開連接;接收其它P2P客戶端發(fā)送的退出系統(tǒng)消息,通知給信息存儲更新單元206。
樹干功能單元203,用于與加入系統(tǒng)功能單元201發(fā)送的ES-P或樹干底層節(jié)點之一建立連接,將P2P客戶端節(jié)點加入到對應(yīng)子樹中作為樹干節(jié)點接收指定的數(shù)據(jù)子流,發(fā)送給流媒體播放單元205;并傳輸指定的數(shù)據(jù)子流給建立連接的葉節(jié)點;并將樹干節(jié)點連接關(guān)系和建立連接的葉節(jié)點數(shù)量信息發(fā)送給信息存儲更新單元206。
樹葉功能單元204,用于與加入系統(tǒng)功能單元201發(fā)送的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,將P2P客戶端節(jié)點作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收其它數(shù)據(jù)子流,發(fā)送給流媒體播放單元205。
流媒體播放單元205,用于將接收的各數(shù)據(jù)子流合成流媒體數(shù)據(jù)通過本地播放器播放。
信息存儲更新單元206,用于接收退出系統(tǒng)功能單元202發(fā)送的通知以及樹干功能單元203發(fā)送的樹干節(jié)點連接關(guān)系,更新并存儲所屬樹干的上級樹干節(jié)點信息;并根據(jù)建立連接的葉節(jié)點數(shù)量確定出本節(jié)點是否空閑;還接收、存儲或發(fā)送上級樹干節(jié)點信息給樹干子節(jié)點,接收、存儲或發(fā)送空閑節(jié)點信息給上下級樹干節(jié)點和葉節(jié)點。
上報功能單元207,用于從信息存儲更新單元206獲取樹干節(jié)點連接關(guān)系及本節(jié)點是否空閑信息,向RRS-P上報包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息。
特別的,如圖5所示,加入系統(tǒng)功能單元201包括第一功能子單元2011,用于向RRS-P發(fā)起加入系統(tǒng)請求,并在加入系統(tǒng)請求中指明作為觀看節(jié)點的身份加入系統(tǒng);接收RRS-P返回的ES-P信息、傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息指定P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息;并將接收的ES-P信息、樹干底層節(jié)點信息發(fā)送給樹干功能單元203,將接收的空閑節(jié)點信息發(fā)送給樹葉功能單元204。
第二功能子單元2012,用于向RRS-P發(fā)起加入系統(tǒng)請求,并在加入系統(tǒng)請求中指明作為幫助節(jié)點的身份加入系統(tǒng);接收RRS-P返回的ES-P信息、指定P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息;并將接收的ES-P信息、樹干底層節(jié)點信息發(fā)送給樹干功能單元203。
本發(fā)明實施例所提供的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲的構(gòu)造方法如下由RRS-P為CS-P發(fā)送給ES-P的數(shù)據(jù)子流建立若干個子樹,每一個子樹用于傳輸一個數(shù)據(jù)子流;每一個子樹包含一個或多個樹干,每一個樹干節(jié)點僅有一個樹干子節(jié)點,每一個樹干節(jié)點連接一個或多個葉節(jié)點;每一個樹干節(jié)點和葉節(jié)點為P2P客戶端節(jié)點;一個P2P客戶端節(jié)點僅作為一個樹干的樹干節(jié)點,可作為多個不同子樹的葉節(jié)點;當(dāng)RRS-P收到P2P客戶端節(jié)點發(fā)送的加入系統(tǒng)請求后,向P2P客戶端節(jié)點返回可連接的ES-P信息、指定P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,以及指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息(如果有對應(yīng)子樹的樹干底層節(jié)點信息)、傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息(如果有空閑節(jié)點信息);P2P客戶端節(jié)點加入到對應(yīng)子樹后,根據(jù)建立連接的樹干節(jié)點信息和葉節(jié)點數(shù)量,向RRS-P上報包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息;RRS-P接收到P2P客戶端節(jié)點上報的節(jié)點狀態(tài)信息后,更新本地存儲的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;
RRS-P接收到P2P客戶端節(jié)點發(fā)送的退出系統(tǒng)消息后,更新本地存儲的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲。
特別的,RRS-P根據(jù)CS-P發(fā)送給ES-P的數(shù)據(jù)子流的數(shù)量n,建立n個子樹,每個子樹用于傳輸一個對應(yīng)的數(shù)據(jù)子流。
特別的,每個子樹的樹干節(jié)點和葉節(jié)點起始為空;RRS-P指定最初接入的n個P2P客戶端節(jié)點作為傳輸每個數(shù)據(jù)子流的對應(yīng)子樹的第一個樹干節(jié)點;向所述P2P客戶端節(jié)點返回可連接的ES-P信息、指定所述P2P客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流和傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息。
特別的,RRS-P設(shè)定每個子樹的樹干節(jié)點數(shù)量閾值;當(dāng)RRS-P收到P2P客戶端節(jié)點發(fā)送的加入系統(tǒng)請求后,指定其加入的對應(yīng)子樹,并檢查對應(yīng)子樹的樹干節(jié)點數(shù)量是否達到設(shè)定的閾值;若對應(yīng)子樹的樹干節(jié)點數(shù)量沒有達到設(shè)定的閾值,則返回對應(yīng)子樹的樹干底層節(jié)點信息;若對應(yīng)子樹的樹干節(jié)點數(shù)量已達到設(shè)定的閾值,則指示所述P2P客戶端節(jié)點從返回的ES-P處獲取指定傳輸?shù)臄?shù)據(jù)子流,創(chuàng)建新樹干。
本發(fā)明實施例中,原始流媒體數(shù)據(jù)被編碼成多個獨立的子流s1、s2、s3......sn,通過構(gòu)建獨立的拓撲樹結(jié)構(gòu)來分別傳輸各個子流。傳輸子流s1的拓撲樹就稱為子樹s1,傳輸子流sn的拓撲樹就稱為子樹sn。一個P2P客戶端節(jié)點要想收看流媒體節(jié)目,需要加入多個子樹獲取流媒體數(shù)據(jù)的不同子流,然后解碼復(fù)原成原始流媒體數(shù)據(jù)才能觀看。
如圖6所示,為本發(fā)明實施例提供的P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲結(jié)構(gòu)示意圖,圖中,流媒體數(shù)據(jù)流s被分為獨立的3個子流s1、s2和s3,并形成子樹s1、子樹s2和子樹s3。子樹s1中,節(jié)點1、4、7、10為樹干節(jié)點,子樹s2中,節(jié)點2、5、8、10為樹干節(jié)點,子樹s3中,節(jié)點3、6、9、12為樹干節(jié)點。每個樹干節(jié)點只有唯一的一個樹干子節(jié)點。以子樹s1為例,樹干節(jié)點1為樹干節(jié)點4的樹干父節(jié)點,樹干節(jié)點7為樹干節(jié)點4的樹干子節(jié)點,節(jié)點4只有唯一的樹干父節(jié)點1和唯一的樹干子節(jié)點7。
節(jié)點2、3、5、6、8、9、11、12是子樹s1的葉節(jié)點,葉節(jié)點只能通過相應(yīng)的樹干節(jié)點獲取子流s1,但不能轉(zhuǎn)發(fā)子流s1。例如,圖6中,節(jié)點2、3與子樹s1的樹干節(jié)點1建立連接,節(jié)點2、3作為節(jié)點1的葉節(jié)點,從節(jié)點1獲取子流s1。
子樹s1的樹干節(jié)點如果作為觀看節(jié)點加入系統(tǒng)的話,為了獲取到完整的數(shù)據(jù)流,仍然需要獲取子流s2與s3,需要作為子樹s2和s3的葉節(jié)點。圖6中,節(jié)點1加入子樹s2,獲取子流s2,作為子樹s2的葉節(jié)點,其對應(yīng)的葉子父節(jié)點為子樹s2的樹干節(jié)點2;同時,節(jié)點1還加入子樹s3,獲取子流s3,作為子樹s3的葉節(jié)點,其對應(yīng)的葉子父節(jié)點為子樹s3的樹干節(jié)點3。
子樹s1的葉節(jié)點2、3、5、6、8、9、11、12同時也是子樹s2或s3的樹干節(jié)點,當(dāng)然,這些節(jié)點也可以不作為任何子樹的樹干節(jié)點,僅作為每個子樹的葉節(jié)點,從相應(yīng)的樹干節(jié)點處獲取子流。
特別的,如果一個節(jié)點通過P2P方式不能從其它節(jié)點處獲取全部的數(shù)據(jù)子流,該節(jié)點直接向相應(yīng)的ES-P請求對應(yīng)數(shù)據(jù)子流。
基于上述實施例提供的流媒體分發(fā)系統(tǒng)及P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲,本發(fā)明實施例提供了一種P2P客戶端節(jié)點加入流媒體分發(fā)系統(tǒng)的方法,如圖7所示,包括如下步驟步驟1,假設(shè)P2P客戶端節(jié)點N1請求加入某個直播頻道的P2P網(wǎng)絡(luò)。P2P客戶端節(jié)點N1向RRS-P發(fā)送請求加入系統(tǒng)消息,消息中攜帶所要加入的直播頻道以及自身的IP地址、端口信息Port。
RRS-P需要判斷節(jié)點N1所發(fā)送的消息中攜帶的IP、Port和實際與N1連接的IP、Port是否相同。如果IP、Port不相同,則N1連接在網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT,Network Address Translation)后面,N1是私網(wǎng)節(jié)點,不能接收連接請求,因而也就只能接收流媒體節(jié)目進行觀看,不能作為樹干節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)子流給其它的P2P客戶端節(jié)點;如果IP、Port相同,說明N1是公網(wǎng)節(jié)點,可以接收連接請求,作為樹干節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)子流。
步驟2,RRS-P根據(jù)N1的實際連接IP地址,選擇一個或多個與N1在網(wǎng)絡(luò)上距離較近且有空閑資源的ES-P,并將ES-P信息返回給N1。通??梢赃x擇與N1在同一個自治域的ES-P,而且ES-P的帶寬和CPU負荷都比較空閑。
如果N1是公網(wǎng)節(jié)點,RRS-P進一步要指定N1分發(fā)的數(shù)據(jù)子流。例如,RRS-P指定N1分發(fā)子流s1,也就是指定N1加入子樹s1作為樹干節(jié)點,那么RRS-P要向N1返回與N1位于相同自治域的子樹s1的底層樹干節(jié)點的信息。為了控制傳輸延遲,每個子流的樹干節(jié)點的層次不能太多,因此一個子樹可以有多個樹干,這樣就會有多個底層樹干節(jié)點,此時,RRS-P需要向N1返回子樹s1的一定數(shù)量的底層樹干節(jié)點,具體返回哪些底層樹干節(jié)點需要考慮樹干的層級,對于超過一定層級的樹干將不返回其底層樹干節(jié)點給N1。對其它的子樹,由于N1不用分發(fā)這些子樹傳輸?shù)淖恿鳎虼薘RS-P可以任選一些與N1位于相同自治域的空閑節(jié)點(空閑節(jié)點一定是樹干節(jié)點,只不過其當(dāng)前連接的葉節(jié)點數(shù)量還沒有達到設(shè)定的葉節(jié)點閾值)返回給N1。
步驟3,N1向指定子樹的底層樹干節(jié)點請求作為樹干子節(jié)點加入,本實施例中N1嘗試加入子樹s1獲取子流s1。N1向RRS-P返回信息中的子樹s1的樹干底層節(jié)點(由于一個子樹可能存在多個樹干,因此可能返回一個或多個樹干底層節(jié)點)建立連接,然后逐一向這些樹干底層節(jié)點請求作為樹干子節(jié)點加入。
如果N1請求的樹干底層節(jié)點沒有樹干子節(jié)點,則接受N1的加入請求,N1斷開與其它樹干底層節(jié)點的嘗試連接并向RRS-P報告自己的連接關(guān)系。如果N1請求的樹干底層節(jié)點已經(jīng)有樹干子節(jié)點了,則該樹干底層節(jié)點向N1返回該樹干子節(jié)點信息,N1將該樹干子節(jié)點加入備選節(jié)點,并試圖連接該樹干子節(jié)點。重復(fù)以上過程直到有樹干節(jié)點接受N1的連接請求。
N1新加入為樹干節(jié)點后,接收樹干父節(jié)點發(fā)送的一個或多個上級樹干節(jié)點的對應(yīng)節(jié)點信息,存儲并轉(zhuǎn)發(fā)給樹干子節(jié)點。
特別的,樹干節(jié)點轉(zhuǎn)發(fā)上級樹干節(jié)點的對應(yīng)節(jié)點信息的層級可以根據(jù)需要設(shè)定,例如,可以在每一個樹干節(jié)點的對應(yīng)節(jié)點信息(包含樹干節(jié)點的IP地址和端口信息port)中攜帶生成時間TTL值,每一個樹干節(jié)點接收樹干父節(jié)點發(fā)送的一個或多個上級樹干節(jié)點的對應(yīng)節(jié)點信息后,將其對應(yīng)TTL值減1,當(dāng)TTL值大于0時,轉(zhuǎn)發(fā)對應(yīng)節(jié)點信息給樹干子節(jié)點,當(dāng)TTL的值為0時,樹干節(jié)點不再向樹干子節(jié)點轉(zhuǎn)發(fā)。每一個樹干節(jié)點根據(jù)接收的一個或多個上級樹干節(jié)點的對應(yīng)節(jié)點信息及攜帶的TTL值的大小,確定出自己的樹干父節(jié)點以及其它上級樹干節(jié)點。
例如,設(shè)定每個樹干節(jié)點最多可以存儲4個上級樹干節(jié)點的信息,其存儲格式如下((父節(jié)點IP/port,3),(祖父節(jié)點IP/port,2),(曾祖父節(jié)點IP/port,1),(曾曾祖父節(jié)點IP/port,0))。
其中父節(jié)點對應(yīng)的TTL為3,祖父節(jié)點對應(yīng)的TTL為2,曾祖父節(jié)點對應(yīng)的TTL為1,曾曾祖父節(jié)點對應(yīng)的TTL為0。
如果N1向所有的樹干底層節(jié)點失效或連接建立都失敗,導(dǎo)致沒有樹干底層節(jié)點接收N1的連接請求,或者RRS-P最初就沒有返回子樹s1的樹干底層節(jié)點信息(在P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲建立起始時,子樹s1還沒有任何節(jié)點加入,不存在樹干節(jié)點,因此RRS-P不可能返回樹干底層節(jié)點信息),那么N1直接向RRS-P返回的ES-P請求子流s1。
步驟4,N1向其它子樹的樹干節(jié)點請求作為葉節(jié)點加入。具體為N1與RRS-P返回信息中的其它子樹的空閑節(jié)點建立連接,請求作為葉節(jié)點加入。如果被請求節(jié)點空閑,則接受N1作為它的葉節(jié)點,否則拒絕。
特別的,被請求的樹干節(jié)點能否接受新加入的葉節(jié)點N1的加入請求,取決于當(dāng)前已經(jīng)接受的葉節(jié)點的數(shù)量如果該樹干節(jié)點所連接的葉節(jié)點的數(shù)量已經(jīng)達到設(shè)定的葉節(jié)點閾值,則該樹干節(jié)點不空閑,不能接受新的葉節(jié)點加入;如果連接的葉節(jié)點數(shù)量沒有達到設(shè)定的葉節(jié)點閾值,則該樹干節(jié)點和節(jié)點N1建立連接,接收N1作為自身的葉節(jié)點。
特別的,當(dāng)樹干節(jié)點由于接受新的葉節(jié)點加入從空閑變成不空閑,或者當(dāng)前建立連接的葉節(jié)點中有葉節(jié)點退出,使該樹干節(jié)點從不空閑變成空閑,樹干節(jié)點都要通知RRS-P、所屬樹干的樹干父節(jié)點和樹干子節(jié)點。當(dāng)有新的節(jié)點請求加入系統(tǒng)時,RRS-P就可以將保存的空閑節(jié)點信息返回給請求的節(jié)點。在同一個樹干上,樹干節(jié)點收到樹干父節(jié)點發(fā)送或轉(zhuǎn)發(fā)的空閑節(jié)點信息后向下級樹干節(jié)點轉(zhuǎn)發(fā),收到樹干子節(jié)點發(fā)送或轉(zhuǎn)發(fā)的空閑節(jié)點信息后向上級樹干節(jié)點轉(zhuǎn)發(fā)。這樣,每個樹干節(jié)點可以知道樹干上多個節(jié)點是否空閑。樹干節(jié)點在有新節(jié)點作為葉節(jié)點加入時,將自己所知道的空閑節(jié)點信息發(fā)送給建立連接的葉節(jié)點,以后每次收到空閑節(jié)點信息后也轉(zhuǎn)發(fā)給建立連接的葉節(jié)點。這樣,葉節(jié)點可以比較及時準(zhǔn)確地知道當(dāng)前獲取子流的一些空閑節(jié)點信息,當(dāng)葉節(jié)點連接的樹干節(jié)點退出或失效時,葉節(jié)點可以直接向這些空閑節(jié)點請求該子流,無需重新向RRS-P請求,從而降低RRS-P的負擔(dān)。
如果N1在嘗試一定次數(shù)之后,仍然找不到能夠接受N1作為葉節(jié)點連接的樹干節(jié)點,N1直接向ES-P請求對應(yīng)子流。
特別的,如果N1不是一個公網(wǎng)節(jié)點,N1在所有的子樹中都嘗試以葉節(jié)點的方式加入并獲取子流。
步驟5,N1加入子樹s1后,成為子樹s1的一個樹干底層節(jié)點,需要向RRS-P上報自身的信息,包括樹干節(jié)點連接關(guān)系、自身是否空閑等。同時,需要預(yù)留一部分帶寬以便接受樹干子節(jié)點的加入請求。N1還可以接收其它節(jié)點作為葉節(jié)點加入。
以上所述是N1作為觀看節(jié)點加入網(wǎng)絡(luò)的主要過程,實際上,節(jié)點N1還可以以幫助節(jié)點的身份加入網(wǎng)絡(luò),當(dāng)N1作為幫助節(jié)點時,只作為一個子流的樹干節(jié)點存在,不用加入到其它子樹中獲取其它子流。
如圖8所示,為本發(fā)明實施例提供的P2P節(jié)點作為幫助節(jié)點加入系統(tǒng)的主要過程示意圖,包括如下步驟步驟1,P2P客戶端N1請求加入P2P網(wǎng)絡(luò)幫助分發(fā)數(shù)據(jù)。N1向RRS-P發(fā)送消息,消息中攜帶自身的IP、Port。
步驟2,RRS-P根據(jù)N1的實際連接IP地址,選擇一個或多個與N1在網(wǎng)絡(luò)上距離較近且有空閑資源的ES-P,并將ES-P信息返回給N1。通??梢赃x擇與N1在同一個自治域的ES-P,而且ES-P的帶寬和CPU負荷都比較空閑。
RRS-P進一步要指定N1幫助分發(fā)的頻道和子流。例如,ES-P指定N1分發(fā)某個頻道的子流s1,也就是指定N1加入子樹s1作為樹干節(jié)點,那么RRS-P要向N1返回與N1位于相同自治域的子樹s1的樹干底層節(jié)點的信息。
為了控制傳輸延遲,每個子流的樹干節(jié)點的層次不能太多,因此一個子樹可能有多個樹干,這樣就會存在多個底層樹干節(jié)點,此時,RRS-P需要向N1返回子樹s1的一定數(shù)量的底層樹干節(jié)點,具體返回哪些底層樹干節(jié)點需要考慮樹干的層級,對于超過一定層級的樹干將不返回其底層樹干節(jié)點給N1。
步驟3,N1向指定子樹的樹干底層節(jié)點請求作為樹干子節(jié)點加入,N1嘗試加入s1子樹,與RRS-P返回信息中的子樹s1樹干底層節(jié)點(一個或多個)建立連接,然后逐一向這些樹干底層節(jié)點請求作為樹干子節(jié)點加入。
如果N1請求的樹干底層節(jié)點當(dāng)前沒有樹干子節(jié)點,則接受N1的加入請求,N1斷開與其它樹干底層節(jié)點的嘗試連接并向RRS-P報告自己的連接關(guān)系。如果N1請求的樹干底層節(jié)點已經(jīng)有樹干子節(jié)點了,則向N1返回該樹干子節(jié)點信息,N1繼續(xù)試圖連接該樹干子節(jié)點。重復(fù)以上過程直到有樹干節(jié)點接受N1的連接請求。
如果所有的樹干底層節(jié)點都失效或連接建立失敗,導(dǎo)致沒有樹干底層節(jié)點接收N1的連接請求,或者RRS-P最初就沒有返回s1的樹干底層節(jié)點信息,那么N1直接向RRS-P返回的ES-P請求子流s1。
步驟4,N1加入子樹s1后,成為子樹s1的一個樹干底層節(jié)點,因而需要預(yù)留一部分帶寬以便接受樹干子節(jié)點的加入請求。N1還可以接收其它節(jié)點作為葉節(jié)點加入。
特別的,為了不妨礙這些幫助節(jié)點正常使用其它網(wǎng)絡(luò)應(yīng)用,規(guī)定只占用本身帶寬的一部分作為上傳帶寬,也就是只接納預(yù)先設(shè)定數(shù)量的葉節(jié)點為他們提供子流。例如,目前很多用戶是通過ADSL寬帶上網(wǎng),普遍的上行帶寬是512Kbps,可以規(guī)定幫助節(jié)點用于分發(fā)子流的最大帶寬為250Kbps。
特別的,N1在成為子樹的一個樹干節(jié)點后,向RRS-P進行節(jié)點狀態(tài)的信息上報,上報的內(nèi)容包括樹干節(jié)點的連接關(guān)系、本節(jié)點是否空閑以及自身是否為幫助節(jié)點的信息。
新加入網(wǎng)絡(luò)的節(jié)點或私網(wǎng)節(jié)點以葉節(jié)點方式加入對應(yīng)子樹的流程如圖9所示,包括步驟1,新加入的P2P客戶端節(jié)點N1向子樹s1、s2至sn的多個空閑節(jié)點同時發(fā)出連接請求。
步驟2,N1向連接成功的各子樹的樹干節(jié)點請求作為葉節(jié)點加入。
特別的,如果所有的空閑節(jié)點均無法響應(yīng)N1的連接,也就是沒有同N1連接成功的空閑節(jié)點,則連接失敗,P2P客戶端節(jié)點以葉節(jié)點方式加入網(wǎng)絡(luò)過程結(jié)束。
步驟3,如果被請求的空閑節(jié)點同意N1作為葉節(jié)點加入,則向N1返回同意加入的響應(yīng),并返回本地保存的該子樹的其它空閑節(jié)點信息,并且以后每次收到空閑節(jié)點信息后也轉(zhuǎn)發(fā)給連接的所有的葉節(jié)點。這樣,葉節(jié)點可以比較及時準(zhǔn)確的知道當(dāng)前獲取子流的一些空閑節(jié)點信息,當(dāng)葉節(jié)點所連接的樹干節(jié)點退出或失效時,葉節(jié)點可以直接向這些空閑節(jié)點請求該子流,降低RRS-P的負擔(dān)。
特別的,如果當(dāng)前請求的樹干節(jié)點拒絕N1的加入請求,N1斷開與該樹干節(jié)點的連接,并刪除該樹干節(jié)點作為備選空閑節(jié)點的信息,執(zhí)行步驟2,繼續(xù)向其它空閑節(jié)點請求加入。
步驟4,如果該樹干節(jié)點所連接的葉節(jié)點的數(shù)量在N1加入后達到預(yù)先設(shè)定的葉節(jié)點閾值,從空閑狀態(tài)轉(zhuǎn)變?yōu)椴豢臻e狀態(tài),則該樹干節(jié)點需要通知RRS-P、樹干父節(jié)點和樹干子節(jié)點。
步驟5,N1作為已建立連接并返回同意作為葉節(jié)點加入的樹干節(jié)點的一個葉節(jié)點接入網(wǎng)絡(luò),斷開與其它空閑節(jié)點之間的連接。
實際應(yīng)用中,RRS-P接收到P2P客戶端節(jié)點發(fā)起的加入系統(tǒng)請求后,檢測到當(dāng)前的某個樹干已經(jīng)達到一定層數(shù),則不會將新發(fā)起加入請求的P2P客戶端節(jié)點調(diào)度到該樹干上。如果某個子樹所有的樹干都達到設(shè)定的層數(shù)閾值,則RRS-P不會向新加入的節(jié)點返回樹干底層節(jié)點信息。這時新節(jié)點直接向返回的ES-P請求對應(yīng)數(shù)據(jù)子流。
相應(yīng)的,本發(fā)明實施例還提供一種節(jié)點退出網(wǎng)絡(luò)的方法,如圖10所示,為節(jié)點處理樹干父節(jié)點的斷開或退出的過程示意圖,包括步驟1,P2P客戶端節(jié)點N1、N2、N3都是子樹s1上的樹干節(jié)點,N2是N1的樹干父節(jié)點,N3是N1的樹干子節(jié)點。節(jié)點N4是N1的樹葉父節(jié)點,節(jié)點N5是N1的葉子節(jié)點。
當(dāng)節(jié)點N1正常退出或斷開時,N1向RRS-P、所有的父節(jié)點和子節(jié)點發(fā)送退出消息。N1的樹干子節(jié)點N3和葉子節(jié)點N5都可以收到N1的退出消息,N3與N5也可以通過對N1的連接狀態(tài)掃描而檢測到與N1的連接失敗。
步驟2,節(jié)點N3將上級樹干節(jié)點,也就是N1的樹干父節(jié)點N2以及N2以上的各級樹干節(jié)點加入備選節(jié)點列表,依次向N2以及N2的上級樹干節(jié)點發(fā)送請求,請求加入為樹干子節(jié)點。請求的順序為N2、N2的父節(jié)點、N2的祖父節(jié)點依次向子樹的上級樹干節(jié)點請求。
相應(yīng)的,RRS-P收到N1發(fā)送的退出消息或檢測到N1退出后,在N1所在的樹干拓撲數(shù)據(jù)中刪除N1的相關(guān)信息。
樹干父節(jié)點N2收到N1的退出消息或檢測到N1退出后,將N1的連接信息清除,這樣,N2就可以接受其它節(jié)點作為樹干子節(jié)點加入的請求。
N1的樹葉父節(jié)點N4收到N1發(fā)送的退出消息或檢測到N1退出后,刪除N1的相關(guān)信息。進一步,需要判斷自身連接的葉節(jié)點數(shù)量是否小于設(shè)定的葉節(jié)點閾值,若是,確定自身變?yōu)榭臻e節(jié)點,通知給RRS-P、樹干父節(jié)點和樹干子樹點;RRS-P更新本地存儲的空閑節(jié)點信息;N4的樹干父節(jié)點和樹干子樹點更新本地存儲的空閑節(jié)點信息并轉(zhuǎn)發(fā)給上/下級樹干節(jié)點以及連接的葉節(jié)點。
N1的樹葉節(jié)點N5收到N1的退出消息或檢測到N1退出后,首先嘗試從本地記錄的子樹s1中的空閑樹干節(jié)點獲取子流。本地記錄的各子樹空閑樹干節(jié)點的數(shù)據(jù)有兩個來源接入系統(tǒng)時RRS-P返回的數(shù)據(jù)和從N1獲取的空閑節(jié)點數(shù)據(jù)信息。如果本地記錄的空閑樹干節(jié)點不能提供子流s1,葉節(jié)點N5向RRS-P請求子樹s1的空閑樹干節(jié)點信息,然后向這些節(jié)點請求加入獲取子流。如果還是不能獲取子流s1,則直接向ES-P請求子流s1。
步驟3,N2在接收到N3的連接請求后,如果沒有樹干子節(jié)點,則接收N3作為樹干子節(jié)點加入的請求。如果N2拒絕N3的加入請求,則向N3返回拒絕消息,N3向RRS-P報告N2失效,并繼續(xù)向N2的上級樹干節(jié)點發(fā)送請求。
上級樹干節(jié)點接受N3的加入請求后,向N3通報空閑節(jié)點信息。
如果N3經(jīng)過多次嘗試仍然不能建立與上級樹干節(jié)點的連接并作為樹干子節(jié)點加入子樹,則直接向ES-P請求子流。這里的最大嘗試連接次數(shù)根據(jù)每個樹干節(jié)點保存的上級樹干節(jié)點的個數(shù)設(shè)定,例如,設(shè)定每個樹干節(jié)點最多可以存儲4個上級樹干節(jié)點的信息,為((父節(jié)點IP/port,3),(祖父節(jié)點IP/port,2),(曾祖父節(jié)點IP/port,1),(曾曾祖父節(jié)點IP/port,0));則最多嘗試三次。
步驟4,N3向RRS-P上報節(jié)點狀態(tài)信息,包括新建立的樹干連接關(guān)系、各級節(jié)點是否空閑等信息。
新的樹干連接關(guān)系建立后,N3更新自己的上級樹干節(jié)點信息并發(fā)送給建立連接的樹干子節(jié)點。
N1退出系統(tǒng)時,還通知樹葉父節(jié)點N4;樹葉父節(jié)點N4在接收到節(jié)點N1的退出通知或檢測到N1的退出時,需要判斷自身連接的葉節(jié)點數(shù)量是否小于設(shè)定的葉節(jié)點閾值,若是,確定自身變?yōu)榭臻e節(jié)點,通知給RRS-P、自身的樹干父節(jié)點和樹干子樹點;RRS-P更新本地存儲的空閑節(jié)點信息;N4的樹干父節(jié)點和樹干子樹點更新本地存儲的空閑節(jié)點信息并轉(zhuǎn)發(fā)給上/下級樹干節(jié)點以及連接的葉節(jié)點。
綜上所述,本發(fā)明實施例通過通過構(gòu)建P2P客戶端網(wǎng)絡(luò)拓撲,利用P2P客戶端節(jié)點的上傳能力來互相傳輸一部分流媒體數(shù)據(jù),從而節(jié)約了內(nèi)容服務(wù)器資源的消耗。且由RRS-P構(gòu)建P2P客戶端節(jié)點網(wǎng)絡(luò)拓撲,統(tǒng)一進行傳輸數(shù)據(jù)子流的指定和空閑節(jié)點的發(fā)送,使P2P客戶端節(jié)點間的連接都局限在局部網(wǎng)絡(luò)中,從而提供相對有保證的傳輸質(zhì)量并減少跨網(wǎng)絡(luò)的傳輸流量。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法,應(yīng)用于流媒體分發(fā)系統(tǒng),所述流媒體分發(fā)系統(tǒng)包括中心內(nèi)容服務(wù)器、邊緣服務(wù)器、用戶請求調(diào)度服務(wù)器以及客戶端節(jié)點;其特征在于,該方法包括由所述用戶請求調(diào)度服務(wù)器為中心內(nèi)容服務(wù)器發(fā)送給邊緣服務(wù)器的數(shù)據(jù)子流建立若干個子樹,每一個子樹用于傳輸一個數(shù)據(jù)子流;每一個子樹包含一個或多個樹干,每一個樹干節(jié)點僅有一個樹干子節(jié)點,每一個樹干節(jié)點連接一個或多個葉節(jié)點;每一個所述樹干節(jié)點和葉節(jié)點為客戶端節(jié)點;一個客戶端節(jié)點僅作為一個樹干的樹干節(jié)點,可作為多個不同子樹的葉節(jié)點;當(dāng)用戶請求調(diào)度服務(wù)器收到客戶端節(jié)點發(fā)送的加入系統(tǒng)請求后,向客戶端節(jié)點返回可連接的邊緣服務(wù)器信息,返回指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,當(dāng)判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時,還返回對應(yīng)子樹的樹干底層節(jié)點信息,當(dāng)判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,還返回傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述空閑節(jié)點為連接的葉節(jié)點數(shù)量沒有達到設(shè)定的葉節(jié)點閾值的樹干節(jié)點;所述用戶請求調(diào)度服務(wù)器接收所述客戶端節(jié)點上報的節(jié)點狀態(tài)信息,所述節(jié)點狀態(tài)信息為所述客戶端節(jié)點加入到對應(yīng)子樹后,根據(jù)建立連接的樹干節(jié)點信息和葉節(jié)點數(shù)量,上報的樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點信息;并根據(jù)上報的節(jié)點狀態(tài)信息更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;所述用戶請求調(diào)度服務(wù)器接收到所述客戶端節(jié)點發(fā)送的退出系統(tǒng)消息后,更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲。
2.如權(quán)利要求1所述的客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法,其特征在于,所述用戶請求調(diào)度服務(wù)器根據(jù)中心內(nèi)容服務(wù)器發(fā)送給邊緣服務(wù)器的數(shù)據(jù)子流的數(shù)量n,建立n個子樹,每個子樹用于傳輸一個對應(yīng)的數(shù)據(jù)子流。
3.如權(quán)利要求2所述的客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法,其特征在于,每個子樹的樹干節(jié)點和葉節(jié)點起始為空;用戶請求調(diào)度服務(wù)器指定最初接入的n個客戶端節(jié)點作為傳輸每個數(shù)據(jù)子流的對應(yīng)子樹的第一個樹干節(jié)點;向所述客戶端節(jié)點返回可連接的邊緣服務(wù)器信息、指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流和傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息。
4.如權(quán)利要求3所述的客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法,其特征在于,所述用戶請求調(diào)度服務(wù)器設(shè)定每個子樹的樹干節(jié)點數(shù)量閾值;當(dāng)用戶請求調(diào)度服務(wù)器收到客戶端節(jié)點發(fā)送的加入系統(tǒng)請求后,指定其加入的對應(yīng)子樹,并檢查對應(yīng)子樹的當(dāng)前樹干節(jié)點數(shù)量是否達到設(shè)定的閾值;若對應(yīng)子樹的當(dāng)前樹干節(jié)點數(shù)量沒有達到設(shè)定的閾值,則返回對應(yīng)子樹的當(dāng)前樹干底層節(jié)點信息;若對應(yīng)子樹的當(dāng)前樹干節(jié)點數(shù)量已達到設(shè)定的閾值,則指示所述客戶端節(jié)點從返回的邊緣服務(wù)器處獲取指定傳輸?shù)臄?shù)據(jù)子流,創(chuàng)建新樹干。
5.一種流媒體分發(fā)系統(tǒng),其特征在于,包括中心內(nèi)容服務(wù)器、邊緣服務(wù)器、用戶請求調(diào)度服務(wù)器;所述中心內(nèi)容服務(wù)器用于將流媒體數(shù)據(jù)進行切片處理,形成多個數(shù)據(jù)子流,發(fā)送給所述邊緣服務(wù)器;所述邊緣服務(wù)器用于緩存接收的數(shù)據(jù)子流并發(fā)送給加入到系統(tǒng)中的客戶端節(jié)點;所述用戶請求調(diào)度服務(wù)器用于建立、存儲并更新客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;具體包括接收客戶端節(jié)點發(fā)送的加入系統(tǒng)請求,向客戶端節(jié)點返回可連接的邊緣服務(wù)器信息,返回指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,當(dāng)判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時,還返回對應(yīng)子樹的樹干底層節(jié)點信息,當(dāng)判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,還返回傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述空閑節(jié)點為連接的葉節(jié)點數(shù)量沒有達到設(shè)定的葉節(jié)點閾值的樹干節(jié)點;接收客戶端節(jié)點上報的節(jié)點狀態(tài)信息,所述節(jié)點狀態(tài)信息為所述客戶端節(jié)點加入到對應(yīng)子樹后,根據(jù)建立連接的樹干節(jié)點信息和葉節(jié)點數(shù)量,上報的樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點信息;并根據(jù)上報的節(jié)點狀態(tài)信息更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;接收客戶端節(jié)點發(fā)送的退出系統(tǒng)消息后,更新本地存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述邊緣服務(wù)器為一個以上,地理位置接近的多個邊緣服務(wù)器組成邊緣P2P自治域;同一個邊緣P2P自治域中的各邊緣服務(wù)器共享接收的數(shù)據(jù)子流。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,在所述用戶請求調(diào)度服務(wù)器中,對每一個流媒體直播頻道,為每一個邊緣P2P自治域存儲一個對應(yīng)的客戶端節(jié)點網(wǎng)絡(luò)拓撲。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述中心內(nèi)容服務(wù)器將流媒體數(shù)據(jù)進行切片處理形成n個數(shù)據(jù)切片,并使用冗余算法生成m個冗余切片,將n個數(shù)據(jù)切片和m個冗余切片編碼成n+m個獨立的數(shù)據(jù)子流發(fā)送給所述邊緣服務(wù)器;所述用戶請求調(diào)度服務(wù)器建立的每一個客戶端節(jié)點網(wǎng)絡(luò)拓撲中包括n+m個子樹,每個子樹分別用于傳輸一個獨立的數(shù)據(jù)子流。
9.一種用戶請求調(diào)度服務(wù)器,應(yīng)用于權(quán)利要求5所述的流媒體分發(fā)系統(tǒng),其特征在于,包括存儲單元、交互單元和更新單元;所述存儲單元,用于存儲所述流媒體分發(fā)系統(tǒng)中的邊緣服務(wù)器網(wǎng)絡(luò)拓撲、客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息;所述交互單元,用于接收所述客戶端節(jié)點發(fā)起的加入系統(tǒng)請求,根據(jù)所述存儲單元存儲的所述網(wǎng)絡(luò)拓撲和空閑節(jié)點信息,向發(fā)起加入系統(tǒng)請求的客戶端節(jié)點返回可連接的邊緣服務(wù)器信息,返回指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,當(dāng)判斷出指定傳輸?shù)臄?shù)據(jù)子流存在樹干底層節(jié)點時還返回對應(yīng)子樹的樹干底層節(jié)點信息,當(dāng)判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,還返回傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;還用于接收所述客戶端節(jié)點在加入系統(tǒng)后上報的包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息,發(fā)送給所述更新單元;接收所述客戶端節(jié)點發(fā)送的退出系統(tǒng)消息,發(fā)送給所述更新單元;所述更新單元,用于根據(jù)所述交互單元發(fā)送的節(jié)點狀態(tài)信息及退出系統(tǒng)消息,更新所述存儲單元中保存的客戶端節(jié)點網(wǎng)絡(luò)拓撲和空閑節(jié)點信息。
10.如權(quán)利要求9所述的用戶請求調(diào)度服務(wù)器,其特征在于,還包括檢測單元,用于檢測所述客戶端節(jié)點是否異常退出;當(dāng)檢測到所述客戶端節(jié)點異常退出時,更新所述存儲單元中保存的客戶端節(jié)點網(wǎng)絡(luò)拓撲。
11.一種客戶端節(jié)點,應(yīng)用于權(quán)利要求5所述的流媒體分發(fā)系統(tǒng),其特征在于,包括加入系統(tǒng)功能單元、退出系統(tǒng)功能單元、樹干功能單元、樹葉功能單元、流媒體播放單元;所述加入系統(tǒng)功能單元,用于向所述流媒體分發(fā)系統(tǒng)中的用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求,接收所述用戶請求調(diào)度服務(wù)器返回的邊緣服務(wù)器信息,接收指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收所述用戶請求調(diào)度服務(wù)器判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時返回的樹干底層節(jié)點信息,接收所述用戶請求調(diào)度服務(wù)器判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;并將接收的所述邊緣服務(wù)器信息、傳輸?shù)臄?shù)據(jù)子流標(biāo)識以及所述樹干底層節(jié)點信息發(fā)送給所述樹干功能單元,將接收的所述空閑節(jié)點信息發(fā)送給所述樹葉功能單元;所述退出系統(tǒng)功能單元,用于向所述用戶請求調(diào)度服務(wù)器以及建立連接的其它客戶端節(jié)點發(fā)送退出系統(tǒng)消息并斷開連接;接收其它P2P客戶端發(fā)送的退出系統(tǒng)消息,通知給所述信息存儲更新單元;所述樹干功能單元,用于與所述加入系統(tǒng)功能單元發(fā)送的邊緣服務(wù)器或樹干底層節(jié)點之一建立連接,將客戶端節(jié)點加入到所述對應(yīng)子樹中作為樹干節(jié)點接收指定的數(shù)據(jù)子流,發(fā)送給所述流媒體播放單元;并傳輸指定的數(shù)據(jù)子流給建立連接的葉節(jié)點;并將樹干節(jié)點連接關(guān)系和建立連接的葉節(jié)點數(shù)量信息發(fā)送給所述信息存儲更新單元;所述樹葉功能單元,用于與所述加入系統(tǒng)功能單元發(fā)送的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,將客戶端節(jié)點作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收其它數(shù)據(jù)子流,發(fā)送給所述流媒體播放單元;所述流媒體播放單元,用于將接收的各數(shù)據(jù)子流合成流媒體數(shù)據(jù)通過本地播放器播放。
12.如權(quán)利要求11所述的客戶端節(jié)點,其特征在于,還包括信息存儲更新單元和上報功能單元;所述信息存儲更新單元,用于接收所述退出系統(tǒng)功能單元發(fā)送的通知以及所述樹干功能單元發(fā)送的樹干節(jié)點連接關(guān)系,更新并存儲所屬樹干的上級樹干節(jié)點信息;并根據(jù)建立連接的葉節(jié)點數(shù)量確定出本節(jié)點是否空閑;還接收、存儲或發(fā)送上級樹干節(jié)點信息給樹干子節(jié)點,接收、存儲或發(fā)送空閑節(jié)點信息給上下級樹干節(jié)點和葉節(jié)點;所述上報功能單元,用于從所述信息存儲更新單元獲取樹干節(jié)點連接關(guān)系及本節(jié)點是否空閑信息,向所述用戶請求調(diào)度服務(wù)器上報包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息。
13.如權(quán)利要求12所述的客戶端節(jié)點,其特征在于,所述加入系統(tǒng)功能單元包括第一功能子單元,用于向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求,并在加入系統(tǒng)請求中指明作為觀看節(jié)點的身份加入系統(tǒng);接收所述用戶請求調(diào)度服務(wù)器返回的邊緣服務(wù)器信息,接收指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收所述用戶請求調(diào)度服務(wù)器判斷出存在樹干底層節(jié)點時返回的與指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息,接收所述用戶請求調(diào)度服務(wù)器判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點時,返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;并將接收的所述邊緣服務(wù)器信息、傳輸?shù)臄?shù)據(jù)子流標(biāo)識以及所述樹干底層節(jié)點信息發(fā)送給所述樹干功能單元,將接收的所述空閑節(jié)點信息發(fā)送給所述樹葉功能單元;第二功能子單元,用于向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求,并在加入系統(tǒng)請求中指明作為幫助節(jié)點的身份加入系統(tǒng);接收所述用戶請求調(diào)度服務(wù)器返回的邊緣服務(wù)器信息,接收指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收所述用戶請求調(diào)度服務(wù)器判斷出存在樹干底層節(jié)點時返回的與指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹的樹干底層節(jié)點信息;并將接收的所述邊緣服務(wù)器信息、傳輸?shù)臄?shù)據(jù)子流標(biāo)識以及樹干底層節(jié)點信息發(fā)送給所述樹干功能單元。
14.一種客戶端節(jié)點加入流媒體分發(fā)系統(tǒng)的方法,應(yīng)用于權(quán)利要求5所述的流媒體分發(fā)系統(tǒng),其特征在于,該方法包括客戶端節(jié)點向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求,接收所述用戶請求調(diào)度服務(wù)器返回的邊緣服務(wù)器信息,接收指定所述客戶端節(jié)點傳輸?shù)臄?shù)據(jù)子流標(biāo)識,接收所述用戶請求調(diào)度服務(wù)器判斷出指定傳輸?shù)臄?shù)據(jù)子流對應(yīng)子樹存在樹干底層節(jié)點時返回的樹干底層節(jié)點信息,接收所述用戶請求調(diào)度服務(wù)器判斷出存在傳輸其它數(shù)據(jù)子流的空閑節(jié)點且所述客戶端節(jié)點請求以觀看節(jié)點的身份加入系統(tǒng)時,返回的傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述客戶端節(jié)點與接收的所述邊緣服務(wù)器或樹干底層節(jié)點之一建立連接,加入到所述對應(yīng)子樹中作為樹干節(jié)點接收指定的數(shù)據(jù)子流,并傳輸指定的數(shù)據(jù)子流給建立連接的葉節(jié)點;與接收的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收其它數(shù)據(jù)子流;并當(dāng)自身成功作為樹干節(jié)點時,向所述用戶請求調(diào)度服務(wù)器上報包含樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息。
15.如權(quán)利要求14所述的方法,其特征在于,所述客戶端節(jié)點向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求時指明作為觀看節(jié)點的身份加入系統(tǒng);還包括將接收的各數(shù)據(jù)子流合成流媒體數(shù)據(jù)通過本地播放器播放。
16.如權(quán)利要求15所述的方法,其特征在于,所述客戶端節(jié)點向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求時攜帶自身的IP地址和端口信息;所述用戶請求調(diào)度服務(wù)器判斷出所述加入系統(tǒng)請求中攜帶的IP地址和端口信息與實際連接的IP地址和端口信息不相同時,確定出該客戶端節(jié)點為私網(wǎng)節(jié)點,僅向該客戶端節(jié)點返回邊緣服務(wù)器信息和傳輸其它數(shù)據(jù)子流的空閑節(jié)點信息;所述客戶端節(jié)點與接收的傳輸其它數(shù)據(jù)子流的空閑節(jié)點建立連接,作為其它數(shù)據(jù)子流對應(yīng)子樹的葉節(jié)點接收數(shù)據(jù)子流。
17.如權(quán)利要求16所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點作為觀看節(jié)點的身份加入系統(tǒng)后,若從各子樹僅能獲取到部分數(shù)據(jù)子流,則向所述邊緣服務(wù)器獲取流媒體數(shù)據(jù)的其余數(shù)據(jù)子流。
18.如權(quán)利要求14所述的方法,其特征在于,所述客戶端節(jié)點向所述用戶請求調(diào)度服務(wù)器發(fā)起加入系統(tǒng)請求時指明作為幫助節(jié)點的身份加入系統(tǒng);僅與接收的所述邊緣服務(wù)器或樹干底層節(jié)點之一建立連接,加入到所述對應(yīng)子樹中作為樹干節(jié)點傳輸數(shù)據(jù)子流給建立連接的葉節(jié)點。
19.如權(quán)利要求14-18任一所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點作為樹干節(jié)點加入到對應(yīng)子樹后,還包括將自身的包含IP地址和端口信息的節(jié)點信息發(fā)送給樹干子節(jié)點;接收樹干父節(jié)點發(fā)送的一個或多個上級樹干節(jié)點的對應(yīng)節(jié)點信息,存儲并轉(zhuǎn)發(fā)給樹干子節(jié)點。
20.如權(quán)利要求19所述的方法,其特征在于,每一個樹干節(jié)點的對應(yīng)節(jié)點信息中還攜帶生成時間TTL值;每一個樹干節(jié)點接收樹干父節(jié)點發(fā)送的一個或多個上級樹干節(jié)點的對應(yīng)節(jié)點信息后,將其對應(yīng)TTL值減1,僅當(dāng)TTL值大于0時,轉(zhuǎn)發(fā)對應(yīng)節(jié)點信息給樹干子節(jié)點。
21.如權(quán)利要求20所述的方法,其特征在于,每一個樹干節(jié)點根據(jù)接收的一個或多個上級樹干節(jié)點的對應(yīng)節(jié)點信息及攜帶的TTL值的大小,確定出自己的樹干父節(jié)點以及其它上級樹干節(jié)點。
22.如權(quán)利要求19所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點作為樹干節(jié)點加入到對應(yīng)子樹后,還包括根據(jù)自身連接的葉節(jié)點數(shù)量,確定變?yōu)榭臻e節(jié)點時,還通知給樹干父節(jié)點和樹干子節(jié)點;接收樹干父節(jié)點發(fā)送或轉(zhuǎn)發(fā)的空閑節(jié)點信息,存儲并轉(zhuǎn)發(fā)給樹干子節(jié)點;接收樹干子節(jié)點發(fā)送或轉(zhuǎn)發(fā)的空閑節(jié)點信息,存儲并轉(zhuǎn)發(fā)給樹干父節(jié)點;將自身保存的空閑節(jié)點信息發(fā)送給建立連接的葉節(jié)點。
23.如權(quán)利要求22所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點退出系統(tǒng)時,包括向所述用戶請求調(diào)度服務(wù)器發(fā)送退出系統(tǒng)消息并斷開連接;所述用戶請求調(diào)度服務(wù)器根據(jù)存儲的客戶端節(jié)點網(wǎng)絡(luò)拓撲,在該客戶端節(jié)點所屬樹干的對應(yīng)樹干拓撲數(shù)據(jù)中刪除存儲的該客戶端節(jié)點的相關(guān)信息;還向所述全部建立連接的其它客戶端節(jié)點發(fā)送退出系統(tǒng)消息,并斷開連接。
24.如權(quán)利要求23所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點作為樹干節(jié)點接收到其樹干父節(jié)點發(fā)送的退出系統(tǒng)消息,或檢測到樹干父節(jié)點異常退出時,還包括根據(jù)本地存儲的其它上級樹干的對應(yīng)節(jié)點信息,請求作為樹干子節(jié)點建立連接;當(dāng)連接建立成功后,向所述用戶請求調(diào)度服務(wù)器上報新建立的樹干節(jié)點連接關(guān)系和本節(jié)點是否為空閑節(jié)點的節(jié)點狀態(tài)信息。
25.如權(quán)利要求24所述的方法,其特征在于,當(dāng)連接建立成功后,還包括所述客戶端節(jié)點更新自己的上級樹干節(jié)點信息并發(fā)送給樹干子節(jié)點。
26.如權(quán)利要求25所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點依次向每一個所述其它上級樹干節(jié)點請求作為樹干子節(jié)點建立連接都失敗后,直接連接所述邊緣服務(wù)器接收對應(yīng)數(shù)據(jù)子流。
27.如權(quán)利要求23所述的方法,其特征在于,當(dāng)樹干父節(jié)點接收到樹干子節(jié)點發(fā)送的退出系統(tǒng)消息,或檢測到樹干子節(jié)點異常退出時,還包括刪除本地保存的樹干子節(jié)點信息。
28.如權(quán)利要求23所述的方法,其特征在于,當(dāng)所述客戶端節(jié)點作為葉節(jié)點加入到對應(yīng)子樹后,接收到葉子父節(jié)點發(fā)送的退出系統(tǒng)消息,或檢測到葉子父節(jié)點異常退出時,還包括從本地存儲的對應(yīng)子樹的空閑節(jié)點信息中選擇一個空閑節(jié)點建立連接。
29.如權(quán)利要求23所述的方法,其特征在于,當(dāng)葉子父節(jié)點接收到葉節(jié)點發(fā)送的退出系統(tǒng)消息,或檢測到葉節(jié)點異常退出時,還包括判斷自身連接的葉節(jié)點數(shù)量是否小于設(shè)定的葉節(jié)點閾值,若是,確定自身變?yōu)榭臻e節(jié)點,通知給所述用戶請求調(diào)度服務(wù)器、樹干父節(jié)點和樹干子樹點;所述用戶請求調(diào)度服務(wù)器更新本地存儲的空閑節(jié)點信息;所述樹干父節(jié)點和樹干子樹點更新本地存儲的空閑節(jié)點信息并轉(zhuǎn)發(fā)給上/下級樹干節(jié)點以及連接的葉節(jié)點。
全文摘要
本發(fā)明公開了一種客戶端節(jié)點網(wǎng)絡(luò)拓撲構(gòu)造方法,應(yīng)用于流媒體分發(fā)系統(tǒng),所述流媒體分發(fā)系統(tǒng)包括中心內(nèi)容服務(wù)器CS-P、邊緣服務(wù)器ES-P、用戶請求調(diào)度服務(wù)器RRS-P以及P2P客戶端節(jié)點;通過利用P2P客戶端節(jié)點的上傳能力來互相傳輸一部分流媒體數(shù)據(jù),從而節(jié)約了內(nèi)容服務(wù)器資源的消耗。通過構(gòu)建P2P客戶端網(wǎng)絡(luò)拓撲,使得P2P客戶端節(jié)點能夠從其它P2P客戶端節(jié)點獲取一部分流媒體數(shù)據(jù),實現(xiàn)在不降低服務(wù)質(zhì)量的同時,降低了對服務(wù)器的負載能力要求,使得流媒體分發(fā)網(wǎng)絡(luò)能提供高帶寬、質(zhì)量有保證的流媒體直播服務(wù)。
文檔編號H04L29/06GK101068186SQ200710110570
公開日2007年11月7日 申請日期2007年6月5日 優(yōu)先權(quán)日2007年6月5日
發(fā)明者王志兵, 嚴(yán)哲峰, 陳浩華, 兌繼英, 李耀輝, 魏家好, 薛傳頌 申請人:華為技術(shù)有限公司