本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域,特別涉及一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)也在不斷完善。
傳統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)傳輸中,客戶端借助與服務(wù)器之間的網(wǎng)絡(luò)連接,從服務(wù)器上下載文件數(shù)據(jù)到本地,在這個(gè)過(guò)程中,由于文件數(shù)據(jù)具有一定的大小,需要一定的下載時(shí)間。
針對(duì)客戶端而言,可能由于網(wǎng)絡(luò)的帶寬限制、丟包率及不可預(yù)期的異常導(dǎo)致文件傳輸比較慢或出現(xiàn)異常,導(dǎo)致客戶端無(wú)法正常或者快速的獲取請(qǐng)求的數(shù)據(jù),尤其是對(duì)于請(qǐng)求的文件數(shù)據(jù)較大或者具有實(shí)時(shí)性,例如流媒體文件時(shí),這種c/s架構(gòu)下的文件數(shù)據(jù)傳輸模式凸顯出很多問(wèn)題。
針對(duì)服務(wù)器而言,能夠承受的并發(fā)數(shù)有限,若每個(gè)客戶端都長(zhǎng)時(shí)間的占用下載并發(fā)數(shù),則容易導(dǎo)致其他請(qǐng)求被拒絕或者需要等待。
由此可見(jiàn),傳統(tǒng)的網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)存在諸多問(wèn)題,越來(lái)越無(wú)法滿足各種業(yè)務(wù)需求,尤其是點(diǎn)播業(yè)務(wù)、直播業(yè)務(wù)等對(duì)文件傳輸時(shí)效性要求較高的業(yè)務(wù),也無(wú)法有效利用各客戶端的資源。
近幾年興起的p2p(對(duì)等網(wǎng)絡(luò))技術(shù),能利用互聯(lián)網(wǎng)中的各個(gè)節(jié)點(diǎn)進(jìn)行對(duì)等計(jì)算,充分利用互聯(lián)網(wǎng)上的空閑資源,允許兩個(gè)客戶端直接交換信息。
目前有很多網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)基于p2p來(lái)實(shí)現(xiàn),主要是采取對(duì)等網(wǎng)絡(luò)中各客戶端節(jié)點(diǎn)基于互相交換的位圖,交換各自擁有的數(shù)據(jù)的形式,但是這要求每個(gè)節(jié)點(diǎn)都需要交換各自的位圖信息,不僅技術(shù)實(shí)現(xiàn)復(fù)雜,且對(duì)傳輸?shù)乃俣群托阅芏加杏绊?,?dǎo)致對(duì)實(shí)現(xiàn)低延時(shí)效果不佳。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明提供了一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸技術(shù)。所述技術(shù)方案如下:
一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法,其特征在于,所述方法包括以下步驟:
對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片,建立至少兩個(gè)傳輸子流,其中所述數(shù)據(jù)切片通過(guò)相應(yīng)的所述傳輸子流進(jìn)行傳輸;請(qǐng)求節(jié)點(diǎn)選取所述傳輸子流,并與其他請(qǐng)求節(jié)點(diǎn)分別建立數(shù)據(jù)共享關(guān)系,其中所述其他請(qǐng)求節(jié)點(diǎn)是選取了與所述請(qǐng)求節(jié)點(diǎn)的所述傳輸子流不同的所述傳輸子流的請(qǐng)求節(jié)點(diǎn);所述請(qǐng)求節(jié)點(diǎn)通過(guò)所述傳輸子流下載相應(yīng)的所述數(shù)據(jù)切片,通過(guò)所述數(shù)據(jù)共享關(guān)系接收所述其他請(qǐng)求節(jié)點(diǎn)通過(guò)自身選取的傳輸子流下載的所述數(shù)據(jù)切片。
進(jìn)一步的,所述對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片包括按照預(yù)設(shè)的處理規(guī)則對(duì)所述請(qǐng)求數(shù)據(jù)進(jìn)行分割。
進(jìn)一步的,所述數(shù)據(jù)切片通過(guò)相應(yīng)的所述傳輸子流進(jìn)行傳輸?shù)姆椒ò喊凑账鰯?shù)據(jù)切片生成的順序,依次分配至各個(gè)所述傳輸子流。
進(jìn)一步的,所述請(qǐng)求節(jié)點(diǎn)選取所述傳輸子流的方法包含,基于當(dāng)前各個(gè)所述傳輸子流已被選取的情況進(jìn)行選取或隨機(jī)選取。
進(jìn)一步的,所述與其他請(qǐng)求節(jié)點(diǎn)建立數(shù)據(jù)共享關(guān)系包含:所述請(qǐng)求節(jié)點(diǎn)向分配服務(wù)器發(fā)送分配請(qǐng)求信息,其中所述分配請(qǐng)求信息包含所述請(qǐng)求節(jié)點(diǎn)的身份信息及選取的所述傳輸子流信息;所述分配服務(wù)器基于所述分配請(qǐng)求信息,選擇并回復(fù)與所述請(qǐng)求節(jié)點(diǎn)鄰近的所述其他請(qǐng)求節(jié)點(diǎn)信息;所述請(qǐng)求節(jié)點(diǎn)根據(jù)所述分配服務(wù)器的回復(fù),與所述其他請(qǐng)求節(jié)點(diǎn)分別建立所述數(shù)據(jù)共享關(guān)系。
進(jìn)一步的,所述數(shù)據(jù)共享關(guān)系中的所述請(qǐng)求節(jié)點(diǎn)和所述其他請(qǐng)求節(jié)點(diǎn)互相推送自身下載的所述數(shù)據(jù)切片,并分別接收對(duì)方推送的所述數(shù)據(jù)切片。
進(jìn)一步的,所述數(shù)據(jù)共享關(guān)系中的所述其他請(qǐng)求節(jié)點(diǎn)推送自身下載的所述數(shù)據(jù)切片給所述請(qǐng)求節(jié)點(diǎn),所述請(qǐng)求節(jié)點(diǎn)接收所述其他請(qǐng)求節(jié)點(diǎn)推送的所述數(shù)據(jù)切片。
進(jìn)一步的,所述請(qǐng)求數(shù)據(jù)包含流媒體文件。
進(jìn)一步的,所述流媒體文件為直播中的源文件。
進(jìn)一步的,所述請(qǐng)求節(jié)點(diǎn)可對(duì)各個(gè)所述共享關(guān)系進(jìn)行保留或解除。
本發(fā)明還提供一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng),包含多個(gè)請(qǐng)求節(jié)點(diǎn)及與各個(gè)所述請(qǐng)求節(jié)點(diǎn)連接的數(shù)據(jù)服務(wù)器,其中所述數(shù)據(jù)服務(wù)器對(duì)所述請(qǐng)求節(jié)點(diǎn)的請(qǐng)求數(shù)據(jù)進(jìn)行切片,建立至少兩個(gè)傳輸子流,其中所述數(shù)據(jù)切片通過(guò)相應(yīng)的所述傳輸子流進(jìn)行傳輸;所述請(qǐng)求節(jié)點(diǎn)選取所述傳輸子流,并與其他請(qǐng)求節(jié)點(diǎn)分別建立數(shù)據(jù)共享關(guān)系,其中所述其他請(qǐng)求節(jié)點(diǎn)包含選取了與所述請(qǐng)求節(jié)點(diǎn)的所述傳輸子流不同的所述傳輸子流的請(qǐng)求節(jié)點(diǎn);所述請(qǐng)求節(jié)點(diǎn)通過(guò)所述傳輸子流下載相應(yīng)的所述數(shù)據(jù)切片,通過(guò)所述共享關(guān)系接收所述其他請(qǐng)求節(jié)點(diǎn)通過(guò)自身選取的傳輸子流下載的所述數(shù)據(jù)切片。
進(jìn)一步的,所述數(shù)據(jù)服務(wù)器對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片包括按照預(yù)設(shè)的處理規(guī)則對(duì)所述請(qǐng)求數(shù)據(jù)進(jìn)行分割。
進(jìn)一步的,所述數(shù)據(jù)服務(wù)器為每個(gè)所述數(shù)據(jù)切片創(chuàng)建編號(hào),并基于所述編號(hào)將所述數(shù)據(jù)切片分配至各個(gè)所述傳輸子流。
進(jìn)一步的,所述請(qǐng)求節(jié)點(diǎn)選取所述傳輸子流的方法包含,基于當(dāng)前各個(gè)所述傳輸子流已被選取的情況進(jìn)行選取或隨機(jī)選取。
進(jìn)一步的,所述系統(tǒng)更包含分配服務(wù)器,所述請(qǐng)求節(jié)點(diǎn)與其他請(qǐng)求節(jié)點(diǎn)建立數(shù)據(jù)共享關(guān)系包含:所述請(qǐng)求節(jié)點(diǎn)向分配服務(wù)器發(fā)送分配請(qǐng)求信息,其中所述分配請(qǐng)求信息包含所述請(qǐng)求節(jié)點(diǎn)的身份信息及選取的所述傳輸子流信息;所述分配服務(wù)器基于所述分配請(qǐng)求信息,選擇并回復(fù)與所述請(qǐng)求節(jié)點(diǎn)鄰近的所述其他請(qǐng)求節(jié)點(diǎn)信息;所述請(qǐng)求節(jié)點(diǎn)根據(jù)所述服務(wù)器的回復(fù),與所述其他請(qǐng)求節(jié)點(diǎn)分別建立所述數(shù)據(jù)共享關(guān)系。
進(jìn)一步的,所述數(shù)據(jù)共享關(guān)系中的所述請(qǐng)求節(jié)點(diǎn)和所述其他請(qǐng)求節(jié)點(diǎn)互相推送自身下載的所述數(shù)據(jù)切片,并分別接收對(duì)方推送的所述數(shù)據(jù)切片。
進(jìn)一步的,所述數(shù)據(jù)共享關(guān)系中的所述其他請(qǐng)求節(jié)點(diǎn)推送自身下載的所述數(shù)據(jù)切片給所述請(qǐng)求節(jié)點(diǎn),所述請(qǐng)求節(jié)點(diǎn)接收所述其他請(qǐng)求節(jié)點(diǎn)推送的所述數(shù)據(jù)切片。
進(jìn)一步的,所述請(qǐng)求數(shù)據(jù)包含流媒體文件。
進(jìn)一步的,所述數(shù)據(jù)服務(wù)器上的所述請(qǐng)求數(shù)據(jù)包含從直播平臺(tái)獲取的流媒體文件。
進(jìn)一步的,所述請(qǐng)求節(jié)點(diǎn)可對(duì)各個(gè)所述共享關(guān)系進(jìn)行保留或解除。
進(jìn)一步的,所述系統(tǒng)包含多個(gè)所述數(shù)據(jù)服務(wù)器。
綜上所述,本發(fā)明提供的技術(shù)方案,通過(guò)先對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片處理,并將各數(shù)據(jù)切片分別分配至相應(yīng)的傳輸子流,使得各數(shù)據(jù)切片分流在各傳輸子流,如此一來(lái),每個(gè)傳輸子流上傳輸?shù)臄?shù)據(jù)僅為請(qǐng)求數(shù)據(jù)的一部分,數(shù)據(jù)量小于請(qǐng)求數(shù)據(jù)本身。
請(qǐng)求節(jié)點(diǎn)選取傳輸子流,通過(guò)該傳輸子流下載相應(yīng)的數(shù)據(jù)切片,并通過(guò)與其他請(qǐng)求節(jié)點(diǎn)之間的數(shù)據(jù)共享關(guān)系,獲取其他請(qǐng)求節(jié)點(diǎn)從其他傳輸子流上下載的相應(yīng)數(shù)據(jù)切片,從而獲得請(qǐng)求數(shù)據(jù),不僅降低了請(qǐng)求節(jié)點(diǎn)從數(shù)據(jù)源下載數(shù)據(jù)切片的壓力,而且充分利用了與其他請(qǐng)求節(jié)點(diǎn)的數(shù)據(jù)共享,有效提升了數(shù)據(jù)傳輸?shù)臅r(shí)效性,實(shí)現(xiàn)低延遲,尤其適合直播業(yè)務(wù)的需求。
更進(jìn)一步的,請(qǐng)求節(jié)點(diǎn)可基于接收到的數(shù)據(jù)切片的時(shí)效性、完整性等分別對(duì)其創(chuàng)建的數(shù)據(jù)共享關(guān)系進(jìn)行解除和保留,從而實(shí)現(xiàn)數(shù)據(jù)共享關(guān)系的演化更新。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1繪示本發(fā)明一較佳實(shí)施例所提供的一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法流程圖;
圖2繪示本發(fā)明一較佳實(shí)施例中數(shù)據(jù)切片的生成及分配過(guò)程示意圖;
圖3繪示圖1所示實(shí)施例中請(qǐng)求節(jié)點(diǎn)與其他節(jié)點(diǎn)建立數(shù)據(jù)共享關(guān)系方法流程圖;
圖4繪示本實(shí)施例中請(qǐng)求節(jié)點(diǎn)與分配服務(wù)器數(shù)據(jù)交互示意圖;
圖5繪示本發(fā)明一較佳實(shí)施例所提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖;
圖6繪示本發(fā)明另一較佳實(shí)施例所提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下通過(guò)特定的具體實(shí)例說(shuō)明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說(shuō)明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過(guò)另外不同的具體實(shí)施方式加以實(shí)施或應(yīng)用,本說(shuō)明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒(méi)有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。需說(shuō)明的是,在不沖突的情況下,以下實(shí)施例及實(shí)施例中的特征可以相互組合。
需要說(shuō)明的是,以下實(shí)施例中所提供的圖示僅以示意方式說(shuō)明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
以下將結(jié)合圖示對(duì)本發(fā)明的實(shí)施例進(jìn)行說(shuō)明。
請(qǐng)參照?qǐng)D1,圖1繪示本發(fā)明一較佳實(shí)施例所提供的一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法流程圖。如圖1所示,本實(shí)施例所提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法包含:
步驟s10,對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片,建立至少兩個(gè)傳輸子流。其中數(shù)據(jù)切片通過(guò)相應(yīng)的傳輸子流進(jìn)行傳輸。
具體而言,請(qǐng)求數(shù)據(jù)包含各種類型的數(shù)據(jù)文件、流媒體文件等。
對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片包括按照預(yù)設(shè)的處理規(guī)則從所述請(qǐng)求數(shù)據(jù)中分割出各個(gè)數(shù)據(jù)切片,其中,預(yù)設(shè)的處理規(guī)則中包含設(shè)定單個(gè)數(shù)據(jù)切片的長(zhǎng)度。
以流媒體文件為例,預(yù)設(shè)的處理規(guī)則包含以預(yù)設(shè)的時(shí)間長(zhǎng)度對(duì)流媒體文件進(jìn)行分割,得到時(shí)間長(zhǎng)度相等的各數(shù)據(jù)切片,使得各個(gè)數(shù)據(jù)切片相對(duì)平均。
在本發(fā)明的其他實(shí)施例中,也可以采用其他的預(yù)設(shè)處理規(guī)則對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片,例如以數(shù)據(jù)大小為切片單位,或針對(duì)流媒體文件,包含基于關(guān)鍵幀來(lái)設(shè)定切片方式等,且獲得的數(shù)據(jù)切片也不一定是單位平均的,本發(fā)明并不以此為限。
傳輸子流用于將各個(gè)數(shù)據(jù)切片進(jìn)行分別傳輸,在本發(fā)明的技術(shù)方案中,各請(qǐng)求節(jié)點(diǎn)基于對(duì)等網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換,故至少包含兩個(gè)傳輸子流。
在數(shù)據(jù)傳輸過(guò)程中,每個(gè)數(shù)據(jù)切片都將經(jīng)過(guò)其分配到的傳輸子流進(jìn)行傳輸。下面將借助圖示對(duì)數(shù)據(jù)切片的生成及分配過(guò)程進(jìn)行詳細(xì)說(shuō)明。
請(qǐng)參照?qǐng)D2,圖2繪示本發(fā)明一較佳實(shí)施例中數(shù)據(jù)切片的生成及分配過(guò)程示意圖。如圖2所示,流媒體文件a,按照一時(shí)間單位進(jìn)行等份分割,并為各數(shù)據(jù)切片設(shè)置編號(hào)f(圖示中的各數(shù)據(jù)切片編號(hào)分別為1、2、3、4、5、6、7、8、9),建立n個(gè)傳輸子流,圖示中n=3,即傳輸子流1、2、3。
本實(shí)施例中,基于數(shù)據(jù)切片編號(hào)f和傳輸子流數(shù)n為各數(shù)據(jù)切片分配相應(yīng)的傳輸子流,具體的,通過(guò)取余的方式來(lái)確定各數(shù)據(jù)切片的傳輸子流,即編號(hào)為f的數(shù)據(jù)切片屬于第f%n個(gè)傳輸子流,那么圖示中數(shù)據(jù)切片1、4、7屬于傳輸子流1,數(shù)據(jù)切片2、5、8屬于傳輸子流2,數(shù)據(jù)切片3、6、9屬于傳輸子流3。
值得注意的是,圖2所示的流媒體文件a可以為點(diǎn)播業(yè)務(wù)中的流媒體文件也可以是直播業(yè)務(wù)中的流媒體文件。
在點(diǎn)播業(yè)務(wù)中,流媒體文件是靜態(tài)的,不會(huì)發(fā)生改變的,故可以先對(duì)流媒體文件進(jìn)行切片及編號(hào),再基于切片數(shù)量確定傳輸子流的數(shù)量,最后將各數(shù)據(jù)切片分配到相應(yīng)的傳輸子流中??梢岳斫獾氖?,傳輸子流的數(shù)量也可以預(yù)先設(shè)定為一個(gè)固定值,如此一來(lái),可以在各數(shù)據(jù)切片生成的同時(shí)確定其傳輸子流,本發(fā)明并不以此為限。
在直播業(yè)務(wù)中,流媒體文件a是動(dòng)態(tài)的,它在本次直播中持續(xù)生成,那么可按照數(shù)據(jù)切片生成的順序,依次分配至各個(gè)傳輸子流的方式對(duì)數(shù)據(jù)切片進(jìn)行分配。具體而言,由于流媒體文件是持續(xù)生成的,那么數(shù)據(jù)切片的分割及傳輸子流的分配都是隨著流媒體文件的生成而進(jìn)行的,也就是說(shuō),在直播中,當(dāng)流媒體文件持續(xù)生成達(dá)到預(yù)設(shè)切片單位長(zhǎng)度時(shí),則將該段數(shù)據(jù)分割出來(lái),生成數(shù)據(jù)切片,并為其分配傳輸子流。如此一來(lái),保證了直播中對(duì)數(shù)據(jù)傳輸時(shí)效性。
值得注意的是,圖2所示實(shí)施例為數(shù)據(jù)切片分配傳輸子流的方式包含為數(shù)據(jù)切片設(shè)置編號(hào),并對(duì)編號(hào)取余來(lái)為其分配傳輸子流,從而使每個(gè)傳輸子流分配到的數(shù)據(jù)切片數(shù)量平均且分散,從而更好的滿足直播業(yè)務(wù)的需求。本發(fā)明的其他實(shí)施例中,可以采用其他的方式來(lái)進(jìn)行分配,只要滿足每個(gè)傳輸子流都能分配到數(shù)據(jù)切片,且各傳輸子流分配不同的數(shù)據(jù)切片即可。
步驟s20,請(qǐng)求節(jié)點(diǎn)選取傳輸子流,并與其他請(qǐng)求節(jié)點(diǎn)分別建立數(shù)據(jù)共享關(guān)系。
其中,請(qǐng)求節(jié)點(diǎn)包含網(wǎng)絡(luò)中向數(shù)據(jù)源發(fā)出數(shù)據(jù)請(qǐng)求的節(jié)點(diǎn),請(qǐng)求節(jié)點(diǎn)選取傳輸子流的方法包含基于當(dāng)前請(qǐng)求數(shù)據(jù)的各個(gè)傳輸子流已被選取的情況進(jìn)行選取,例如選取被選數(shù)最小的傳輸子流,使得選取各個(gè)傳輸子流的請(qǐng)求節(jié)點(diǎn)數(shù)量相對(duì)平衡。
在本發(fā)明的其他實(shí)施例中,可通過(guò)隨機(jī)產(chǎn)生一個(gè)數(shù)值來(lái)選取對(duì)應(yīng)的傳輸子流,以圖2所示的實(shí)施例為例,流媒體文件a包含傳輸子流1、傳輸子流2和傳輸子流3,請(qǐng)求節(jié)點(diǎn)通過(guò)隨機(jī)函數(shù)或其他方式生成隨機(jī)數(shù)2,則表示請(qǐng)求節(jié)點(diǎn)選取了傳輸子流2。
基于網(wǎng)絡(luò)的數(shù)據(jù)傳輸,具有較大的并發(fā)量,尤其是在同時(shí)在線用戶量大的情況下,請(qǐng)求相同數(shù)據(jù)的用戶,即請(qǐng)求節(jié)點(diǎn)基數(shù)大,每個(gè)傳輸子流都會(huì)被一定數(shù)量的用戶選取,那么通過(guò)隨機(jī)生成數(shù)來(lái)確定傳輸子流相較其他方法而言簡(jiǎn)單快速,更能滿足直播業(yè)務(wù)中對(duì)低延遲的需求。
本發(fā)明實(shí)施例中的請(qǐng)求節(jié)點(diǎn)和其他請(qǐng)求節(jié)點(diǎn)所請(qǐng)求的數(shù)據(jù)相同,且可基于網(wǎng)絡(luò)相互建立連接,其中其他請(qǐng)求節(jié)點(diǎn)與該請(qǐng)求節(jié)點(diǎn)選取了的傳輸子流不同。
請(qǐng)參照?qǐng)D3,圖3繪示圖1所示實(shí)施例中請(qǐng)求節(jié)點(diǎn)與其他節(jié)點(diǎn)建立數(shù)據(jù)共享關(guān)系方法流程圖。如3所示,請(qǐng)求節(jié)點(diǎn)與其他請(qǐng)求節(jié)點(diǎn)建立數(shù)據(jù)共享關(guān)系的方法包含:
步驟s201,請(qǐng)求節(jié)點(diǎn)向分配服務(wù)器發(fā)送分配請(qǐng)求信息。
步驟s202,分配服務(wù)器基于分配請(qǐng)求信息,選擇并回復(fù)與請(qǐng)求節(jié)點(diǎn)鄰近的其他請(qǐng)求節(jié)點(diǎn)信息。
步驟s203,請(qǐng)求節(jié)點(diǎn)根據(jù)分配服務(wù)器的回復(fù),與其他請(qǐng)求節(jié)點(diǎn)分別建立數(shù)據(jù)共享關(guān)系。
為了更清楚的對(duì)步驟s201至s203進(jìn)行描述,請(qǐng)一并參照?qǐng)D4,圖4繪示本實(shí)施例中請(qǐng)求節(jié)點(diǎn)與分配服務(wù)器數(shù)據(jù)交互示意圖。
如圖4所示,請(qǐng)求節(jié)點(diǎn)c1與分配服務(wù)器s之間存在連接l1,并基于l1發(fā)送分配請(qǐng)求信息m1,分配請(qǐng)求信息m1中包含請(qǐng)求節(jié)點(diǎn)c1的身份信息id1及其選取的傳輸子流信息。
其中身份信息用于對(duì)請(qǐng)求節(jié)點(diǎn)c1進(jìn)行區(qū)別標(biāo)識(shí),使得其他節(jié)點(diǎn)可通過(guò)該身份信息確定請(qǐng)求節(jié)點(diǎn)c1,其可以是請(qǐng)求節(jié)點(diǎn)c1固有的屬性,例如請(qǐng)求節(jié)點(diǎn)c1的ip地址和端口;也可以通過(guò)其他方式創(chuàng)建的,例如從一個(gè)統(tǒng)一使用的注冊(cè)服務(wù)器上注冊(cè)一個(gè)身份標(biāo)識(shí),本發(fā)明并不以此為限。傳輸子流信息包含請(qǐng)求數(shù)據(jù)信息d及傳輸子流的編號(hào)n1。
分配服務(wù)器s基于連接l1接收分配請(qǐng)求信息m1,解析出m1中的身份信息id1、請(qǐng)求數(shù)據(jù)信息d、傳輸子流編號(hào)n1,通過(guò)查找本地記錄,選取與請(qǐng)求節(jié)點(diǎn)c1鄰近的其他請(qǐng)求節(jié)點(diǎn)c2、c3,并將其他請(qǐng)求節(jié)點(diǎn)信息m2回復(fù)給請(qǐng)求節(jié)點(diǎn)c1,其中其他請(qǐng)求節(jié)點(diǎn)信息m2中包含各個(gè)其他請(qǐng)求節(jié)點(diǎn)的身份信息。其中本地記錄中包含各請(qǐng)求節(jié)點(diǎn)的身份信息、請(qǐng)求數(shù)據(jù)信息和傳輸子流信息,分配服務(wù)器s對(duì)分配請(qǐng)求信息m1進(jìn)行解析后保存至本地記錄。
其中其他請(qǐng)求節(jié)點(diǎn)包含請(qǐng)求數(shù)據(jù)信息為d,且選取的傳輸子流為除n1之外的傳輸子流,例如,請(qǐng)求數(shù)據(jù)d建立的傳輸子流包含n1、n2和n3,請(qǐng)求節(jié)點(diǎn)c1選取的傳輸子流為n1,那么在確定其他請(qǐng)求節(jié)點(diǎn)時(shí),其他請(qǐng)求節(jié)點(diǎn)選取的傳輸子流可為n2或n3。
分配服務(wù)器s在選取鄰近其他請(qǐng)求節(jié)點(diǎn)時(shí),包含基于本地記錄中的請(qǐng)求相同數(shù)據(jù)并選取不同傳輸子流的所有請(qǐng)求節(jié)點(diǎn)信息,選取出物理位置較近請(qǐng)求節(jié)點(diǎn),或選取與請(qǐng)求節(jié)點(diǎn)c1所屬運(yùn)營(yíng)商相同的其他請(qǐng)求節(jié)點(diǎn)。本發(fā)明的實(shí)施例中可根據(jù)具體需求選取鄰近請(qǐng)求節(jié)點(diǎn),其可以包含物理位置、運(yùn)營(yíng)商、網(wǎng)絡(luò)狀況等各種因素,本發(fā)明并不做限制。
請(qǐng)求節(jié)點(diǎn)c1接收分配服務(wù)器s回復(fù)的其他請(qǐng)求節(jié)點(diǎn)信息m2,解析出各個(gè)其他請(qǐng)求節(jié)點(diǎn)c2、c3的身份信息,并分別與其他請(qǐng)求節(jié)點(diǎn)c2、c3建立數(shù)據(jù)共享關(guān)系z(mì)1、z2。
其中,數(shù)據(jù)共享關(guān)系包含雙向的共享關(guān)系,和單向的共享關(guān)系。
在一個(gè)雙向共享關(guān)系中,雙方請(qǐng)求節(jié)點(diǎn)推送自身下載的數(shù)據(jù)切片給對(duì)方,并接收對(duì)方推送的所述數(shù)據(jù)切片。
以圖4所示為例,請(qǐng)求節(jié)點(diǎn)c1和c2之間建立了數(shù)據(jù)共享關(guān)系z(mì)1,若該數(shù)據(jù)共享關(guān)系為雙向共享,那么當(dāng)請(qǐng)求節(jié)點(diǎn)c1通過(guò)選取的傳輸子流n1下載了數(shù)據(jù)切片后,會(huì)將該數(shù)據(jù)切片推送給請(qǐng)求節(jié)點(diǎn)c2,同樣的,c2通過(guò)選取的傳輸子流n2下載到數(shù)據(jù)切片后,也通過(guò)網(wǎng)絡(luò)將該數(shù)據(jù)切片推送給請(qǐng)求節(jié)點(diǎn)c1。
數(shù)據(jù)切片被推送出去之后,請(qǐng)求節(jié)點(diǎn)c1和c2通過(guò)該數(shù)據(jù)共享關(guān)系z(mì)1分別接收對(duì)方推送的數(shù)據(jù)切片。如此一來(lái),請(qǐng)求節(jié)點(diǎn)c1和其他請(qǐng)求節(jié)點(diǎn)c2構(gòu)成了對(duì)等網(wǎng)絡(luò),并基于該對(duì)等網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)共享,使得請(qǐng)求節(jié)點(diǎn)c1可從其他請(qǐng)求節(jié)點(diǎn)c2中獲取來(lái)自其未選取的傳輸子流的數(shù)據(jù)切片,同樣的,c1與c3之間也基于數(shù)據(jù)共享關(guān)系z(mì)2進(jìn)行數(shù)據(jù)切片的共享。
在單向共享關(guān)系中,數(shù)據(jù)共享關(guān)系的創(chuàng)建者請(qǐng)求節(jié)點(diǎn)與其他請(qǐng)求節(jié)點(diǎn)的關(guān)系類似于訂閱的關(guān)系,即請(qǐng)求節(jié)點(diǎn)c1訂閱了請(qǐng)求節(jié)點(diǎn)c2和請(qǐng)求節(jié)點(diǎn)c3。那么被訂閱的節(jié)點(diǎn)c2和c3在通過(guò)自身選取的傳輸子流n2和n3下載到數(shù)據(jù)切片后,主動(dòng)推送給訂閱方請(qǐng)求節(jié)點(diǎn)c1,c1接收來(lái)自c2和c3的推送數(shù)據(jù),但無(wú)需向c2和c3推送數(shù)據(jù)切片。
值得注意的是,無(wú)論是在雙向共享還是單向共享關(guān)系中,創(chuàng)建該數(shù)據(jù)共享關(guān)系的請(qǐng)求節(jié)點(diǎn)可對(duì)該數(shù)據(jù)共享關(guān)系進(jìn)行解除。
如前文所述,網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)牟l(fā)數(shù)較大,請(qǐng)求相同數(shù)據(jù)的請(qǐng)求節(jié)點(diǎn)數(shù)量多,那么選取相同傳輸子流的請(qǐng)求節(jié)點(diǎn)數(shù)量自然也會(huì)比較多,雖然可以通過(guò)設(shè)定篩選條件來(lái)優(yōu)化選擇,但選取相同傳輸子流的請(qǐng)求節(jié)點(diǎn)數(shù)也不一定為1,那么主動(dòng)創(chuàng)建數(shù)據(jù)共享關(guān)系的請(qǐng)求節(jié)點(diǎn)則需要進(jìn)行請(qǐng)求節(jié)點(diǎn)選取,即根據(jù)從選取相同傳輸子流(例如傳輸子流n2)的各個(gè)其他請(qǐng)求節(jié)點(diǎn)接收到的數(shù)據(jù)情況進(jìn)行選取。
具體而言,請(qǐng)求節(jié)點(diǎn)可對(duì)選取同一傳輸子流的其他請(qǐng)求節(jié)點(diǎn)推送的數(shù)據(jù)切片,進(jìn)行時(shí)效性、完整性等方面的比較,保留與數(shù)據(jù)切片質(zhì)量較好的其他請(qǐng)求節(jié)點(diǎn)的數(shù)據(jù)共享關(guān)系,解除較差的數(shù)據(jù)共享關(guān)系,實(shí)現(xiàn)數(shù)據(jù)共享關(guān)系的演化更新。
由此可見(jiàn),經(jīng)過(guò)步驟s10和步驟s20,請(qǐng)求節(jié)點(diǎn)選取了傳輸子流,并與選取其他傳輸子流的其他請(qǐng)求節(jié)點(diǎn)建立了數(shù)據(jù)共享關(guān)系。
步驟s30,請(qǐng)求節(jié)點(diǎn)通過(guò)傳輸子流下載相應(yīng)的數(shù)據(jù)切片,通過(guò)數(shù)據(jù)共享關(guān)系接收其他請(qǐng)求節(jié)點(diǎn)通過(guò)自身選取的傳輸子流下載的數(shù)據(jù)切片。
如此一來(lái),請(qǐng)求節(jié)點(diǎn)可通過(guò)自身的下載和其他請(qǐng)求節(jié)點(diǎn)的數(shù)據(jù)共享,獲取完整的請(qǐng)求數(shù)據(jù)。
值得說(shuō)明的是,本說(shuō)明書中以單個(gè)請(qǐng)求節(jié)點(diǎn)為切入點(diǎn)進(jìn)行描述,其中的請(qǐng)求節(jié)點(diǎn)和其他請(qǐng)求節(jié)點(diǎn)均為網(wǎng)絡(luò)中的請(qǐng)求節(jié)點(diǎn),而這些請(qǐng)求節(jié)點(diǎn)均可借助上述方法進(jìn)行數(shù)據(jù)傳輸。也就是說(shuō),無(wú)論是上述的請(qǐng)求節(jié)點(diǎn),如c1,還是其他請(qǐng)求節(jié)點(diǎn),如c2或c3,均通過(guò)上述方法進(jìn)行數(shù)據(jù)下載及共享。
綜上所述,本發(fā)明提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法,通過(guò)先對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片處理,并將各數(shù)據(jù)切片分別分配至相應(yīng)的傳輸子流,使得各數(shù)據(jù)切片分流在各傳輸子流,如此一來(lái),每個(gè)傳輸子流上傳輸?shù)臄?shù)據(jù)僅為請(qǐng)求數(shù)據(jù)的一部分,數(shù)據(jù)量小于請(qǐng)求數(shù)據(jù)本身。
請(qǐng)求節(jié)點(diǎn)選取傳輸子流,通過(guò)該傳輸子流下載相應(yīng)的數(shù)據(jù)切片,并基于與其他請(qǐng)求節(jié)點(diǎn)之間的數(shù)據(jù)共享關(guān)系,獲取其他請(qǐng)求節(jié)點(diǎn)從其他傳輸子流上下載的相應(yīng)數(shù)據(jù)切片,從而獲得請(qǐng)求數(shù)據(jù),不僅降低了請(qǐng)求節(jié)點(diǎn)從數(shù)據(jù)源下載數(shù)據(jù)切片的壓力,而且充分利用了與其他請(qǐng)求節(jié)點(diǎn)的數(shù)據(jù)共享,有效提升了數(shù)據(jù)傳輸?shù)臅r(shí)效性,實(shí)現(xiàn)低延遲,尤其適合直播業(yè)務(wù)的需求。
更進(jìn)一步的,請(qǐng)求節(jié)點(diǎn)可基于接收到的數(shù)據(jù)切片的時(shí)效性、完整性等分別對(duì)其創(chuàng)建的數(shù)據(jù)共享關(guān)系進(jìn)行解除和保留,從而實(shí)現(xiàn)數(shù)據(jù)共享關(guān)系的演化更新。
此外,基于相同的發(fā)明構(gòu)思,本發(fā)明還提供一種基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng)。
請(qǐng)參照?qǐng)D5,圖5繪示本發(fā)明一較佳實(shí)施例所提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖。如圖5所示,數(shù)據(jù)傳輸系統(tǒng)1包含多個(gè)請(qǐng)求節(jié)點(diǎn)10(圖中僅以10a、10b、10c、10d作為示例)及數(shù)據(jù)服務(wù)器20,其中各個(gè)請(qǐng)求節(jié)點(diǎn)10分別連接于數(shù)據(jù)服務(wù)器20。
具體而言,數(shù)據(jù)服務(wù)器20上存儲(chǔ)有各種文件數(shù)據(jù),供網(wǎng)絡(luò)上的各請(qǐng)求節(jié)點(diǎn)進(jìn)行訪問(wèn)下載。根據(jù)業(yè)務(wù)場(chǎng)景的不同,其中各種文件數(shù)據(jù)包含靜態(tài)文件和動(dòng)態(tài)文件,例如在普通的數(shù)據(jù)訪問(wèn)或點(diǎn)播業(yè)務(wù)中,數(shù)據(jù)服務(wù)器20中存儲(chǔ)的文件主要靜態(tài)文件,而在直播業(yè)務(wù)中,數(shù)據(jù)服務(wù)器20上存儲(chǔ)的文件主要為動(dòng)態(tài)文件。由于直播業(yè)務(wù)較于其他業(yè)務(wù)而言要求更高,本實(shí)施例以直播具體業(yè)務(wù)場(chǎng)景,對(duì)本實(shí)施例進(jìn)行詳細(xì)說(shuō)明。
在直播業(yè)務(wù)中,數(shù)據(jù)服務(wù)器20可以是數(shù)據(jù)源端,例如主播端服務(wù)器或直播的平臺(tái)服務(wù)器,也可以是從主播端服務(wù)器或直播的平臺(tái)服務(wù)器獲取流媒體文件并進(jìn)行處理的中間服務(wù)器。
用戶選擇直播節(jié)目的過(guò)程中,包含請(qǐng)求節(jié)點(diǎn)向數(shù)據(jù)服務(wù)器20請(qǐng)求下載相應(yīng)節(jié)目的流媒體文件的過(guò)程。
數(shù)據(jù)服務(wù)器20對(duì)流媒體文件進(jìn)行切片,并為該些數(shù)據(jù)切片建立至少兩個(gè)傳輸子流,每個(gè)數(shù)據(jù)切片通過(guò)相應(yīng)的其中一個(gè)傳輸子流進(jìn)行傳輸。值得說(shuō)明的是,數(shù)據(jù)服務(wù)器20可主動(dòng)對(duì)流媒體文件進(jìn)行切片處理,即不管是否有用戶向其發(fā)生請(qǐng)求,都會(huì)對(duì)流媒體文件進(jìn)行切片,也可以是基于用戶請(qǐng)求而啟動(dòng)的,及當(dāng)有用戶向其發(fā)送請(qǐng)求時(shí),才會(huì)對(duì)相應(yīng)的流媒體文件進(jìn)行切片處理。由于數(shù)據(jù)服務(wù)器20上可能同時(shí)存有數(shù)量較多的流媒體文件,即并發(fā)播放的直播節(jié)目很多,而有些節(jié)目的觀看量大,有些可能就沒(méi)有人觀看,采取請(qǐng)求啟動(dòng)的方式,相對(duì)節(jié)省更多的數(shù)據(jù)服務(wù)器資源。
數(shù)據(jù)服務(wù)器20對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片包括按照預(yù)設(shè)的處理規(guī)則從所述請(qǐng)求數(shù)據(jù)中分割出各個(gè)數(shù)據(jù)切片,其中,預(yù)設(shè)的處理規(guī)則中包含設(shè)定單個(gè)數(shù)據(jù)切片的長(zhǎng)度。
在本實(shí)施例中,預(yù)設(shè)的處理規(guī)則包含以預(yù)設(shè)的時(shí)間長(zhǎng)度對(duì)流媒體文件進(jìn)行分割,得到時(shí)間長(zhǎng)度相等的各數(shù)據(jù)切片,使得各個(gè)數(shù)據(jù)切片相對(duì)平均。
在本發(fā)明的其他實(shí)施例中,也可以采用其他的預(yù)設(shè)處理規(guī)則對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片,例如以數(shù)據(jù)大小為切片單位,或針對(duì)流媒體文件,包含基于關(guān)鍵幀來(lái)設(shè)定切片方式等,且獲得的數(shù)據(jù)切片也不一定是單位平均的,本發(fā)明并不以此為限。
傳輸子流用于將各個(gè)數(shù)據(jù)切片進(jìn)行分別傳輸,在本發(fā)明的技術(shù)方案中,各請(qǐng)求節(jié)點(diǎn)基于對(duì)等網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換,故至少包含兩個(gè)傳輸子流。
在數(shù)據(jù)傳輸過(guò)程中,每個(gè)數(shù)據(jù)切片都將經(jīng)過(guò)其分配到的傳輸子流進(jìn)行傳輸,具體過(guò)程可再次參照?qǐng)D2及相應(yīng)的文字部分,不再贅述。
請(qǐng)求節(jié)點(diǎn)10(圖5所示的10a,10a、10b、10c、10d)根據(jù)用戶選取的直播節(jié)目,向數(shù)據(jù)服務(wù)器20下載相應(yīng)的流媒體文件。以下將以請(qǐng)求節(jié)點(diǎn)10a作為切入點(diǎn)進(jìn)行說(shuō)明。
請(qǐng)求節(jié)點(diǎn)10a選取傳輸子流,并與其他請(qǐng)求節(jié)點(diǎn)分別建立數(shù)據(jù)共享關(guān)系。
具體而言,請(qǐng)求節(jié)點(diǎn)10a選取傳輸子流的方法包含基于當(dāng)前請(qǐng)求數(shù)據(jù)的各個(gè)傳輸子流已被選取的情況進(jìn)行選取,例如選取被選數(shù)最小的傳輸子流,使得選取各個(gè)傳輸子流的請(qǐng)求節(jié)點(diǎn)數(shù)量相對(duì)平衡。其中當(dāng)前請(qǐng)求情況可從分配服務(wù)器30上獲取,后文將對(duì)分配服務(wù)器30進(jìn)行說(shuō)明。
在本發(fā)明的其他實(shí)施例中,可通過(guò)隨機(jī)產(chǎn)生一個(gè)數(shù)值來(lái)選取對(duì)應(yīng)的傳輸子流,以圖2所示的實(shí)施例為例,流媒體文件a包含傳輸子流1、傳輸子流2和傳輸子流3,請(qǐng)求節(jié)點(diǎn)通過(guò)隨機(jī)函數(shù)或其他方式生成隨機(jī)數(shù)2,則表示請(qǐng)求節(jié)點(diǎn)選取了傳輸子流2。
基于網(wǎng)絡(luò)的數(shù)據(jù)傳輸,具有較大的并發(fā)量,尤其是在同時(shí)在線用戶量大的情況下,請(qǐng)求相同數(shù)據(jù)的用戶,即請(qǐng)求節(jié)點(diǎn)基數(shù)大,每個(gè)傳輸子流都會(huì)被一定數(shù)量的用戶選取,那么通過(guò)隨機(jī)生成數(shù)來(lái)確定傳輸子流相較其他方法而言簡(jiǎn)單快速,更能滿足直播業(yè)務(wù)中對(duì)低延遲的需求。
本發(fā)明實(shí)施例中的請(qǐng)求節(jié)點(diǎn)10a和其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d所請(qǐng)求的數(shù)據(jù)相同,且可基于網(wǎng)絡(luò)相互建立連接,其中其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d與請(qǐng)求節(jié)點(diǎn)10a選取的傳輸子流不同。
如前文所述,本實(shí)施例中的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng)1更包含分配服務(wù)器30。
請(qǐng)求節(jié)點(diǎn)10a在選取傳輸子流之后,向分配服務(wù)器30發(fā)送分配請(qǐng)求信息,分配服務(wù)器30基于分配請(qǐng)求信息,選擇并回復(fù)與請(qǐng)求節(jié)點(diǎn)鄰近的其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d信息。請(qǐng)求節(jié)點(diǎn)10a根據(jù)分配服務(wù)器的回復(fù),與其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d分別建立數(shù)據(jù)共享關(guān)系。
具體而言,分配請(qǐng)求信息中包含請(qǐng)求節(jié)點(diǎn)10a的身份信息及其選取的傳輸子流信息。
身份信息用于對(duì)請(qǐng)求節(jié)點(diǎn)10a進(jìn)行區(qū)別標(biāo)識(shí),使得其他節(jié)點(diǎn)可通過(guò)該身份信息確定請(qǐng)求節(jié)點(diǎn)10a,其可以是請(qǐng)求節(jié)點(diǎn)10a固有的屬性,例如ip地址和端口;也可以通過(guò)其他方式創(chuàng)建的,例如從一個(gè)統(tǒng)一使用的注冊(cè)服務(wù)器上注冊(cè)一個(gè)身份標(biāo)識(shí),本發(fā)明并不以此為限。
傳輸子流信息包含請(qǐng)求數(shù)據(jù)信息及傳輸子流的編號(hào)。
分配服務(wù)器30接收并解析出分配請(qǐng)求信息中的身份信息、請(qǐng)求數(shù)據(jù)信息和傳輸子流編號(hào),通過(guò)查找本地記錄31,選取與請(qǐng)求節(jié)點(diǎn)10a鄰近的其他請(qǐng)求節(jié)點(diǎn),并將其他請(qǐng)求節(jié)點(diǎn)信息回復(fù)給請(qǐng)求節(jié)點(diǎn)10a,其中其他請(qǐng)求節(jié)點(diǎn)信息中包含各個(gè)其他請(qǐng)求節(jié)點(diǎn)的身份信息。其中分配服務(wù)器30的本地記錄31中包含各請(qǐng)求節(jié)點(diǎn)的身份信息、請(qǐng)求數(shù)據(jù)信息和傳輸子流信息,分配服務(wù)器30對(duì)請(qǐng)求節(jié)點(diǎn)10的分配請(qǐng)求信息進(jìn)行解析后保存至本地記錄。
其中,其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d與請(qǐng)求節(jié)點(diǎn)10a所請(qǐng)求的流媒體文件相同,且選取的傳輸子流與請(qǐng)求節(jié)點(diǎn)10a不同,例如,數(shù)據(jù)服務(wù)器20為請(qǐng)求節(jié)點(diǎn)10所請(qǐng)求的流媒體文件建立了3條傳輸子流n1、n2、n3,請(qǐng)求節(jié)點(diǎn)10a選取的傳輸子流為n1,其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d選取的傳輸子流分為n2、n2、n3。
分配服務(wù)器30在選取鄰近其他請(qǐng)求節(jié)點(diǎn)時(shí),基于包含本地記錄中的請(qǐng)求相同數(shù)據(jù)并選取不同傳輸子流的所有請(qǐng)求節(jié)點(diǎn)信息,選取出物理位置較近的請(qǐng)求節(jié)點(diǎn),或選取與請(qǐng)求節(jié)點(diǎn)10a所屬運(yùn)營(yíng)商相同的其他請(qǐng)求節(jié)點(diǎn)。本發(fā)明的實(shí)施例中可根據(jù)具體需求選取鄰近請(qǐng)求節(jié)點(diǎn),其可以包含物理位置、運(yùn)營(yíng)商、網(wǎng)絡(luò)狀況等各種因素,本發(fā)明并不做限制。
請(qǐng)求節(jié)點(diǎn)10a接收分配服務(wù)器30回復(fù)的其他請(qǐng)求節(jié)點(diǎn)信息,解析出各個(gè)其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d的身份信息,并分別與其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d建立數(shù)據(jù)共享關(guān)系。
其中,數(shù)據(jù)共享關(guān)系包含雙向的共享關(guān)系,和單向的共享關(guān)系。
在一個(gè)雙向共享關(guān)系中,雙方請(qǐng)求節(jié)點(diǎn)推送自身下載的數(shù)據(jù)切片給對(duì)方,并接收對(duì)方推送的所述數(shù)據(jù)切片。
在單向共享關(guān)系中,數(shù)據(jù)共享關(guān)系的創(chuàng)建者請(qǐng)求節(jié)點(diǎn)與其他請(qǐng)求節(jié)點(diǎn)的關(guān)系類似于訂閱的關(guān)系,即請(qǐng)求節(jié)點(diǎn)訂閱了其他請(qǐng)求節(jié)點(diǎn)。那么被訂閱的其他請(qǐng)求節(jié)點(diǎn)在通過(guò)自身選取的傳輸子流下載到數(shù)據(jù)切片后,主動(dòng)推送給訂閱方請(qǐng)求節(jié)點(diǎn),訂閱方接收來(lái)自被訂閱方的推送數(shù)據(jù),但無(wú)需向被訂閱方推送數(shù)據(jù)切片。
值得注意的是,無(wú)論是在雙向共享還是單向共享關(guān)系中,創(chuàng)建該數(shù)據(jù)共享關(guān)系的請(qǐng)求節(jié)點(diǎn)可對(duì)該數(shù)據(jù)共享關(guān)系進(jìn)行解除。
如前文所述,網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)牟l(fā)數(shù)較大,請(qǐng)求相同數(shù)據(jù)的請(qǐng)求節(jié)點(diǎn)數(shù)量多,那么選取相同傳輸子流的請(qǐng)求節(jié)點(diǎn)數(shù)量自然也會(huì)比較多,雖然可以通過(guò)設(shè)定篩選條件來(lái)優(yōu)化選擇,但選取相同傳輸子流的請(qǐng)求節(jié)點(diǎn)數(shù)也不一定為1,例如選取傳輸子流的請(qǐng)求節(jié)點(diǎn)包含10b和10c,那么主動(dòng)創(chuàng)建數(shù)據(jù)共享關(guān)系的請(qǐng)求節(jié)點(diǎn)10a則需要進(jìn)行請(qǐng)求節(jié)點(diǎn)選取,即根據(jù)從選取相同傳輸子流(例如傳輸子流n2)的各個(gè)其他請(qǐng)求節(jié)點(diǎn)10b和10c接收到的數(shù)據(jù)情況進(jìn)行選取。
具體而言,請(qǐng)求節(jié)點(diǎn)可對(duì)選取同一傳輸子流的其他請(qǐng)求節(jié)點(diǎn)推送的數(shù)據(jù)切片,進(jìn)行時(shí)效性、完整性等方面的比較,保留與數(shù)據(jù)切片質(zhì)量較好的其他請(qǐng)求節(jié)點(diǎn)的數(shù)據(jù)共享關(guān)系,解除較差的數(shù)據(jù)共享關(guān)系,實(shí)現(xiàn)數(shù)據(jù)共享關(guān)系的演化更新。例如,若從10b收到時(shí),發(fā)現(xiàn)已從10c中收到同樣的數(shù)據(jù)切片,那么可判定10b的數(shù)據(jù)傳輸時(shí)效性較差,則可解除與10b的數(shù)據(jù)共享關(guān)系。
請(qǐng)求節(jié)點(diǎn)10a通過(guò)自身選取的傳輸子流下載相應(yīng)的數(shù)據(jù)切片,并借助數(shù)據(jù)共享關(guān)系從其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d獲取從其他傳輸子流下載的數(shù)據(jù)切片,從而獲得一個(gè)完整的流媒體文件片段進(jìn)行播放。
值得說(shuō)明的是,本實(shí)施例中以請(qǐng)求節(jié)點(diǎn)10a為切入點(diǎn)進(jìn)行描述,其他請(qǐng)求節(jié)點(diǎn)10b、10c和10d均可借助上述方法進(jìn)行數(shù)據(jù)傳輸。
更進(jìn)一步的,在本發(fā)明的其他實(shí)施例中,可包含多個(gè)數(shù)據(jù)服務(wù)器,網(wǎng)絡(luò)中的請(qǐng)求節(jié)點(diǎn)可對(duì)各數(shù)據(jù)服務(wù)器進(jìn)行訪問(wèn)。請(qǐng)參照?qǐng)D6,圖6繪示本發(fā)明另一較佳實(shí)施例所提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖。如圖6所示,數(shù)據(jù)傳輸系統(tǒng)2,包含數(shù)據(jù)服務(wù)器200a、200b和200c,請(qǐng)求節(jié)點(diǎn)100a、10ob、100c和100d可分別訪問(wèn)該些數(shù)據(jù)服務(wù)器和分配服務(wù)器300。本實(shí)施例中的數(shù)據(jù)服務(wù)器、請(qǐng)求節(jié)點(diǎn)和分配服務(wù)器之間的關(guān)系及各自的功能實(shí)現(xiàn)與圖5所示實(shí)施例相同,在此不在贅述。
綜上所述,本發(fā)明提供的基于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)傳輸系統(tǒng),結(jié)構(gòu)簡(jiǎn)單,且流程簡(jiǎn)單,通過(guò)數(shù)據(jù)服務(wù)器先對(duì)請(qǐng)求數(shù)據(jù)進(jìn)行切片處理,并將各數(shù)據(jù)切片分別分配至相應(yīng)的傳輸子流,使得各數(shù)據(jù)切片分流在各傳輸子流,如此一來(lái),每個(gè)傳輸子流上傳輸?shù)臄?shù)據(jù)僅為請(qǐng)求數(shù)據(jù)的一部分,數(shù)據(jù)量小于請(qǐng)求數(shù)據(jù)本身。
請(qǐng)求節(jié)點(diǎn)選取傳輸子流,通過(guò)該傳輸子流下載相應(yīng)的數(shù)據(jù)切片,并基于與其他請(qǐng)求節(jié)點(diǎn)之間的數(shù)據(jù)共享關(guān)系,獲取其他請(qǐng)求節(jié)點(diǎn)從其他傳輸子流上下載的相應(yīng)數(shù)據(jù)切片,從而獲得請(qǐng)求數(shù)據(jù),不僅降低了請(qǐng)求節(jié)點(diǎn)從數(shù)據(jù)源下載數(shù)據(jù)切片的壓力,而且充分利用了與其他請(qǐng)求節(jié)點(diǎn)的數(shù)據(jù)共享,有效提升了數(shù)據(jù)傳輸?shù)臅r(shí)效性,實(shí)現(xiàn)低延遲,尤其適合直播業(yè)務(wù)的需求。
更進(jìn)一步的,請(qǐng)求節(jié)點(diǎn)可基于接收到的數(shù)據(jù)切片的時(shí)效性、完整性等分別對(duì)其創(chuàng)建的數(shù)據(jù)共享關(guān)系進(jìn)行解除和保留,從而實(shí)現(xiàn)數(shù)據(jù)共享關(guān)系的演化更新。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。