陳園園 朱欣穎
摘 要:在深入研究現(xiàn)有的P2P網(wǎng)絡(luò)拓撲結(jié)構(gòu)的基礎(chǔ)上,構(gòu)建了一個新的P2P流媒體點播系統(tǒng)模型,該系統(tǒng)模型包含跟蹤服務(wù)器、資源服務(wù)器、超級節(jié)點和普通節(jié)點四個部分。它能快速定位到資源,減少路由查詢次數(shù),增加系統(tǒng)的擴展性、魯棒性和數(shù)據(jù)吞吐量,能夠很好的滿足點播服務(wù)的要求。
關(guān)鍵詞:P2P;流媒體點播;網(wǎng)絡(luò)拓撲結(jié)構(gòu)
中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:2095-2163(2015)06-
Abstract: In-depth study of existing P2P network topology, the paper constructs a new P2P streaming media on-demand system model, which includes four parts tracking server, resource servers, super nodes and ordinary nodes. It can quickly locate the resources, reduce routing queries, increase system scalability, robustness and data throughput, therefore can well meet the requirements of on-demand services.
Keywords: P2P; Streaming Media On-demand; Network Topology
0 引 言
近年來,隨著P2P技術(shù)的發(fā)展,許多P2P流媒體點播系統(tǒng)進入了人們的生活,為廣大的用戶提供了豐富的媒體服務(wù)。然而,由于用戶節(jié)點的動態(tài)性、節(jié)點性能的差異性以及用戶操作的隨意性,導(dǎo)致P2P流媒體點播系統(tǒng)無法保證用戶獲得高質(zhì)量的流媒體點播服務(wù)。因此,為了提高P2P流媒體點播系統(tǒng)的服務(wù)質(zhì)量和用戶觀感,設(shè)計一種新的P2P流媒體點播系統(tǒng)模型具有十分重要的意義。
1 數(shù)據(jù)調(diào)度問題的模型
1.1 節(jié)點可利用帶寬的評估
在實際的系統(tǒng)中,某一個數(shù)據(jù)塊會被多個對等節(jié)點擁有,那么選擇哪個節(jié)點進行傳輸即是一個亟需解決的重要問題。在本文中,以節(jié)點的網(wǎng)絡(luò)帶寬為主要依據(jù)選擇節(jié)點進行數(shù)據(jù)的傳輸,不同節(jié)點的帶寬是不同的,同一節(jié)點在不同時期的帶寬也是不同的,因此需要研發(fā)一特定算法去估計每個節(jié)點的帶寬。
要評估一個節(jié)點的帶寬,可以根據(jù)其歷史帶寬來進行識讀估計。最先想到的方法是取其歷史帶寬記錄的平均值作為下一個調(diào)度周期的估計帶寬,具體方法是,通過記錄這個節(jié)點最近 個周期的實際帶寬,再把這 個帶寬記錄求和,由此獲得平均值。但是使用這種方法估計下一個調(diào)度周期的網(wǎng)絡(luò)帶寬卻不準(zhǔn)確,因為可能出現(xiàn)如下情況,即 個周期的前幾個周期,節(jié)點提供的網(wǎng)絡(luò)帶寬很大,而最近幾個調(diào)度周期,相應(yīng)的網(wǎng)絡(luò)帶寬卻很小,那么如果用歷史帶寬記錄平均值的方式做出的帶寬估計肯定也很大,就會導(dǎo)致請求節(jié)點將繼續(xù)向這個資源節(jié)點發(fā)出傳輸數(shù)據(jù)塊請求,為此可能導(dǎo)致傳輸時間過長,甚至直接導(dǎo)致失敗。
本文對上述的方式進行了改進,使用公式(1)來估計每個資源節(jié)點的帶寬。在本算法中,記錄了節(jié)點n-1個周期的實際帶寬,調(diào)度周期 的估計帶寬包括2部分,一部分是節(jié)點前n-2個周期的實際帶寬平均后的加權(quán)值,另一部分是節(jié)點最近一次(n-1周期)網(wǎng)絡(luò)帶寬加權(quán)后的結(jié)果值。這種設(shè)計既考慮了節(jié)點的歷史帶寬,也顧及了節(jié)點最近一次的帶寬。
其中, 表示資源節(jié)點 在第 個周期能夠提供帶寬的估計值, 表示資源節(jié)點 在第 個周期實際提供的帶寬大小。而且,n是一個正整數(shù),表示要估計的調(diào)度周期。n是一個常量(01.2 數(shù)據(jù)分片
在P2P點播系統(tǒng)中,一般的資源都是體積可觀的,為了方便數(shù)據(jù)的調(diào)度,一個至關(guān)重要的操作就是如何對資源數(shù)據(jù)進行合理分片[1]。
為了能夠?qū)崿F(xiàn)合理的分片,需要討論如下三個方面的因素:
(1)從數(shù)據(jù)調(diào)度的方面考慮,系統(tǒng)希望把資源文件分得越小越好,節(jié)點可以選擇從不同的鄰居節(jié)點調(diào)度某一片數(shù)據(jù),這樣就增加了數(shù)據(jù)調(diào)度的靈活性。
(2)從調(diào)度開銷方面考慮,希望數(shù)據(jù)片的容量越大越好。主要的調(diào)度開銷有:
每一片數(shù)據(jù)都需要一個頭文件來描述其詳情,包括數(shù)據(jù)片的序列號、時間戳等信息,因此數(shù)據(jù)片越大,頭文件的開銷就越?。?/p>
每一個對等節(jié)點都需要使其鄰居節(jié)點知道該節(jié)點中緩存了哪些數(shù)據(jù)片,節(jié)點一般使用位圖來表示這些信息,如果數(shù)據(jù)片分得過小,那么位圖必然很長,并且位圖還是所有開銷中最大的;
數(shù)據(jù)片是從其它節(jié)點獲取的,如此勢必導(dǎo)致額外開銷,如請求數(shù)據(jù)片信息等。
(3)從流媒體點播對數(shù)據(jù)實時性方面考慮,一般播放器多需要數(shù)據(jù)片在播放之前即已到達,而數(shù)據(jù)片在網(wǎng)絡(luò)中傳輸經(jīng)常是拆分成多個數(shù)據(jù)包,如果這個數(shù)據(jù)片過于龐大,就必然增加傳輸失敗的概率,從而導(dǎo)致數(shù)據(jù)片將無法及時在播放之前到達。
綜合考慮上述因素,本文采用先分塊,再分片的方式。具體的方式是:先把資源文件分成大小相同的數(shù)據(jù)塊(除文件的最后一塊數(shù)據(jù)可能小于其它塊的大小外),每一塊的大小均為512KB,而后再把數(shù)據(jù)塊分成64片,每一片數(shù)據(jù)的大小則為8KB(同樣是除最后一塊數(shù)據(jù)的最后一片數(shù)據(jù)大小外)。資源分片的原理示意圖如1所示。
如果媒體資源文件的大小為 ,記最后一個獨立數(shù)據(jù)塊的大小為 ,而此后一個但愿數(shù)據(jù)片的大小記為 ,則其各自大小均可由下面的公式得到。
如上方式中,系統(tǒng)傳輸數(shù)據(jù)的時候以數(shù)據(jù)片為單位傳輸,而資源表示時以數(shù)據(jù)塊為單位,這樣既減小了系統(tǒng)的額外開銷,又滿足了數(shù)據(jù)調(diào)度的實時性要求,還增加了數(shù)據(jù)調(diào)度的靈活性。
1.3 緩存數(shù)據(jù)表示與交換
流媒體在點播的時候,需要緩存一定數(shù)量的數(shù)據(jù)塊進行播放和提供給其它對等節(jié)點使用,本節(jié)將具體研究節(jié)點是如何標(biāo)識緩存的數(shù)據(jù)塊以及如何進行標(biāo)識信息的交換。
在系統(tǒng)模型中,每一個完整的媒體文件都被分為同等大小的數(shù)據(jù)塊,為了表示數(shù)據(jù)塊的位置,利于數(shù)據(jù)調(diào)度,根據(jù)數(shù)據(jù)塊的位置分配一個唯一序列號,從0開始分配。當(dāng)節(jié)點需要點播某一部資源時,該節(jié)點就開始緩存數(shù)據(jù)內(nèi)容,并通過維護一個位圖BM來表示數(shù)據(jù)塊的存在情況。
位圖信息用來表示數(shù)據(jù)塊的可用信息。一個位圖由很多位組成,每一位代表對應(yīng)序號的一塊數(shù)據(jù),位圖的長度表示了點播資源文件所擁有的數(shù)據(jù)塊數(shù)量。如果 表示節(jié)點緩存了數(shù)據(jù)塊 ;反之, 就表示節(jié)點沒有緩存數(shù)據(jù)塊 。播放節(jié)點通過與鄰居交換緩存位圖,根據(jù)位圖信息可以知道哪些節(jié)點擁有哪些數(shù)據(jù)塊,作為自身數(shù)據(jù)調(diào)度的依據(jù)。另外,在交換位圖時,每一個鄰居節(jié)點還將自己的播放位置通知給相互交換位圖的節(jié)點,而通過位圖信息和播放位置,就可以預(yù)測哪些數(shù)據(jù)塊也是其它節(jié)點需要的。
1.4 鄰居節(jié)點的選擇
在模型中,當(dāng)用戶點播某一部資源時,超級節(jié)點會選擇某些個擁有這部資源的節(jié)點返回給點播用戶。在選擇這些節(jié)點的過程中,超級節(jié)點會考慮這些資源節(jié)點與點播節(jié)點的位置關(guān)系,優(yōu)先返回位于點播節(jié)點同一或者附近區(qū)域位置的資源節(jié)點,如此即可減少網(wǎng)絡(luò)傳輸延時,降低主干網(wǎng)的壓力,提高服務(wù)質(zhì)量。另外,本文提出的調(diào)度策略中,計算數(shù)據(jù)片的優(yōu)先級時也考慮了位置因素。
2 P2P流媒體點播系統(tǒng)模型
基于上述調(diào)度模型,通過研究現(xiàn)有的幾種P2P網(wǎng)絡(luò)拓撲結(jié)構(gòu)及系統(tǒng)模型,本文設(shè)計了如圖2所示的P2P流媒體點播系統(tǒng)模型。
從圖2中可以看出,系統(tǒng)中包括跟蹤服務(wù)器、資源服務(wù)器、超級節(jié)點和普通節(jié)點。這樣的結(jié)構(gòu)設(shè)計,主要是為了快速定位到資源,減少路由查詢次數(shù),增加網(wǎng)絡(luò)中數(shù)據(jù)的吞吐量,同時系統(tǒng)的擴展性和魯棒性,滿足點播的服務(wù)質(zhì)量。下面將詳細介紹系統(tǒng)的每一個組成部分。
2.1 跟蹤服務(wù)器
這個服務(wù)器保存著系統(tǒng)所有資源的目錄信息,這些資源來自資源服務(wù)器和普通節(jié)點,普通用戶可以根據(jù)給定的信息點播系統(tǒng)中的資源。服務(wù)器還管理著普通節(jié)點的加入、退出、資源點播和發(fā)布等操作,以及普通節(jié)點相關(guān)信息(包括IP地址、端口號、會話號)的實時記錄,再根據(jù)不同的資源內(nèi)容選擇和管理超級節(jié)點。
2.2 資源服務(wù)器
這個服務(wù)器的主要作用是存儲了系統(tǒng)中供用戶點播的原始資源,如果系統(tǒng)中的節(jié)點要點播某一資源時,且其它節(jié)點都沒有保存,此時節(jié)點就會從資源服務(wù)器上實現(xiàn)下載,并進行欣賞。
2.3 超級節(jié)點
超級節(jié)點擁有良好性能(包括計算處理能力、存儲能力、網(wǎng)絡(luò)帶寬、I/O端口)和公共IP地址,而且表現(xiàn)出在線時間長的實際優(yōu)勢。超級節(jié)點不僅具備普通節(jié)點的所有功能,還進一步提供了管理資源分布信息的功能。普通節(jié)點在點播資源的同時把自己緩存資源的情況告知于超級節(jié)點,超級節(jié)點統(tǒng)計這些信息,供其它普通節(jié)點查詢資源的分布信息,作為節(jié)點調(diào)度數(shù)據(jù)的重要基礎(chǔ)。超級節(jié)點和普通節(jié)點還組成一個簇,形成一個邏輯子網(wǎng),子網(wǎng)中的所有普通節(jié)點都成為鄰居節(jié)點。
2.4 普通節(jié)點
普通節(jié)點可以點播網(wǎng)絡(luò)中的資源進行欣賞,同時也為其它的普通節(jié)點提供資源,加速數(shù)據(jù)的傳輸,并且普通節(jié)點還可以向網(wǎng)絡(luò)中的其它節(jié)點發(fā)布自己的整部資源,供其它普通節(jié)點選擇使用。性能好且在線時間長,具有公共IP地址的普通節(jié)點可以被服務(wù)器選擇升級為超級節(jié)點。
3 結(jié)束語
本文通過對影響P2P流媒體點播系統(tǒng)拓撲結(jié)構(gòu)的分析,搭建了一個P2P流媒體點播系統(tǒng)模型,該系統(tǒng)模型包含跟蹤服務(wù)器、資源服務(wù)器、超級節(jié)點和普通節(jié)點。系統(tǒng)能快速地定位資源,減少路由查詢次數(shù),增加系統(tǒng)的擴展性、魯棒性和數(shù)據(jù)的吞吐量,較好地利用帶寬資源,滿足用戶的點播服務(wù)要求。
參考文獻:
[1] 趙惠.P2P流媒體點播系統(tǒng)的算法研究[D].成都:西華大學(xué),2008.
[2] 管磊.P2P技術(shù)揭秘---P2P網(wǎng)絡(luò)技術(shù)原理與典型系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2011:89-103.
[3] 石志磊.流媒體技術(shù)及其系統(tǒng)設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2011.