針對(duì)一般P2P網(wǎng)絡(luò)互通性差的缺陷,本文提出了基于JXTA的P2P流媒體系統(tǒng)設(shè)計(jì)模式并且進(jìn)行了深入的實(shí)現(xiàn)研究。文中對(duì)傳統(tǒng)流媒體和P2P流媒體進(jìn)行了簡要介紹,引入了基于JXTA的P2P系統(tǒng)構(gòu)建的理論分析。通過詳細(xì)介紹流媒體系統(tǒng)關(guān)鍵技術(shù),指出了使用JXTA進(jìn)行P2P流媒體開發(fā)的優(yōu)勢(shì)。
一、傳統(tǒng)流媒體
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展,用戶對(duì)于網(wǎng)絡(luò)視頻的需求進(jìn)一步增加,對(duì)網(wǎng)絡(luò)帶寬和計(jì)算機(jī)性能要求也隨之增加。計(jì)算機(jī)網(wǎng)絡(luò)中,在對(duì)連續(xù)的時(shí)基媒體進(jìn)行遠(yuǎn)距離傳輸時(shí)(即通常所說的視頻和音頻媒體的網(wǎng)絡(luò)傳輸)通常采用流式傳輸技術(shù),流媒體又稱為流式媒體[1]。流媒體實(shí)際上是一種特定的多媒體文件,當(dāng)使用流式媒體進(jìn)行傳輸時(shí),往往只需要短暫的幾秒或者十幾秒的等待時(shí)間即可對(duì)多媒體文件進(jìn)行播放,剩余多媒體文件部分可在后臺(tái)緩存和后續(xù)播放。采用流媒體傳輸時(shí),流媒體數(shù)據(jù)經(jīng)過采集、壓縮、存儲(chǔ)、傳輸?shù)炔襟E,并且整個(gè)媒體文件不占用用戶的本地物理硬盤空間。
伴隨著流媒體的出現(xiàn),傳統(tǒng)上音頻和視頻先下載后播放的模式被打破,有力地縮短了文件播放啟動(dòng)延時(shí),提高了用戶的滿意度。在早期技術(shù)發(fā)展中,用戶從流媒體服務(wù)器進(jìn)行節(jié)目請(qǐng)求,服務(wù)器以單播的形式進(jìn)行數(shù)據(jù)響應(yīng)[2]。這種方式可視為客戶端/服務(wù)器的組合方式,這種方式操作簡單,但也存在一定的問題:比如要求服務(wù)器響應(yīng)足夠快速,網(wǎng)絡(luò)帶寬足夠大,并且要求不能同時(shí)并發(fā)多路請(qǐng)求等。
二、 P2P流媒體
隨著現(xiàn)代電子科學(xué)技術(shù)的發(fā)展,人們開始使用P2P 技術(shù)解決傳統(tǒng)流媒體技術(shù)帶來的缺陷。P2P(point to point)即為端到端技術(shù),這種技術(shù)實(shí)現(xiàn)了不同電腦之間的直接數(shù)據(jù)交換。在這種數(shù)據(jù)交換方式之下,并不存在真正服務(wù)器與客戶端的獨(dú)立概念,每臺(tái)計(jì)算機(jī)既可以做服務(wù)器也可以做客戶端使用,即打破了傳統(tǒng)的客戶端/服務(wù)器模式。P2P流媒體技術(shù)即為使用成熟的P2P技術(shù)解決流媒體傳輸?shù)膯栴}。在P2P流媒體中,用戶在節(jié)目播放過程中不僅可以從流媒體服務(wù)器獲取節(jié)目信息,也可以從周邊其他計(jì)算機(jī)中獲取流媒體信息[3]。使用這種方式可以有效地利用不同用戶的剩余帶寬,并且,隨著節(jié)目流媒體數(shù)量的增多,使用P2P流媒體技術(shù)可以實(shí)現(xiàn)節(jié)目的穩(wěn)定快速緩存播放,提升用戶的視頻播放體驗(yàn)。
三、基于JXTA的流媒體系統(tǒng)設(shè)計(jì)研究
JXTA技術(shù)
JXTA是SUN公司開發(fā)的P2P開發(fā)平臺(tái)。在JXTA開發(fā)平臺(tái)下所有的P2P網(wǎng)絡(luò)都是互相連通的,并且具有跨平臺(tái)的優(yōu)勢(shì),極大地簡化了分布式應(yīng)用與服務(wù)的搭建過程。JXTA通過定義一系列標(biāo)準(zhǔn)協(xié)議實(shí)現(xiàn)了不同P2P的相互傳輸通信,建立了一種公共網(wǎng)絡(luò)底層機(jī)制。
基于JXTA的P2P流媒體系統(tǒng)包括三層:第一層為JXTA核心層,第二層為服務(wù)層,第三層為應(yīng)用層。一般來說核心層位于最下層,主要實(shí)現(xiàn)核心的服務(wù)功能。服務(wù)層位于中間層,主要提高訪問JXTA的接口[4]。最上層為應(yīng)用層,主要功能是對(duì)JXTA進(jìn)行訪問。在JXTA中使用了較多的通信協(xié)議,主要包括點(diǎn)對(duì)等發(fā)現(xiàn)協(xié)議(Peer Discovery Protocol,PDP)、對(duì)等點(diǎn)解析協(xié)議(Peer Resolver Protocol,PRP)、對(duì)等點(diǎn)消息協(xié)議(Peer Information Protocol,PIP)、匯聚協(xié)議(Rendezvous Protocol,RVP)、管道綁定協(xié)議(Pipe Binding Protocol,PBP)和對(duì)等點(diǎn)端點(diǎn)協(xié)議(Peer Endpoint Protocol, PEP),這些協(xié)議實(shí)現(xiàn)了多媒體消息在不同網(wǎng)絡(luò)之間的任意傳輸,實(shí)現(xiàn)了端到端之間的路由、發(fā)現(xiàn)、組織以及通信。
流媒體系統(tǒng)架構(gòu)
流媒體系統(tǒng)需要滿足客戶的不同需求,在不同時(shí)間段既可能有視頻直播的需求又可能有視頻點(diǎn)播的需求。本文在構(gòu)建系統(tǒng)時(shí)講系統(tǒng)分成三層:其中底層為基礎(chǔ)架構(gòu)層,中間為系統(tǒng)功能層,最上層為交互界面層。其中底層部分使用JXTA技術(shù)實(shí)現(xiàn)對(duì)等點(diǎn)和對(duì)等組的搜索等基本功能。中間層為實(shí)現(xiàn)系統(tǒng)的關(guān)鍵部分,在該部分中包含了軟件的核心。交互界面層實(shí)現(xiàn)了與普通用戶的實(shí)時(shí)有效交互。具體設(shè)計(jì)如下圖所示:
圖1 系統(tǒng)架構(gòu)設(shè)計(jì)圖
系統(tǒng)關(guān)鍵技術(shù)與實(shí)現(xiàn)研究
JXTA網(wǎng)絡(luò)管理。在P2P網(wǎng)絡(luò)的發(fā)展過程中,P2P具體集中式模型、分布式模型以及混合式模型。JXTA網(wǎng)絡(luò)屬于P2P混合式模型。在JXTA網(wǎng)絡(luò)中,點(diǎn)被分成了不同的類型:包括邊緣對(duì)等點(diǎn)和匯聚對(duì)等點(diǎn)。邊緣對(duì)等點(diǎn)屬于普通對(duì)等點(diǎn),用于存放實(shí)際資源。匯聚對(duì)等點(diǎn)屬于超級(jí)對(duì)等點(diǎn),用于實(shí)現(xiàn)對(duì)資源的索引功能。在JXTA網(wǎng)絡(luò)中存在一種新的名詞“廣告”。廣告本質(zhì)上屬于XML文檔,其目的是為了實(shí)現(xiàn)對(duì)等點(diǎn)或者對(duì)等組等信息的發(fā)布和發(fā)現(xiàn)等功能。
對(duì)等組管理。在JXTA網(wǎng)絡(luò)中存在對(duì)等組的概念。對(duì)等組是指網(wǎng)絡(luò)創(chuàng)建初期自動(dòng)形成的一個(gè)網(wǎng)絡(luò)對(duì)等組。該網(wǎng)絡(luò)對(duì)等組會(huì)一直存在于P2P網(wǎng)絡(luò)中,并且以后的每個(gè)用戶對(duì)等組都派生子根對(duì)等組。在具體實(shí)現(xiàn)過程中,對(duì)等組通過Peer Group類函數(shù)進(jìn)行創(chuàng)建,對(duì)等組中存在對(duì)等點(diǎn),并且不同對(duì)等組中的對(duì)等點(diǎn)是不同的。對(duì)等組的提出用于方便管理對(duì)等點(diǎn)。由于基于JXTA的對(duì)等點(diǎn)可以肆意的穿透NAT等網(wǎng)絡(luò)設(shè)備,因?yàn)閷?duì)等組的管理功能非常重要。
通信技術(shù)。在P2P網(wǎng)絡(luò)中,通信是通過“管道”實(shí)現(xiàn)的。在理解管道時(shí)可以將管道看成連接信息發(fā)送端與信息接收端的部件。在對(duì)等點(diǎn)相互通信時(shí),對(duì)等點(diǎn)之間的管道是通信的基礎(chǔ)。在信息傳輸時(shí)接收端創(chuàng)建輸入管道,并將該輸入管道告知發(fā)布端。發(fā)布端則可以創(chuàng)立輸出管道,實(shí)現(xiàn)對(duì)等點(diǎn)之間的有效通信。具體通信過程如圖2所示:
圖2 對(duì)等點(diǎn)通信過程
資源管理。在P2P的應(yīng)用中最為常見的為資源共享,其在JXTA中利用內(nèi)容管理服務(wù)實(shí)現(xiàn)?;贘XTA的資源管理功能,對(duì)等點(diǎn)之間就可以實(shí)現(xiàn)不同文件的共享與定位獲取。內(nèi)容管理服務(wù)功能允許瀏覽和下載遠(yuǎn)程對(duì)等點(diǎn)的共享內(nèi)容。在文件共享時(shí),系統(tǒng)為每一個(gè)共享的文件創(chuàng)建MD5碼來作為身份的唯一標(biāo)志,因此可以有效的利用MD5碼識(shí)別文件是否為同一文件。在文件被共享后會(huì)產(chǎn)生與之有關(guān)的“廣告”,通過廣告實(shí)現(xiàn)對(duì)等點(diǎn)或者對(duì)等組中共享文件的發(fā)布和索引等功能。在具體實(shí)現(xiàn)時(shí)依靠Share Manager、Share Monitor和Share Content這三個(gè)類。
JXTA具有跨平臺(tái)的優(yōu)勢(shì),極大地簡化了分布式應(yīng)用與服務(wù)的搭建過程。JXTA通過定義一系列標(biāo)準(zhǔn)協(xié)議實(shí)現(xiàn)了不同P2P的相互傳輸通信,提出了一種公共網(wǎng)絡(luò)底層機(jī)制。JXTA作為P2P應(yīng)用的基礎(chǔ)平臺(tái),已經(jīng)得到了廣泛的關(guān)注與應(yīng)用。目前P2P使用的流媒體系統(tǒng)都各自定義底層協(xié)議,相互之間缺乏交互性。使用基于JXTA的P2P流媒體系統(tǒng)很好地提高了不同對(duì)等組之間的互通性,使得流媒體系統(tǒng)的擴(kuò)展成為了可能。
(作者單位:江西財(cái)經(jīng)職業(yè)學(xué)院)