專利名稱:一種基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,屬于網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域。
背景技術(shù):
已有的網(wǎng)絡(luò)傳輸方式,包括網(wǎng)絡(luò)單播,組播和廣播。單播是指網(wǎng)絡(luò)中一個(gè)服務(wù)器向一個(gè)用戶終端通過建立一條網(wǎng)絡(luò)鏈路傳輸數(shù)據(jù)的方式,是網(wǎng)絡(luò)中最基本的數(shù)據(jù)傳輸方式。當(dāng)多個(gè)用戶需要獲得相同數(shù)據(jù)時(shí),服務(wù)器與用戶之間建立多個(gè)獨(dú)立的單播傳輸鏈路進(jìn)行數(shù)據(jù)傳輸是非常低效的,因?yàn)樗鼘⑼瑯拥臄?shù)據(jù)重復(fù)發(fā)送了很多次,降低了網(wǎng)絡(luò)帶寬利用率。組播是一個(gè)服務(wù)器向多個(gè)用戶終端同時(shí)傳輸相同數(shù)據(jù)的傳輸方式,這種方式提高了網(wǎng)絡(luò)帶寬利用率,但由于服務(wù)器只有一個(gè),因此對于任何一個(gè)組播用戶來說,其下載數(shù)據(jù)的速度都不會(huì)超過單播方式提供的下載速度。廣播是一個(gè)服務(wù)器向所有的用戶終端同時(shí)傳輸數(shù)據(jù)的傳輸方式,它實(shí)際上是一種特殊的組播,只是它并不考慮哪些用戶是其服務(wù)對象,默認(rèn)所有的用戶都需要接收其數(shù)據(jù)。類似于組播,每一個(gè)廣播的用戶可達(dá)到的最大下載速率也不超過單播方式提供的下載速度。
網(wǎng)絡(luò)匯播有別于上述三種數(shù)據(jù)傳輸方式,它是指網(wǎng)絡(luò)中的多個(gè)服務(wù)器向一個(gè)用戶終端發(fā)送數(shù)據(jù)的傳輸方式。若網(wǎng)絡(luò)中的多個(gè)服務(wù)器向多個(gè)用戶分別以這種匯播傳輸方式提供服務(wù)時(shí)就構(gòu)成了網(wǎng)絡(luò)匯播傳輸系統(tǒng)。由于采用匯播的方式使得用戶能夠并行地從多個(gè)服務(wù)器上同時(shí)下載用戶想要數(shù)據(jù),因而能明顯地提高用戶的下載速度,縮短下載時(shí)間,從而減小由于服務(wù)器或網(wǎng)絡(luò)故障導(dǎo)致的數(shù)據(jù)傳輸失敗概率。
利用匯播進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳播的典型例子是采用P2P的方式(如在用戶端上使用著名的BitTorrent等軟件)進(jìn)行數(shù)據(jù)共享和下載。網(wǎng)絡(luò)中等待下載數(shù)據(jù)的用戶終端通過從它周圍的對等終端處并行地下載它所沒有的部分?jǐn)?shù)據(jù),從而快速地得到完整的數(shù)據(jù)。然而P2P方式具有兩個(gè)主要缺點(diǎn)1、用戶終端能力有限。在P2P方式下,每一個(gè)對等的用戶終端在下載數(shù)據(jù)的同時(shí)也扮演服務(wù)器的角色,將它已有的數(shù)據(jù)提供給其它用戶終端下載。而這些用戶終端往往由個(gè)人電腦(PC)組成,其帶寬和穩(wěn)定性得不到保證,同時(shí),當(dāng)用戶下載完成以后很可能退出網(wǎng)絡(luò),從而減少了網(wǎng)絡(luò)中服務(wù)終端的數(shù)量,因而完全依賴于對等用戶終端的網(wǎng)絡(luò)匯播方式無法提供長時(shí)間穩(wěn)定的數(shù)據(jù)下載服務(wù);2、未采用編碼。P2P軟件通常事先將待傳數(shù)據(jù)分成若干相同長度的數(shù)據(jù)塊,對等用戶終端之間通過傳遞不同的數(shù)據(jù)塊實(shí)現(xiàn)數(shù)據(jù)共享從而重構(gòu)原始數(shù)據(jù)。由于提供數(shù)據(jù)下載服務(wù)的終端彼此之間并不知道對方的存在以及對方數(shù)據(jù)的存儲(chǔ)情況,因而導(dǎo)致用戶會(huì)從不同的對等用戶處收到相同的數(shù)據(jù)塊,從而浪費(fèi)網(wǎng)絡(luò)帶寬,降低數(shù)據(jù)的傳輸效率。
發(fā)明內(nèi)容
本發(fā)明的目的提出一種基于分布式編碼存儲(chǔ)服務(wù)器的網(wǎng)絡(luò)匯播傳輸方法,將數(shù)據(jù)經(jīng)過隨機(jī)編碼后分布式地存儲(chǔ)在多個(gè)服務(wù)器上,一方面對用戶端提供高效的并行下載服務(wù),以有效地提高下載速度,另一方面通過服務(wù)器上存儲(chǔ)的冗余編碼數(shù)據(jù)降低由于某些網(wǎng)絡(luò)鏈路失效甚至節(jié)點(diǎn)失效導(dǎo)致的數(shù)據(jù)下載失敗概率,提高數(shù)據(jù)傳輸?shù)目煽啃院途W(wǎng)絡(luò)的抗毀能力。
本發(fā)明提出的基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,包括以下步驟(1)在網(wǎng)絡(luò)的多個(gè)服務(wù)器上分別存儲(chǔ)經(jīng)過編碼后的數(shù)據(jù)以及編碼信息;(2)用戶端通過網(wǎng)絡(luò)向上述多個(gè)服務(wù)器發(fā)送傳輸數(shù)據(jù)的請求;(3)上述多個(gè)服務(wù)器接收用戶端的發(fā)送數(shù)據(jù)請求后,分別向用戶端發(fā)送確認(rèn)信息及編碼信息,并將上述經(jīng)過編碼后的數(shù)據(jù)打包后按指定路由發(fā)送給用戶端;(4)用戶端收到上述確認(rèn)信息后,從上述編碼信息中獲取需要接收的數(shù)據(jù)包個(gè)數(shù)N;(5)用戶端從上述多個(gè)服務(wù)器上接收總數(shù)為上述N的數(shù)據(jù)包,并進(jìn)行解碼,若解碼成功,則向服務(wù)器發(fā)送終止請求,若解碼不成功,則繼續(xù)接收數(shù)據(jù),直至解碼成功,并向服務(wù)器發(fā)送終止請求。
上述方法中,對數(shù)據(jù)進(jìn)行編碼的方法包括以下各步驟(1)將待傳輸?shù)臄?shù)據(jù)分成K等份個(gè)原始數(shù)據(jù)塊,并確定隨機(jī)數(shù)生成函數(shù)和隨機(jī)數(shù)生成種子,該隨機(jī)數(shù)生成函數(shù)根據(jù)該隨機(jī)數(shù)生成種子產(chǎn)生一個(gè)隨機(jī)數(shù)序列{ri,i=1,2,...};(2)從上述隨機(jī)數(shù)序列中提取第一個(gè)隨機(jī)數(shù)r1,根據(jù)累積分布函數(shù)CD(x)判斷,若滿足CD(d-1)<r≤CD(d),則以整數(shù)d作為編碼度數(shù);(3)從上述隨機(jī)數(shù)序列中提取第二個(gè)至第d+1個(gè)隨機(jī)數(shù),將該d個(gè)隨機(jī)數(shù)分別與K相乘后取整,得到d個(gè)原始數(shù)據(jù)塊的編號(hào),若上述d個(gè)編號(hào)中存在彼此相同的編號(hào),則繼續(xù)提取后續(xù)的1個(gè)隨機(jī)數(shù)與K相乘后取整,得到新的原始數(shù)據(jù)塊的編號(hào),并將其代替上述相同的編號(hào),重復(fù)該過程,直至得到互不相同的d個(gè)原始數(shù)據(jù)塊的編號(hào);(4)將與上述互不相同的編號(hào)相對應(yīng)的原始數(shù)據(jù)塊進(jìn)行異或,得到一個(gè)編碼數(shù)據(jù)塊,并定義該編碼數(shù)據(jù)塊與d個(gè)原始數(shù)據(jù)塊存在編碼關(guān)系;(5)從上述隨機(jī)數(shù)序列中刪除被提取過的所有隨機(jī)數(shù),重復(fù)步驟(2)~(4),直至編碼完成。
上述方法中,對數(shù)據(jù)進(jìn)行解碼的方法包括以下各步驟(1)根據(jù)從各服務(wù)器接收到的編碼信息,獲得各服務(wù)器使用的隨機(jī)數(shù)生成種子,根據(jù)編碼使用的隨機(jī)數(shù)生成函數(shù)產(chǎn)生一個(gè)與編碼相同的隨機(jī)數(shù)序列{ri,i=1,2,...};(2)從上述隨機(jī)數(shù)序列中提取第一個(gè)隨機(jī)數(shù)r1,根據(jù)累積分布函數(shù)CD(x)判斷,若滿足CD(d-1)<r1≤CD(d),則以整數(shù)d作為編碼度數(shù);(3)從上述隨機(jī)數(shù)序列中提取第二個(gè)至第d+1個(gè)隨機(jī)數(shù),將該d個(gè)隨機(jī)數(shù)分別與K相乘后取整,得到d個(gè)原始數(shù)據(jù)塊的編號(hào);(4)從上述隨機(jī)數(shù)序列中刪除前d+1個(gè)隨機(jī)數(shù),重復(fù)步驟(2)和(3),直至得到所有編碼數(shù)據(jù)塊與所有原始數(shù)據(jù)塊存在的編碼關(guān)系;
(5)根據(jù)上述編碼關(guān)系,尋找編碼度數(shù)為1的編碼數(shù)據(jù)塊,若尋找失敗,則進(jìn)行步驟(8),若尋找到,則得到與該編碼數(shù)據(jù)塊對應(yīng)的原始數(shù)據(jù)塊;(6)將上述原始數(shù)據(jù)塊的值與所有和該原始數(shù)據(jù)塊有編碼關(guān)系的編碼數(shù)據(jù)塊的值依次進(jìn)行異或,將異或后的值依次替換原編碼數(shù)據(jù)塊值,替換后刪除該原始數(shù)據(jù)塊的編碼關(guān)系;(7)重復(fù)上述步驟(5)和(6);(8)若所有原始數(shù)據(jù)塊被恢復(fù),則報(bào)告解碼完成,若未恢復(fù)所有原始數(shù)據(jù)塊,則報(bào)告解碼未完成。
本發(fā)明提出的基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,其優(yōu)點(diǎn)是采用功能強(qiáng)大的服務(wù)器提供下載業(yè)務(wù),保證數(shù)據(jù)服務(wù)的相對穩(wěn)定性;將數(shù)據(jù)進(jìn)行分布式存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)的匯播下載,提高下載速率;對數(shù)據(jù)進(jìn)行隨機(jī)編碼,減小用戶在匯播接收時(shí)收到相同數(shù)據(jù)的概率,節(jié)省網(wǎng)絡(luò)帶寬,并依靠分布式存儲(chǔ)的冗余編碼數(shù)據(jù)提高網(wǎng)絡(luò)的抗毀能力。
圖1是本發(fā)明方法的服務(wù)器工作流程框圖。
圖2是本發(fā)明方法的用戶端工作流程框圖。
圖3是本發(fā)明方法中編碼過程流程圖。
圖4是本發(fā)明方法中解碼過程流程圖。
圖5是使用本發(fā)明方法的網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
圖6是本發(fā)明的一個(gè)應(yīng)用實(shí)例的服務(wù)過程時(shí)序圖。
具體實(shí)施例方式
本發(fā)明提出的基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,首先在網(wǎng)絡(luò)的多個(gè)服務(wù)器上分別存儲(chǔ)經(jīng)過編碼后的數(shù)據(jù)以及編碼信息;用戶端通過網(wǎng)絡(luò)向上述多個(gè)服務(wù)器發(fā)送傳輸數(shù)據(jù)的請求;上述多個(gè)服務(wù)器接收用戶端的發(fā)送數(shù)據(jù)請求后,分別向用戶端發(fā)送確認(rèn)信息及編碼信息,并將上述經(jīng)過編碼后的數(shù)據(jù)打包后按指定路由發(fā)送給用戶端;用戶端收到上述確認(rèn)信息后,從上述編碼信息中獲取需要接收的數(shù)據(jù)包個(gè)數(shù)N;用戶端從上述多個(gè)服務(wù)器上接收總數(shù)為上述N的數(shù)據(jù)包,并進(jìn)行解碼,若解碼成功,則向服務(wù)器發(fā)送終止請求,若解碼不成功,則繼續(xù)接收數(shù)據(jù),直至解碼成功,并向服務(wù)器發(fā)送終止請求。
以下結(jié)合附圖,詳細(xì)介紹本發(fā)明的內(nèi)容本發(fā)明提出的基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,其服務(wù)器工作流程框圖如圖1所示,首先在網(wǎng)絡(luò)的多個(gè)服務(wù)器上分別存儲(chǔ)經(jīng)過編碼后的數(shù)據(jù)以及編碼信息;多個(gè)服務(wù)器在收到用戶端的“發(fā)送數(shù)據(jù)請求Rq”后,分別向用戶端發(fā)送“確認(rèn)信息Rq”及編碼信息,并將上述用戶需要的編碼數(shù)據(jù)打包后按指定路由發(fā)送給各用戶端;多個(gè)服務(wù)器在收到的“終止發(fā)送請求Cp”后,終止上述編碼數(shù)據(jù)的發(fā)送。若直到將所有用戶需要的編碼數(shù)據(jù)都發(fā)送之后仍然沒有收到“終止發(fā)送請求Cq”,也終止上述編碼數(shù)據(jù)的發(fā)送。
上述方法中,用戶端工作流程框圖如圖2所示,用戶端在需要下載數(shù)據(jù)的時(shí)候先向多個(gè)服務(wù)器發(fā)送“發(fā)送數(shù)據(jù)請求Rq”收到上述“確認(rèn)信息Rq”以及編碼信息后,從上述編碼信息中獲取需要接收的數(shù)據(jù)包個(gè)數(shù)N以及各服務(wù)器的編碼數(shù)據(jù)塊與原始數(shù)據(jù)塊的編碼關(guān)系;用戶端從上述多個(gè)服務(wù)器上接收總數(shù)為上述N的編碼數(shù)據(jù)包,并進(jìn)行解碼,若解碼成功,則向服務(wù)器發(fā)送終止請求,若解碼不成功,則繼續(xù)接收數(shù)據(jù),直至解碼成功,并向服務(wù)器發(fā)送終止請求。“發(fā)送數(shù)據(jù)請求Rq”可以在不同時(shí)刻發(fā)送,也可以在同一時(shí)刻由不同的通信端口發(fā)送,數(shù)據(jù)接收過程可以經(jīng)由不同端口同時(shí)并行進(jìn)行。
上述方法中,對數(shù)據(jù)進(jìn)行編碼的方法,其流程框圖如圖3所示,將待傳輸?shù)臄?shù)據(jù)分成K等份個(gè)原始數(shù)據(jù)塊,并確定隨機(jī)數(shù)生成函數(shù)和隨機(jī)數(shù)生成種子,該隨機(jī)數(shù)生成函數(shù)根據(jù)該隨機(jī)數(shù)生成種子產(chǎn)生一個(gè)隨機(jī)數(shù)序列{ri,i=1,2,...};從上述隨機(jī)數(shù)序列中提取第一個(gè)隨機(jī)數(shù)r1,根據(jù)累積分布函數(shù)CD(x)進(jìn)行判斷。比如,累計(jì)分布可以為CD(x)=0,x=0Σy=1xD(y),x=1,2,...,k,]]> 其中R∈Kln(Kδ)
,]]>δ∈(0,0.1]判斷的具體方法為若滿足CD(d-1)<r1≤CD(d),則以整數(shù)d作為編碼度數(shù);從上述隨機(jī)數(shù)序列中提取第二個(gè)至第d+1個(gè)隨機(jī)數(shù),將該d個(gè)隨機(jī)數(shù)分別與K相乘后取整,得到d個(gè)原始數(shù)據(jù)塊的編號(hào),若上述d個(gè)編號(hào)中存在彼此相同的值,則繼續(xù)提取后續(xù)的1個(gè)隨機(jī)數(shù)與K相乘后取整,得到新的原始數(shù)據(jù)塊的編號(hào)代替上述相同的編號(hào),重復(fù)該過程,直到得到互不相同的d個(gè)原始數(shù)據(jù)塊的編號(hào);將與上述編號(hào)相對應(yīng)的原始數(shù)據(jù)塊進(jìn)行異或,得到一個(gè)編碼數(shù)據(jù)塊,并定義編碼數(shù)據(jù)塊與d個(gè)原始數(shù)據(jù)塊存在編碼關(guān)系;從上述隨機(jī)數(shù)序列中刪除被提取過的所有隨機(jī)數(shù),重復(fù)上述過程,直至生成足夠數(shù)量的編碼數(shù)據(jù)包。上述的足夠編碼數(shù)據(jù)包數(shù)量為整數(shù)NS≥NS,]]>可根據(jù)匯播系統(tǒng)的抗毀要求進(jìn)行調(diào)整,范圍為[NS,+∞)。其中S為存儲(chǔ)該編碼數(shù)據(jù)的服務(wù)器個(gè)數(shù),N為不小于 的最小整數(shù)。
上述方法中,對數(shù)據(jù)進(jìn)行解碼的方法,其流程框圖如圖4所示,根據(jù)從各服務(wù)器接收到的編碼信息,獲得各服務(wù)器使用的隨機(jī)數(shù)生成種子,根據(jù)編碼使用的隨機(jī)數(shù)生成函數(shù)產(chǎn)生一個(gè)與編碼相同的隨機(jī)數(shù)序列;從上述隨機(jī)數(shù)序列中提取第一個(gè)隨機(jī)數(shù)r1,根據(jù)累積分布函數(shù)CD(x)判斷,若滿足CD(d-1)<r1≤CD(d),則以整數(shù)d作為編碼度數(shù);從上述隨機(jī)數(shù)序列中提取第二個(gè)至第d+1個(gè)隨機(jī)數(shù),將該d個(gè)隨機(jī)數(shù)分別與K相乘后取整,得到d個(gè)原始數(shù)據(jù)塊的編號(hào);從上述隨機(jī)數(shù)序列中刪除前d+1個(gè)隨機(jī)數(shù),重復(fù)上述編碼關(guān)系恢復(fù)過程,直至得到所有編碼數(shù)據(jù)塊與所有原始數(shù)據(jù)塊存在的編碼關(guān)系;得到編碼關(guān)系后開始解碼,尋找編碼度數(shù)為1的編碼數(shù)據(jù)塊,若尋找失敗,且所有原始數(shù)據(jù)塊被恢復(fù),則報(bào)告解碼完成,若未恢復(fù)所有原始數(shù)據(jù)塊,則報(bào)告解碼未完成;若尋找成功,則得到與該編碼數(shù)據(jù)塊對應(yīng)的原始數(shù)據(jù)塊;將該原始數(shù)據(jù)塊的值與所有和該原始數(shù)據(jù)塊有編碼關(guān)系的編碼數(shù)據(jù)塊的值依次進(jìn)行異或,將異或后的值依次替換原編碼數(shù)據(jù)塊值,替換后刪除該原始數(shù)據(jù)塊的編碼關(guān)系;重復(fù)上述解碼過程。
上述方法中,基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸系統(tǒng)如圖5所示。系統(tǒng)包括服務(wù)器、網(wǎng)絡(luò)和用戶端三部分。網(wǎng)絡(luò)連接多個(gè)服務(wù)器和多個(gè)用戶,在各個(gè)服務(wù)器上面存儲(chǔ)了等待用戶下載的數(shù)據(jù)的編碼,用戶端則通過網(wǎng)絡(luò)向服務(wù)器發(fā)送傳輸數(shù)據(jù)的請求,通過并行接受數(shù)據(jù)減少下載的時(shí)間。服務(wù)器在收到用戶端的發(fā)送請求后應(yīng)答確認(rèn)消息,并將編碼消息和編碼數(shù)據(jù)按指定路由發(fā)送給用戶端。
上述方法的一個(gè)應(yīng)用實(shí)例的服務(wù)過程時(shí)序圖如圖6所示。假設(shè)某系統(tǒng)采用6個(gè)服務(wù)器S1~S6提供對4部電影A、B、C和D的下載服務(wù)。S1~S3上分別存有電影A的3個(gè)不同的編碼版本A1~A3和電影C的3個(gè)不同的編碼版本C1~C3,S3~S6分別存有電影B和D的編碼版本B1~B4和D1~D4。
假設(shè)某用戶端在時(shí)刻t1需要下載電影A,在時(shí)刻t2需要下載電影B,則該用戶端在時(shí)刻t1向服務(wù)器S1~S3發(fā)送“發(fā)送數(shù)據(jù)請求RqA”,服務(wù)器S1~S3收到請求后分別回復(fù)數(shù)據(jù)確認(rèn)信息RpA1~RpA3和各自的編碼信息,并開始發(fā)送數(shù)據(jù)DATAA1~DATAA3。當(dāng)用戶接收的編碼數(shù)據(jù)包足夠其恢復(fù)電影A的時(shí)候則發(fā)送一個(gè)“終止發(fā)送請求Cp”至服務(wù)器S1~S3,服務(wù)器S1~S3便終止發(fā)送。
類似地,在時(shí)刻t2,該用戶端向服務(wù)器S3~S6發(fā)送“發(fā)送數(shù)據(jù)請求RqB”,服務(wù)器S3~S6收到請求后分別回復(fù)數(shù)據(jù)確認(rèn)信息RpB1~RpB4和各自的編碼信息,并開始發(fā)送數(shù)據(jù)DATAB1~DATAB4。若服務(wù)器S5在傳輸在過程中突然失效,DATAB3隨即不再向該用戶端發(fā)送。由于服務(wù)器S3、S4和S6上存儲(chǔ)的編碼數(shù)據(jù)存在冗余,即所存儲(chǔ)的編碼數(shù)據(jù)塊個(gè)數(shù)仍然足夠用戶端用以恢復(fù)電影B,因此雖然服務(wù)器S5不再提供并行下載服務(wù),用戶端無法實(shí)現(xiàn)4端口并行下載,但在通過稍長時(shí)間的3端口并行下載仍然可以保證電影B的正確恢復(fù)。當(dāng)該用戶端收到的編碼數(shù)據(jù)包個(gè)數(shù)足夠解碼出B的時(shí)候,用戶端發(fā)送一個(gè)“終止發(fā)送請求Cp”至服務(wù)器S3、S4和S6,服務(wù)器S3、S4和S6便終止發(fā)送。
權(quán)利要求
1.一種基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,其特征在于該方法包括以下步驟(1)在網(wǎng)絡(luò)的多個(gè)服務(wù)器上分別存儲(chǔ)經(jīng)過編碼后的數(shù)據(jù)以及編碼信息;(2)用戶端通過網(wǎng)絡(luò)向上述多個(gè)服務(wù)器發(fā)送傳輸數(shù)據(jù)的請求;(3)上述多個(gè)服務(wù)器接收用戶端的發(fā)送數(shù)據(jù)請求后,分別向用戶端發(fā)送確認(rèn)信息及編碼信息,并將上述經(jīng)過編碼后的數(shù)據(jù)打包后按指定路由發(fā)送給用戶端;(4)用戶端收到上述確認(rèn)信息后,從上述編碼信息中獲取需要接收的數(shù)據(jù)包個(gè)數(shù)N;(5)用戶端從上述多個(gè)服務(wù)器上接收總數(shù)為上述N的數(shù)據(jù)包,并進(jìn)行解碼,若解碼成功,則向服務(wù)器發(fā)送終止請求,若解碼不成功,則繼續(xù)接收數(shù)據(jù),直至解碼成功,并向服務(wù)器發(fā)送終止請求。
2.如權(quán)利要求1所述的方法,其特征在于其中所述的對數(shù)據(jù)進(jìn)行編碼的方法包括以下各步驟(1)將待傳輸?shù)臄?shù)據(jù)分成K等份個(gè)原始數(shù)據(jù)塊,并確定隨機(jī)數(shù)生成函數(shù)和隨機(jī)數(shù)生成種子,該隨機(jī)數(shù)生成函數(shù)根據(jù)該隨機(jī)數(shù)生成種子產(chǎn)生一個(gè)隨機(jī)數(shù)序列{ri,i=1,2,…};(2)從上述隨機(jī)數(shù)序列中提取第一個(gè)隨機(jī)數(shù)r1,根據(jù)累積分布函數(shù)CD(x)判斷,若滿足CD(d-1)<r≤CD(d),則以整數(shù)d作為編碼度數(shù);(3)從上述隨機(jī)數(shù)序列中提取第二個(gè)至第d+1個(gè)隨機(jī)數(shù),將該d個(gè)隨機(jī)數(shù)分別與K相乘后取整,得到d個(gè)原始數(shù)據(jù)塊的編號(hào),若上述d個(gè)編號(hào)中存在彼此相同的編號(hào),則繼續(xù)提取后續(xù)的1個(gè)隨機(jī)數(shù)與K相乘后取整,得到新的原始數(shù)據(jù)塊的編號(hào),并將其代替上述相同的編號(hào),重復(fù)該過程,直至得到互不相同的d個(gè)原始數(shù)據(jù)塊的編號(hào);(4)將與上述互不相同的編號(hào)相對應(yīng)的原始數(shù)據(jù)塊進(jìn)行異或,得到一個(gè)編碼數(shù)據(jù)塊,并定義該編碼數(shù)據(jù)塊與d個(gè)原始數(shù)據(jù)塊存在編碼關(guān)系;(5)從上述隨機(jī)數(shù)序列中刪除被提取過的所有隨機(jī)數(shù),重復(fù)步驟(2)~(4),直至編碼完成。
3.如權(quán)利要求1所述的方法,其特征在于其中所述的對數(shù)據(jù)進(jìn)行解碼的方法包括以下各步驟(1)根據(jù)從各服務(wù)器接收到的編碼信息,獲得各服務(wù)器使用的隨機(jī)數(shù)生成種子,根據(jù)編碼使用的隨機(jī)數(shù)生成函數(shù)產(chǎn)生一個(gè)與編碼相同的隨機(jī)數(shù)序列{ri,i=1,2,…};(2)從上述隨機(jī)數(shù)序列中提取第一個(gè)隨機(jī)數(shù)r1,根據(jù)累積分布函數(shù)CD(x)判斷,若滿足CD(d-1)<r1≤CD(d),則以整數(shù)d作為編碼度數(shù);(3)從上述隨機(jī)數(shù)序列中提取第二個(gè)至第d+1個(gè)隨機(jī)數(shù),將該d個(gè)隨機(jī)數(shù)分別與K相乘后取整,得到d個(gè)原始數(shù)據(jù)塊的編號(hào);(4)從上述隨機(jī)數(shù)序列中刪除前d+1個(gè)隨機(jī)數(shù),重復(fù)步驟(2)和(3),直至得到所有編碼數(shù)據(jù)塊與所有原始數(shù)據(jù)塊存在的編碼關(guān)系;(5)根據(jù)上述編碼關(guān)系,尋找編碼度數(shù)為1的編碼數(shù)據(jù)塊,若尋找失敗,則進(jìn)行步驟(8),若尋找到,則得到與該編碼數(shù)據(jù)塊對應(yīng)的原始數(shù)據(jù)塊;(6)將上述原始數(shù)據(jù)塊的值與所有和該原始數(shù)據(jù)塊有編碼關(guān)系的編碼數(shù)據(jù)塊的值依次進(jìn)行異或,將異或后的值依次替換原編碼數(shù)據(jù)塊值,替換后刪除該原始數(shù)據(jù)塊的編碼關(guān)系;(7)重復(fù)上述步驟(5)和(6);(8)若所有原始數(shù)據(jù)塊被恢復(fù),則報(bào)告解碼完成,若未恢復(fù)所有原始數(shù)據(jù)塊,則報(bào)告解碼未完成。
全文摘要
本發(fā)明涉及一種基于分布式編碼存儲(chǔ)的網(wǎng)絡(luò)數(shù)據(jù)匯播傳輸方法,屬于網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域。首先在多個(gè)服務(wù)器上存儲(chǔ)經(jīng)過編碼后的數(shù)據(jù)以及編碼信息;用戶端通過網(wǎng)絡(luò)向多個(gè)服務(wù)器發(fā)送請求;服務(wù)器接收用戶端的發(fā)送數(shù)據(jù)請求后,向用戶端發(fā)送確認(rèn)及編碼信息,并將編碼后的數(shù)據(jù)打包后發(fā)送給用戶端;用戶端收到確認(rèn)信息后,從編碼信息中獲取需要接收的數(shù)據(jù)包個(gè)數(shù),并從服務(wù)器上接收數(shù)據(jù)包進(jìn)行解碼。本發(fā)明方法的優(yōu)點(diǎn)是采用功能強(qiáng)大的服務(wù)器提供下載業(yè)務(wù),保證數(shù)據(jù)服務(wù)的相對穩(wěn)定性;將數(shù)據(jù)進(jìn)行分布式存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)的匯播下載,提高下載速率;對數(shù)據(jù)進(jìn)行隨機(jī)編碼,減小用戶在匯播接收時(shí)收到相同數(shù)據(jù)的概率,節(jié)省網(wǎng)絡(luò)帶寬,提高網(wǎng)絡(luò)的抗毀能力。
文檔編號(hào)H04L29/06GK1905467SQ20061008949
公開日2007年1月31日 申請日期2006年6月30日 優(yōu)先權(quán)日2006年6月30日
發(fā)明者張超, 朱宏杰, 陶曉明, 陸建華 申請人:清華大學(xué)