專利名稱:一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù),特別是涉及一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法及裝置。
背景技術(shù):
在目前的各種網(wǎng)絡(luò)應(yīng)用中,許多網(wǎng)絡(luò)服務(wù)需要使用點對點技術(shù)(peer-to-peer,簡稱P2P)。P2P又稱為對等互聯(lián)網(wǎng)絡(luò)技術(shù),是一種用于不同PC(Personal Computer的縮寫,也就是個人計算機)用戶之間,不經(jīng)過中繼設(shè)備直接交換數(shù)據(jù)或服務(wù)的技術(shù)。在P2P網(wǎng)絡(luò)中,PC用戶可以直接連接到其他用戶的計算機,而不需要連接到服務(wù)器上再進行瀏覽與下載。
在互聯(lián)網(wǎng)上提供在線實時流媒體直播的服務(wù)即采用P2P技術(shù),該P2P網(wǎng)絡(luò)由許多P2P結(jié)點構(gòu)成,這些結(jié)點包括在線用戶(即客戶端)和服務(wù)器,其中每個結(jié)點都和一部分其他結(jié)點相連接。當進行在線直播服務(wù)時,服務(wù)器結(jié)點將實時流媒體數(shù)據(jù)封裝成多個數(shù)據(jù)塊,并通過一個數(shù)據(jù)驅(qū)動的P2P網(wǎng)絡(luò)將這些數(shù)據(jù)塊傳輸給每一個在線客戶端。
所述數(shù)據(jù)驅(qū)動的P2P網(wǎng)絡(luò)具有以下特點其一,與P2P結(jié)點相連接的結(jié)點稱為該P2P結(jié)點的鄰居,每一個P2P結(jié)點周期性地與它的鄰居交換數(shù)據(jù)塊可用性信息;其二,每一個P2P結(jié)點從它的鄰居結(jié)點索取和接收自己所沒有的數(shù)據(jù)塊,并將自己所擁有的數(shù)據(jù)塊發(fā)送給向自己索取的鄰居,即主要由數(shù)據(jù)塊的接收方?jīng)Q定數(shù)據(jù)塊的傳播路徑,且每一個數(shù)據(jù)塊的傳播路徑可能不同。
對于一個數(shù)據(jù)塊,每一個結(jié)點只能從一個其它結(jié)點獲取,所述其他結(jié)點或者是服務(wù)器結(jié)點,或者是其他的客戶端結(jié)點。如果把數(shù)據(jù)的發(fā)送端和接收端之間連成一條線,針對這個特定的數(shù)據(jù)塊,所有結(jié)點就會形成一棵以服務(wù)器結(jié)點為根的樹,稱為數(shù)據(jù)塊傳播樹。
舉例說明,如圖1所示,是P2P網(wǎng)絡(luò)中結(jié)點之間的數(shù)據(jù)傳輸流程圖。在一個數(shù)據(jù)驅(qū)動的P2P網(wǎng)絡(luò)中,結(jié)點A與結(jié)點B互為鄰居,B向A獲取一個數(shù)據(jù)塊的過程如下步驟101,別的某個結(jié)點將整個數(shù)據(jù)塊傳輸給A,即A擁有了該數(shù)據(jù)塊;步驟102,通過結(jié)點間的周期性數(shù)據(jù)塊可用性信息交換,B得知A擁有該數(shù)據(jù)塊;步驟103,B決策向A獲取該數(shù)據(jù)塊;步驟104,B向A發(fā)送獲取該數(shù)據(jù)塊的請求;步驟105,A收到B的索取請求后,將該數(shù)據(jù)塊發(fā)送給B。
在所述結(jié)點B向結(jié)點A獲取一個數(shù)據(jù)塊的過程中,A與B之間的每一次通訊都需要花費時間。假設(shè)一個數(shù)據(jù)塊的大小為1秒(是指客戶端在實時播放流媒體數(shù)據(jù)時,連續(xù)播放1秒所接收的數(shù)據(jù)量大小),A向B的傳輸帶寬為碼率的1/8(即傳輸1秒數(shù)據(jù)需要8秒),A與B之間的RTT(Round-Trip Time,往返時延,即發(fā)送端和接收端之間往返通訊所需要的時間)為0.1秒,網(wǎng)絡(luò)中數(shù)據(jù)塊可用性信息交換的周期為4秒,則以上各步驟的耗時為步驟101,未知,A與B之間的傳輸延遲是以(a)結(jié)束時開始計時;步驟102,A獲取數(shù)據(jù)塊之后,可能在0~4秒后通知B,假設(shè)期望延時為2秒;A發(fā)出通知到B收到通知為半個RTT,所以步驟102總的期望耗時為2.05秒。
步驟103,認為不耗時;步驟104,半個RTT,為0.05秒;步驟105,傳輸耗時,8秒+半個RTT,為8.05秒;以上結(jié)點間傳輸一個數(shù)據(jù)塊的時間總共為10.15秒(所述時間僅作為舉例說明)。因此,在數(shù)據(jù)塊傳播樹中,每增加一個層級(即樹型結(jié)構(gòu)的層級)的結(jié)點,數(shù)據(jù)塊傳輸?shù)皆摻Y(jié)點就需要增加10.15秒。將一個數(shù)據(jù)塊從一個結(jié)點傳到另一個結(jié)點所需的時間稱為傳輸延遲,上述過程的級間傳輸延遲為10.15秒。
當P2P網(wǎng)絡(luò)在線人數(shù)比較多的時候,對每一個數(shù)據(jù)塊都會形成一棵深度較大的數(shù)據(jù)塊傳播樹,如果數(shù)據(jù)塊在每一級的傳輸都需要較長的時間,則累計延遲會隨深度的增加而正比增加,使得處于樹葉的結(jié)點與服務(wù)器結(jié)點之間的傳輸延遲很大。在進行實時性要求很高的網(wǎng)絡(luò)直播(如球賽)時,如果客戶端的播放時間點與直播的實際當前時間差距太大,會造成播放畫面的不連續(xù),給用戶帶來很差的用戶體驗。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法及裝置,以解決對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸延遲較長而造成客戶端直播畫面不連續(xù)的問題。
為解決上述技術(shù)問題,根據(jù)本發(fā)明提供的具體實施例,本發(fā)明公開了以下技術(shù)方案一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法,包括在同一時間段內(nèi),所述對等網(wǎng)絡(luò)中的服務(wù)器結(jié)點將同一數(shù)據(jù)塊傳輸給所有的客戶端結(jié)點;其中,客戶端結(jié)點B向結(jié)點A發(fā)送預(yù)約請求,請求中包含結(jié)點B所需的數(shù)據(jù)塊信息;結(jié)點A與結(jié)點B建立預(yù)約關(guān)系;結(jié)點A自動將結(jié)點B需要的數(shù)據(jù)塊傳輸給結(jié)點B。
優(yōu)選的,結(jié)點A按照以下步驟自動將結(jié)點B需要的數(shù)據(jù)塊傳輸給結(jié)點B若結(jié)點A沒有結(jié)點B需要的數(shù)據(jù)塊,則當結(jié)點A接收到所述數(shù)據(jù)塊的一部分,同步發(fā)送給結(jié)點B;若結(jié)點A擁有所述數(shù)據(jù)塊,則自動發(fā)送給結(jié)點B。
優(yōu)選的,具有預(yù)約關(guān)系的結(jié)點之間形成傳輸路徑;服務(wù)器結(jié)點將所有的數(shù)據(jù)塊分組,每組數(shù)據(jù)塊按照不同的路徑傳輸。
其中,結(jié)點A將同路的數(shù)據(jù)塊自動發(fā)送給結(jié)點B。
其中,結(jié)點B同時與多個結(jié)點建立預(yù)約關(guān)系,從不同結(jié)點接收不同路的數(shù)據(jù)塊。
其中,結(jié)點B首次隨機選取結(jié)點A建立預(yù)約關(guān)系;若結(jié)點B需要重新建立預(yù)約,則查找發(fā)送同路的上一個數(shù)據(jù)塊的結(jié)點,并與該結(jié)點建立同路的下一個數(shù)據(jù)塊的預(yù)約關(guān)系。
優(yōu)選的,所述數(shù)據(jù)塊分組規(guī)則是將數(shù)據(jù)塊按照從小到大的自然數(shù)順序編號,編號除以任一自然數(shù)后余數(shù)相同的數(shù)據(jù)塊分為一組。
一種在對等網(wǎng)絡(luò)中傳輸數(shù)據(jù)的客戶端裝置,安裝在客戶端結(jié)點運行,在同一時間段內(nèi),所述對等網(wǎng)絡(luò)中的服務(wù)器結(jié)點將同一數(shù)據(jù)塊傳輸給所有的客戶端結(jié)點,其中每個客戶端裝置包括預(yù)約單元,用于向網(wǎng)絡(luò)中的結(jié)點C發(fā)送預(yù)約請求,請求中包含自己所需的數(shù)據(jù)塊信息,與結(jié)點C建立預(yù)約關(guān)系;接收結(jié)點D發(fā)來的預(yù)約請求,與結(jié)點D建立預(yù)約關(guān)系;傳輸單元,用于從結(jié)點C自動接收所需數(shù)據(jù)塊,并自動傳輸給結(jié)點D。
優(yōu)選的,所述傳輸單元每接收到數(shù)據(jù)塊的一部分,同步發(fā)送給結(jié)點D。
優(yōu)選的,具有預(yù)約關(guān)系的結(jié)點之間形成傳輸路徑;服務(wù)器結(jié)點將所有的數(shù)據(jù)塊分組,每組數(shù)據(jù)塊按照不同的路徑傳輸。
其中,所述傳輸單元從結(jié)點C自動接收同路的數(shù)據(jù)塊,并自動發(fā)送給結(jié)點D。
其中,所述傳輸單元同時從多個結(jié)點接收不同路的數(shù)據(jù)塊,并同時向多個結(jié)點發(fā)送不同路的數(shù)據(jù)塊。
其中,所述預(yù)約單元首次隨機選取結(jié)點C建立預(yù)約關(guān)系;若需要重新建立預(yù)約,則查找發(fā)送同路的上一個數(shù)據(jù)塊的結(jié)點,并與該結(jié)點建立同路的下一個數(shù)據(jù)塊的預(yù)約關(guān)系。
根據(jù)本發(fā)明提供的具體實施例,本發(fā)明公開了以下技術(shù)效果在P2P直播網(wǎng)絡(luò)的數(shù)據(jù)傳輸過程中,每個作為數(shù)據(jù)接收方的結(jié)點都預(yù)約作為數(shù)據(jù)發(fā)送方的結(jié)點,每當數(shù)據(jù)發(fā)送結(jié)點從其他結(jié)點接收到數(shù)據(jù)塊的一部分后,會立即發(fā)送給所述數(shù)據(jù)接收結(jié)點;這樣,在數(shù)據(jù)發(fā)送結(jié)點接收到全部數(shù)據(jù)塊后不久,數(shù)據(jù)接收結(jié)點也接收到了全部數(shù)據(jù)塊,結(jié)點間的傳輸延遲大大降低。而且,數(shù)據(jù)發(fā)送結(jié)點還會把后續(xù)的數(shù)據(jù)塊自動發(fā)送給數(shù)據(jù)接收結(jié)點,每個結(jié)點在每次接收數(shù)據(jù)之前,就不必按照傳統(tǒng)的方法進行周期性數(shù)據(jù)塊可用性信息的交換,減少了結(jié)點間的傳輸時間。本發(fā)明實施例提供的傳輸方法,通過降低結(jié)點間的傳輸延遲和數(shù)據(jù)傳輸時間,將整個網(wǎng)絡(luò)的數(shù)據(jù)傳輸延遲降低到很低的水平。
因此,直播網(wǎng)絡(luò)中每個數(shù)據(jù)塊在實際傳播之前,所有等待接收該數(shù)據(jù)塊的結(jié)點已建立好數(shù)據(jù)塊的預(yù)約下載關(guān)系,若數(shù)據(jù)塊傳播樹每增加一層,帶來的傳輸延遲非常小。當P2P網(wǎng)絡(luò)在線人數(shù)比較多、直播網(wǎng)絡(luò)的規(guī)模很大的時候,傳輸延遲仍然很小,對用戶端的接收和播放影響也很小。
圖1是現(xiàn)有技術(shù)所述P2P網(wǎng)絡(luò)中結(jié)點之間的數(shù)據(jù)傳輸流程圖;
圖2是本發(fā)明實施例所述P2P直播網(wǎng)絡(luò)中結(jié)點之間的數(shù)據(jù)傳輸流程圖;圖3是本發(fā)明優(yōu)選實施例所述P2P直播網(wǎng)絡(luò)的數(shù)據(jù)傳輸示意圖;圖4是本發(fā)明實施例所述在P2P網(wǎng)絡(luò)中傳輸數(shù)據(jù)的客戶端裝置。
具體實施例方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。
針對P2P網(wǎng)絡(luò)中的數(shù)據(jù)傳輸延遲問題,本發(fā)明實施例采用“預(yù)約下載”技術(shù)來降低結(jié)點間的數(shù)據(jù)傳輸延遲。“預(yù)約下載”是指作為數(shù)據(jù)接收方的結(jié)點與作為數(shù)據(jù)發(fā)送方的結(jié)點建立預(yù)約關(guān)系,這樣每個數(shù)據(jù)塊在實際傳播之前,所有等待接收該數(shù)據(jù)塊的結(jié)點已建立好數(shù)據(jù)塊的預(yù)約下載關(guān)系,然后數(shù)據(jù)塊沿著預(yù)約路線,從服務(wù)器結(jié)點一直傳輸?shù)綌?shù)據(jù)塊傳播樹的葉子結(jié)點。其中,所述數(shù)據(jù)塊傳播樹是用來描述數(shù)據(jù)塊傳輸路徑的一個概念,而且是在數(shù)據(jù)傳輸過程中隨著結(jié)點之間建立的預(yù)約關(guān)系而形成。
“預(yù)約下載”技術(shù)充分結(jié)合了直播網(wǎng)絡(luò)的特點,“直播”的特點是在同一時間段內(nèi),網(wǎng)絡(luò)中的所有在線客戶端結(jié)點都下載同一內(nèi)容的流媒體數(shù)據(jù),例如某場球賽直播,參與下載的客戶端用戶能夠同步觀看比賽。在直播網(wǎng)絡(luò)中,客戶端結(jié)點在同一時間段內(nèi)會擁有相同的數(shù)據(jù)塊,即各個客戶端結(jié)點所擁有的數(shù)據(jù)塊信息是同步變化的。所以,在“預(yù)約下載”技術(shù)中結(jié)點之間無需進行數(shù)據(jù)塊可用性信息的交換,便可直接預(yù)約結(jié)點獲取數(shù)據(jù)塊。
參照圖2,是P2P直播網(wǎng)絡(luò)中結(jié)點之間的數(shù)據(jù)傳輸流程圖。在P2P直播網(wǎng)絡(luò)中,由于每個結(jié)點都和一部分鄰居結(jié)點相連接,所以通常與鄰居結(jié)點建立預(yù)約關(guān)系。假設(shè)結(jié)點A與結(jié)點B互為鄰居,并且結(jié)點A和結(jié)點B都是客戶端結(jié)點,通過“預(yù)約下載”技術(shù)結(jié)點B向結(jié)點A獲取一個數(shù)據(jù)塊的過程如下步驟201,B決策向A獲取該數(shù)據(jù)塊。此時,結(jié)點B無需知道結(jié)點A是否擁有自己所需的數(shù)據(jù)塊,因為直播過程中所有的結(jié)點在同一時段都在下載相同的數(shù)據(jù)塊;步驟202,B向A發(fā)送預(yù)約請求,即B向A發(fā)送獲取數(shù)據(jù)塊的請求,請求參數(shù)中包含B所需的數(shù)據(jù)塊信息;步驟203,A向B返回請求響應(yīng),B與A建立預(yù)約關(guān)系,所述預(yù)約關(guān)系是一種樹型結(jié)構(gòu)中的父子關(guān)系,父結(jié)點是A,子結(jié)點是B。結(jié)點A和結(jié)點B分別擁有一張列表,用于記錄與自己建立預(yù)約關(guān)系的結(jié)點信息和需要下載的數(shù)據(jù)塊信息,建立預(yù)約時,結(jié)點A在自己的列表中記錄需要向結(jié)點B發(fā)送哪些數(shù)據(jù)塊,而結(jié)點B在自己的列表中記錄需要從結(jié)點A接收哪些數(shù)據(jù)塊;步驟204,預(yù)約關(guān)系形成后,A開始從其他結(jié)點接收該數(shù)據(jù)塊的一部分,并同步發(fā)送給B。直播下載時,結(jié)點A作為數(shù)據(jù)接收方,需要從與它建立預(yù)約關(guān)系的父結(jié)點處接收數(shù)據(jù)塊,A同時作為數(shù)據(jù)發(fā)送方將該數(shù)據(jù)塊同步傳輸給它的子結(jié)點B。在整個網(wǎng)絡(luò)中,服務(wù)器結(jié)點將實時流媒體數(shù)據(jù)封裝成多個數(shù)據(jù)塊傳輸,而每個數(shù)據(jù)塊在傳輸過程中,也被分成多個小的部分;步驟205,步驟204循環(huán)執(zhí)行多次后,A接收完數(shù)據(jù)塊的最后一部分,并同步發(fā)送給B;步驟206,B接收A發(fā)來的數(shù)據(jù)塊的最后一部分,獲取完成整個數(shù)據(jù)塊。
舉例說明上述傳輸過程,假設(shè)一個數(shù)據(jù)塊被分成1000份,當結(jié)點A接收到第一份的時候,立即發(fā)送給結(jié)點B,并同時開始接收第二份數(shù)據(jù)。以此類推,當結(jié)點A接收完最后一份數(shù)據(jù)時,再經(jīng)過一份數(shù)據(jù)的傳輸時間,結(jié)點B接收完最后一份數(shù)據(jù)后,也完成了整個數(shù)據(jù)塊的獲取過程。因此,在數(shù)據(jù)塊傳播樹中,一個數(shù)據(jù)塊從一個結(jié)點傳輸?shù)搅硪粋€結(jié)點的傳輸延遲僅是步驟206花費的時間,即半個RTT+傳輸1/1000個數(shù)據(jù)塊的時間,這個總的時間約等于半個RTT的時間。其中,所述傳輸延遲的計算是建立在已形成預(yù)約關(guān)系的基礎(chǔ)上,即不包括建立預(yù)約關(guān)系的時間。
與現(xiàn)有技術(shù)的數(shù)據(jù)傳輸方法相比較,現(xiàn)有技術(shù)中的結(jié)點是在接收到整個數(shù)據(jù)塊后才開始向另一個結(jié)點傳輸,而本發(fā)明實施例中的結(jié)點在接收到數(shù)據(jù)塊的一部分后就同步發(fā)送。因此,整個數(shù)據(jù)塊傳播樹中級間的傳輸延遲被大大降低。而且,每個結(jié)點在獲取數(shù)據(jù)塊之前,直接發(fā)送預(yù)約請求,而不需要與鄰居周期性地進行數(shù)據(jù)塊可用性信息的交換,從而有助于降低整個網(wǎng)絡(luò)的傳輸延遲。
圖2所示過程是客戶端結(jié)點之間的傳輸流程,如果結(jié)點A是服務(wù)器結(jié)點,則結(jié)點A擁有所有的流媒體數(shù)據(jù)塊,當與結(jié)點B建立預(yù)約關(guān)系后,結(jié)點A直接將數(shù)據(jù)塊自動傳輸給結(jié)點B。
本發(fā)明優(yōu)選的,服務(wù)器結(jié)點將所有的數(shù)據(jù)塊分組,每組數(shù)據(jù)塊并行向客戶端結(jié)點傳輸,以便加快傳輸速度。具有預(yù)約關(guān)系的結(jié)點之間形成傳輸路徑,每組數(shù)據(jù)按照不同的傳輸路徑同時傳輸。例如,共有四組數(shù)據(jù),分別在路徑1、2、3、4上傳輸,因此允許一個結(jié)點同時與多個結(jié)點建立預(yù)約,同時屬于多條傳輸路徑,分別從1、2、3、4同時接收數(shù)據(jù)塊。
例如,將數(shù)據(jù)塊按照從小到大的自然數(shù)順序編號,編號除以自然數(shù)x后余數(shù)相同的數(shù)據(jù)塊分為一組,簡稱“模x同余”的數(shù)據(jù)塊。如編號是a、a+x、a+2x、a+3 x...的數(shù)據(jù)塊組成一路,編號是b、b+x、b+2x、b+3x...的數(shù)據(jù)塊組成另一路;其中,參數(shù)a和b為任意自然數(shù)。參見圖3,某結(jié)點P同時與鄰居結(jié)點C、D、E、F、G...共x個結(jié)點建立了預(yù)約關(guān)系,從結(jié)點C獲取編號是a、a+x、a+2x、a+3 x...為一組的數(shù)據(jù)塊,從結(jié)點D獲取編號是b、b+x、b+2x、b+3x...為一組的數(shù)據(jù)塊,以此類推,所述結(jié)點P每次可同時接收x個數(shù)據(jù)塊。當然,也可以按照其他規(guī)則進行數(shù)據(jù)塊分組,本實施例在此不作限定。
本發(fā)明優(yōu)選的,預(yù)約關(guān)系不僅存在于一個數(shù)據(jù)塊的傳輸過程中,已建立預(yù)約關(guān)系的結(jié)點之間還可以自動傳輸后續(xù)的數(shù)據(jù)塊,即在圖2中結(jié)點A開始接收另一個數(shù)據(jù)塊時,也會同步發(fā)送給結(jié)點B。但是,在以上數(shù)據(jù)塊分組傳輸?shù)姆桨钢校總€結(jié)點只能把同路的數(shù)據(jù)塊傳輸給下一級結(jié)點,例如結(jié)點C向結(jié)點P傳完數(shù)據(jù)塊a后,會自動傳輸數(shù)據(jù)塊a+x、a+2x...;結(jié)點D向結(jié)點P傳完數(shù)據(jù)塊b后,會自動傳輸數(shù)據(jù)塊b+x、b+2x...。因此,每個結(jié)點在與另一結(jié)點建立預(yù)約后,通??梢赃B續(xù)接收到多個同路的數(shù)據(jù)塊,大大降低了數(shù)據(jù)傳輸延遲,從而提高了整個網(wǎng)絡(luò)的傳輸速度。
在上述“預(yù)約下載”方案的說明中,存在一個預(yù)約前提,即同路的上一個數(shù)據(jù)塊是從某結(jié)點預(yù)約獲取,則同路下一個數(shù)據(jù)塊的預(yù)約關(guān)系也應(yīng)與該結(jié)點建立,這樣可以保證不出現(xiàn)循環(huán)的預(yù)約建立,確保全局的預(yù)約關(guān)系形成樹而不是回路。因為對于一個數(shù)據(jù)塊,每一個結(jié)點只能從一個其它結(jié)點獲取,如果形成回路,則會出現(xiàn)一個結(jié)點從兩個其他結(jié)點獲取同一個數(shù)據(jù)塊的情況。
具體情況為如果結(jié)點P新加入一個直播網(wǎng)絡(luò),則隨機選取一個鄰居結(jié)點C建立預(yù)約關(guān)系;如果結(jié)點P從結(jié)點C接收完數(shù)據(jù)塊a+x后,由于網(wǎng)絡(luò)設(shè)備等原因造成傳輸中斷,當需要繼續(xù)接收同路的數(shù)據(jù)塊a+2x、a+3x...時,會查找發(fā)送數(shù)據(jù)塊a+x的結(jié)點記錄,再次與結(jié)點C建立預(yù)約。在某些情況下,例如結(jié)點C下線退出網(wǎng)絡(luò),或者預(yù)約結(jié)點長時間不響應(yīng)預(yù)約請求,結(jié)點會重新隨機選擇建立預(yù)約的結(jié)點。
需要說明的是,一個結(jié)點在無法與同路的預(yù)約結(jié)點重新建立預(yù)約關(guān)系的情況下,會根據(jù)當前的網(wǎng)絡(luò)連接狀況采取多種策略選取預(yù)約結(jié)點,隨機選取只是其中一種簡單的實現(xiàn)。而且,在實際應(yīng)用中,通常將上述基于“預(yù)約下載”的數(shù)據(jù)傳輸方法與傳統(tǒng)的P2P傳輸方式相結(jié)合使用,這樣能夠達到更好的傳輸效果。因此,預(yù)約下載時候選取結(jié)點的方法還與傳統(tǒng)下載的情況有關(guān)系,本發(fā)明在此不作限定。
綜上所述,“預(yù)約下載”策略基本從兩個方面來提高網(wǎng)絡(luò)傳輸速度一方面,傳輸一個數(shù)據(jù)塊時,結(jié)點在接收到該數(shù)據(jù)塊的一部分時就同步發(fā)送給下一級結(jié)點,降低了傳輸延遲;另一方面,傳輸多個數(shù)據(jù)塊時,建立預(yù)約關(guān)系的結(jié)點之間可以連續(xù)傳輸同路的多個數(shù)據(jù)塊,加快了傳輸速度。因此,將所述“預(yù)約下載”技術(shù)應(yīng)用到P2P直播網(wǎng)絡(luò)的傳輸中,能夠大大降低數(shù)據(jù)傳輸延遲,尤其是當P2P網(wǎng)絡(luò)在線人數(shù)比較多的時候,“預(yù)約下載”將傳輸延遲對客戶端的影響降到了很低的水平,可以給用戶帶來更好的使用體驗。
針對上述“預(yù)約下載”技術(shù),本發(fā)明實施例還提供了一種客戶端裝置,安裝在用戶的計算機設(shè)備上運行。當用戶參與下載直播數(shù)據(jù)時,就作為P2P直播網(wǎng)絡(luò)中的客戶端結(jié)點,從服務(wù)器結(jié)點或其他客戶端結(jié)點獲取實時流媒體數(shù)據(jù)。
參照圖4,是所述在P2P網(wǎng)絡(luò)中傳輸數(shù)據(jù)的客戶端裝置。P2P網(wǎng)絡(luò)中的每個在線客戶端都需要安裝該裝置來實現(xiàn)與其他結(jié)點的數(shù)據(jù)傳輸,而且客戶端結(jié)點既可作為數(shù)據(jù)接收方,也可以作為數(shù)據(jù)發(fā)送方。所述裝置主要包括預(yù)約單元401和傳輸單元402,其中所述預(yù)約單元401負責(zé)與其他結(jié)點建立預(yù)約關(guān)系,所述傳輸單元402負責(zé)與其他結(jié)點進行數(shù)據(jù)塊的傳輸。
當客戶端結(jié)點作為數(shù)據(jù)接收方時,預(yù)約單元401用于向其他鄰居結(jié)點發(fā)送預(yù)約請求,請求中包含該結(jié)點需要獲取的數(shù)據(jù)塊信息;若收到請求響應(yīng),則建立了預(yù)約的父子關(guān)系,預(yù)約單元401記錄父結(jié)點的相關(guān)信息和需要獲取的數(shù)據(jù)塊信息。當客戶端結(jié)點作為數(shù)據(jù)接收方時,預(yù)約單元401用于接收其他鄰居結(jié)點發(fā)來的預(yù)約請求,并做出響應(yīng);此時,該客戶端結(jié)點作為預(yù)約的父結(jié)點,將預(yù)約子結(jié)點的相關(guān)信息和預(yù)約發(fā)送的數(shù)據(jù)塊信息記錄下來。
傳輸單元402負責(zé)根據(jù)預(yù)約單元401記錄的信息,從建立預(yù)約的父結(jié)點接收數(shù)據(jù)塊,并自動傳輸給子結(jié)點。在傳輸數(shù)據(jù)塊時,傳輸單元402每接收到數(shù)據(jù)塊的一部分,就立即同步傳輸給下級的子結(jié)點,從而將數(shù)據(jù)塊在結(jié)點間的傳輸延遲降到最低。
優(yōu)選的,服務(wù)器結(jié)點將所有數(shù)據(jù)塊分成多組并行傳輸,如前所述,“模8同余”的數(shù)據(jù)塊集合稱為一路。根據(jù)已建立好的預(yù)約關(guān)系,所述傳輸單元402還會自動接收到同路的后續(xù)數(shù)據(jù)塊,并自動發(fā)送給子結(jié)點。而且,該客戶端結(jié)點可以同時從多個結(jié)點接收不同路的數(shù)據(jù),并同時向多個結(jié)點發(fā)送數(shù)據(jù),實現(xiàn)傳輸單元402并行傳輸數(shù)據(jù)的功能。
需要說明的是,預(yù)約單元401建立的預(yù)約關(guān)系是針對“路”進行的,即同路的上一個數(shù)據(jù)塊如果從某結(jié)點獲取,則同路下一個數(shù)據(jù)塊的預(yù)約關(guān)系也應(yīng)該與該結(jié)點建立。預(yù)約單元401在向其他結(jié)點發(fā)送某個數(shù)據(jù)塊的預(yù)約請求前,會查找該數(shù)據(jù)塊的預(yù)約記錄;同樣,在接收到某個結(jié)點的預(yù)約請求后,也會核實預(yù)約記錄。但是,如果客戶端結(jié)點是首次登錄網(wǎng)絡(luò),則隨機選取一個鄰居結(jié)點建立預(yù)約關(guān)系;而且,如果預(yù)約建立不成功,也會隨機選取其他結(jié)點。如前所述,隨機選取僅是其中一種實現(xiàn)方案,本發(fā)明在此不作限定。
作為P2P網(wǎng)絡(luò)中的結(jié)點,所述客戶端裝置除包括預(yù)約單元401和傳輸單元402外,還設(shè)置了其他的功能單元,如與其他結(jié)點通信連接的建立、監(jiān)控、管理維護等功能,由于與本發(fā)明內(nèi)容相關(guān)性較小,在此不作說明。
圖4所示裝置中未詳述的部分可以參見圖2、圖3所示方法的相關(guān)部分,為了篇幅考慮,在此不再詳述。
以上對本發(fā)明所提供的一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法及裝置,進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法,其特征在于,包括在同一時間段內(nèi),所述對等網(wǎng)絡(luò)中的服務(wù)器結(jié)點將同一數(shù)據(jù)塊傳輸給所有的客戶端結(jié)點;其中,客戶端結(jié)點B向結(jié)點A發(fā)送預(yù)約請求,請求中包含結(jié)點B所需的數(shù)據(jù)塊信息;結(jié)點A與結(jié)點B建立預(yù)約關(guān)系;結(jié)點A自動將結(jié)點B需要的數(shù)據(jù)塊傳輸給結(jié)點B。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,結(jié)點A按照以下步驟自動將結(jié)點B需要的數(shù)據(jù)塊傳輸給結(jié)點B若結(jié)點A沒有結(jié)點B需要的數(shù)據(jù)塊,則當結(jié)點A接收到所述數(shù)據(jù)塊的一部分,同步發(fā)送給結(jié)點B;若結(jié)點A擁有所述數(shù)據(jù)塊,則自動發(fā)送給結(jié)點B。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于具有預(yù)約關(guān)系的結(jié)點之間形成傳輸路徑;服務(wù)器結(jié)點將所有的數(shù)據(jù)塊分組,每組數(shù)據(jù)塊按照不同的路徑傳輸。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于結(jié)點A將同路的數(shù)據(jù)塊自動發(fā)送給結(jié)點B。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于結(jié)點B同時與多個結(jié)點建立預(yù)約關(guān)系,從不同結(jié)點接收不同路的數(shù)據(jù)塊。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于結(jié)點B首次隨機選取結(jié)點A建立預(yù)約關(guān)系;若結(jié)點B需要重新建立預(yù)約,則查找發(fā)送同路的上一個數(shù)據(jù)塊的結(jié)點,并與該結(jié)點建立同路的下一個數(shù)據(jù)塊的預(yù)約關(guān)系。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于所述數(shù)據(jù)塊分組規(guī)則是將數(shù)據(jù)塊按照從小到大的自然數(shù)順序編號,編號除以任一自然數(shù)后余數(shù)相同的數(shù)據(jù)塊分為一組。
8.一種在對等網(wǎng)絡(luò)中傳輸數(shù)據(jù)的客戶端裝置,安裝在客戶端結(jié)點運行,其特征在于,在同一時間段內(nèi),所述對等網(wǎng)絡(luò)中的服務(wù)器結(jié)點將同一數(shù)據(jù)塊傳輸給所有的客戶端結(jié)點,其中每個客戶端裝置包括預(yù)約單元,用于向網(wǎng)絡(luò)中的結(jié)點C發(fā)送預(yù)約請求,請求中包含自己所需的數(shù)據(jù)塊信息,與結(jié)點C建立預(yù)約關(guān)系;接收結(jié)點D發(fā)來的預(yù)約請求,與結(jié)點D建立預(yù)約關(guān)系;傳輸單元,用于從結(jié)點C自動接收所需數(shù)據(jù)塊,并自動傳輸給結(jié)點D。
9.根據(jù)權(quán)利要求8所述的客戶端裝置,其特征在于所述傳輸單元每接收到數(shù)據(jù)塊的一部分,同步發(fā)送給結(jié)點D。
10.根據(jù)權(quán)利要求8所述的客戶端裝置,其特征在于具有預(yù)約關(guān)系的結(jié)點之間形成傳輸路徑;服務(wù)器結(jié)點將所有的數(shù)據(jù)塊分組,每組數(shù)據(jù)塊按照不同的路徑傳輸。
11.根據(jù)權(quán)利要求10所述的客戶端裝置,其特征在于所述傳輸單元從結(jié)點C自動接收同路的數(shù)據(jù)塊,并自動發(fā)送給結(jié)點D。
12.根據(jù)權(quán)利要求10所述的客戶端裝置,其特征在于所述傳輸單元同時從多個結(jié)點接收不同路的數(shù)據(jù)塊,并同時向多個結(jié)點發(fā)送不同路的數(shù)據(jù)塊。
13.根據(jù)權(quán)利要求10所述的客戶端裝置,其特征在于所述預(yù)約單元首次隨機選取結(jié)點C建立預(yù)約關(guān)系;若需要重新建立預(yù)約,則查找發(fā)送同路的上一個數(shù)據(jù)塊的結(jié)點,并與該結(jié)點建立同路的下一個數(shù)據(jù)塊的預(yù)約關(guān)系。
全文摘要
本發(fā)明公開了一種對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸方法及裝置,以解決對等網(wǎng)絡(luò)中的數(shù)據(jù)傳輸延遲較長而造成客戶端直播畫面不連續(xù)的問題。所述方法包括在同一時間段內(nèi),所述對等網(wǎng)絡(luò)中的服務(wù)器結(jié)點將同一數(shù)據(jù)塊傳輸給所有的客戶端結(jié)點;其中,客戶端結(jié)點B向結(jié)點A發(fā)送預(yù)約請求,請求中包含結(jié)點B所需的數(shù)據(jù)塊信息;結(jié)點A與結(jié)點B建立預(yù)約關(guān)系;結(jié)點A自動將結(jié)點B需要的數(shù)據(jù)塊傳輸給結(jié)點B。所述方法使直播網(wǎng)絡(luò)中每個數(shù)據(jù)塊在實際傳播之前,所有等待接收該數(shù)據(jù)塊的結(jié)點已建立好數(shù)據(jù)塊的預(yù)約下載關(guān)系,若數(shù)據(jù)塊傳播樹每增加一層,帶來的傳輸延遲非常小。當P2P網(wǎng)絡(luò)在線人數(shù)比較多、直播網(wǎng)絡(luò)的規(guī)模很大的時候,傳輸延遲仍然對用戶端的接收和播放影響很小。
文檔編號H04L12/28GK101090367SQ20071011849
公開日2007年12月19日 申請日期2007年7月6日 優(yōu)先權(quán)日2007年7月6日
發(fā)明者蔣又新 申請人:北京搜狗科技發(fā)展有限公司