專利名稱:一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒ê脱b置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)?br>
方法裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展以及網(wǎng)絡(luò)的普及,越來越多的用戶通過互聯(lián)網(wǎng)獲取資訊, 隨之而來,在線學(xué)習(xí)也越來越普遍。在線學(xué)習(xí)也稱為是E-Learning,在教育領(lǐng)域建立互聯(lián)網(wǎng)平臺,學(xué)生通過PC上網(wǎng),通過網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)的一種全新的學(xué)習(xí)方式。當(dāng)然,這種學(xué)習(xí)方式離不開由多媒體網(wǎng)絡(luò)學(xué)習(xí)資源、網(wǎng)上學(xué)習(xí)社區(qū)及網(wǎng)絡(luò)技術(shù)平臺構(gòu)成的全新的網(wǎng)絡(luò)學(xué)習(xí)環(huán)境。在網(wǎng)絡(luò)學(xué)習(xí)環(huán)境中,匯集了大量數(shù)據(jù)、檔案資料、程序、教學(xué)軟件、興趣討論組、新聞組等學(xué)習(xí)資源,形成了一個高度綜合集成的資源庫。大量的學(xué)習(xí)資源如何共享成為阻礙在線學(xué)習(xí)的發(fā)展,而當(dāng)把P2P技術(shù)引入在線學(xué)習(xí)以后,海量的數(shù)據(jù)便存放在P2P結(jié)點(diǎn)上。這樣如何高效搜索傳輸課程,便成為了一個問題,傳統(tǒng)的課程資源的傳輸有如下形式
1)采用企業(yè)內(nèi)部自主組織課程,自己上傳課程到服務(wù)器,相同系統(tǒng)不同企業(yè)是無法共享課程的,傳輸只發(fā)生在企業(yè)系統(tǒng)內(nèi)部。2)或者是由課程服務(wù)商代為組織管理課程,以租賃的方式提供給各學(xué)習(xí)機(jī)構(gòu),根據(jù)付費(fèi)情況去學(xué)習(xí)服務(wù)商所提供的課程,傳輸發(fā)生在服務(wù)商的系統(tǒng)內(nèi)部。由于上述情況基本采用集中式且服務(wù)器分布較為簡單,所以課程的傳輸就是對總服務(wù)器進(jìn)查詢,得到文件路徑,然后進(jìn)行學(xué)習(xí),不同的系統(tǒng)間的課程資源不能共享、交流。課程傳輸不準(zhǔn)確,不能均衡服務(wù)器集群壓力。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中所存在的諸多的問題,本發(fā)明實(shí)施例提出了一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒ê脱b置。所述技術(shù)方案如下
本發(fā)明實(shí)施例提出了一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,包?獲取網(wǎng)絡(luò)資源的編碼深度;
根據(jù)所述網(wǎng)絡(luò)資源的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度;
根據(jù)所述編碼寬度,逐層對各個樹形結(jié)構(gòu)的層級的節(jié)點(diǎn)進(jìn)行編碼; 按照所述節(jié)點(diǎn)的編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。本發(fā)明實(shí)施例還提出了一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)难b置,包括 編碼深度獲取模塊,用于獲取網(wǎng)絡(luò)資源的編碼深度;
編碼寬度獲取模塊,根據(jù)所述網(wǎng)絡(luò)資源的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度;
編碼模塊,根據(jù)所述編碼寬度,逐層對各個樹形結(jié)構(gòu)的層級的節(jié)點(diǎn)進(jìn)行編碼;
4傳輸模塊,按照所述節(jié)點(diǎn)的編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是按照樹形結(jié)構(gòu)通過對網(wǎng)絡(luò)資源各個編碼深度下的文件夾、文件以及塊進(jìn)行編碼,使得傳輸過程中可以準(zhǔn)確定位到對應(yīng)的具體信息,保證網(wǎng)絡(luò)傳輸?shù)臏?zhǔn)確性,同時實(shí)現(xiàn)斷點(diǎn)續(xù)傳,減少服務(wù)器的壓力。
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例中使用的附圖作一簡單地介紹,顯而易見地,下面所列附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明第一實(shí)施例的流程示意圖。圖2為本發(fā)明第二實(shí)施例的流程示意圖。圖3為本發(fā)明第三實(shí)施例的流程示意圖。圖4為本發(fā)明第三實(shí)施例的示例圖。圖5為本發(fā)明第四實(shí)施例的流程示意圖。圖6為本發(fā)明第四實(shí)施例的示例圖。圖7為本發(fā)明第六實(shí)施例的流程示意圖。圖8為本發(fā)明第六實(shí)施例的示例圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明實(shí)施例的設(shè)計(jì)思路是、獲取網(wǎng)絡(luò)資源的編碼深度;獲取網(wǎng)絡(luò)資源在不同編碼深度下的節(jié)點(diǎn)的個數(shù),得到所述編碼深度下的編碼寬度;根據(jù)所述編碼深度,依據(jù)所述編碼寬度依次對所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)進(jìn)行編碼;按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。本發(fā)明實(shí)施例通過對網(wǎng)絡(luò)資源各個編碼深度下的文件夾、文件以及塊進(jìn)行編碼,使得傳輸過程中可以準(zhǔn)確定位到對應(yīng)的具體信息,保證網(wǎng)絡(luò)傳輸?shù)臏?zhǔn)確性,同時實(shí)現(xiàn)斷點(diǎn)續(xù)傳,減少服務(wù)器的壓力。實(shí)施例1
本發(fā)明第一實(shí)施例提出了一種網(wǎng)絡(luò)資源傳輸方法,其流程如圖1所示,包括 步驟101、獲取網(wǎng)絡(luò)資源的編碼深度;
步驟102、獲取網(wǎng)絡(luò)資源在不同編碼深度下的節(jié)點(diǎn)的個數(shù),得到所述編碼深度下的編碼寬度;
具體的,網(wǎng)絡(luò)資源的結(jié)點(diǎn)包括但不限于文件夾、文件和大塊和小塊。文件夾中包括若干文件;所述若干可以為N個,N為大于等于1的自然數(shù);一個文件內(nèi)部連續(xù)的按一定大小進(jìn)行分割而成的大塊。將一個大塊內(nèi)部連續(xù)的按一定大小進(jìn)行分割而成的小塊。優(yōu)選的所述編碼深度會根據(jù)網(wǎng)絡(luò)資源的結(jié)構(gòu)的變化而變化,深度不定。其變動主要是文件夾部分,當(dāng)網(wǎng)絡(luò)資源嵌套越深時,其編碼深度越深。步驟103、根據(jù)所述編碼深度,依據(jù)所述編碼寬度依次對所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)進(jìn)行編碼;步驟104、按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。具體的傳輸包括但不限于客戶端/服務(wù)器模式(C/S)和點(diǎn)對點(diǎn)傳輸模式(P2P)。如果是C/S模式,具體包括
按文件取,以文件為單元向服務(wù)端發(fā)出請求,服務(wù)端發(fā)送文件給終端。按大塊取,以大塊集合為單元向服務(wù)端發(fā)出請求,服務(wù)端發(fā)送大塊集合給終端。按小塊取,以小塊集合為單元向服務(wù)端發(fā)出請求,服務(wù)端發(fā)送小塊集合給終端。如果是P2P模式,具體包括
1)按文件取,以文件為單元向另一個終端發(fā)出請求,另一個終端發(fā)送文件給終端。2)按大塊取,以大塊集合為單元向另一個終端發(fā)出請求,另一個終端發(fā)送大塊給終端。3)按小塊取,以小塊集合為單元向另一個終端發(fā)出請求,另一個終端發(fā)送小塊給
客戶端。所述網(wǎng)絡(luò)資源包括但不限于文本文件、多媒體文件、應(yīng)用程序和課件文件等。后續(xù)的實(shí)施例將會以課件文件為例進(jìn)行說明。本發(fā)明實(shí)施例通過對網(wǎng)絡(luò)資源各個編碼深度下的文件夾、文件以及塊進(jìn)行編碼, 使得傳輸過程中可以準(zhǔn)確定位到對應(yīng)的具體信息,保證網(wǎng)絡(luò)傳輸?shù)臏?zhǔn)確性,同時實(shí)現(xiàn)斷點(diǎn)續(xù)傳,減少服務(wù)器的壓力。比如當(dāng)終端需要一個課件文件時,就會以課件文件為單位發(fā)送請求,服務(wù)器或其它終端收到請求后,發(fā)送該課件文件,當(dāng)終端校驗(yàn)數(shù)據(jù)時,發(fā)現(xiàn)某一文件,大塊或小塊未收到或數(shù)據(jù)錯誤,就會以文件,大塊或小塊為單位發(fā)出請求,如此重復(fù),直到全部數(shù)據(jù)接收完整為止。優(yōu)選的,可以在傳輸過程中,利用壓縮算法對傳輸?shù)臄?shù)據(jù)進(jìn)行壓縮,以便減少帶
覓ο本領(lǐng)域普通技術(shù)人員可知,在接收到網(wǎng)絡(luò)資源的各個節(jié)點(diǎn)之后,按照網(wǎng)絡(luò)資源的編碼深度,可以重新生成完整的網(wǎng)絡(luò)資源,實(shí)現(xiàn)網(wǎng)絡(luò)資源的傳輸。對于課件文件而言,可以用于在線學(xué)習(xí),能夠方便用戶精準(zhǔn)的定位某一個具體的課件信息。優(yōu)選的,步驟101之前,還包括
接收網(wǎng)絡(luò)資源的協(xié)議頭,根據(jù)所述協(xié)議頭獲取網(wǎng)絡(luò)資源的編碼深度; 在傳輸時前,對網(wǎng)絡(luò)資源添加傳輸協(xié)議頭,可以表明傳輸?shù)木唧w內(nèi)容,也可表明傳輸?shù)膮f(xié)議類型。優(yōu)選的將協(xié)議頭做成一個發(fā)送任務(wù),采用TCP模式進(jìn)行傳輸,保證該協(xié)議頭能夠完整的傳輸?shù)綄Χ?。對端獲取該發(fā)送任務(wù)后,即可了解到即將傳輸?shù)膬?nèi)容以及傳輸?shù)膮f(xié)議類型、以及編碼深度。實(shí)施例2
本發(fā)明第二實(shí)施例提出了一種網(wǎng)絡(luò)傳輸方法,其流程如圖2所示,步驟102具體包括 步驟201、獲取課件文件的編碼深度;
所述編碼深度隨課件文件的結(jié)構(gòu)變化而變化,級數(shù)不定。其變動的主要是文件夾部份, 當(dāng)課件文件夾嵌套越深時,其編碼深度越深。
需要明確的,如果課件文件沒有文件夾,則所述編碼深度不包括文件夾級別,僅為 3級。如果有文件夾,則編碼深度為4級。步驟202、獲取所述課件文件每個編碼深度下的節(jié)點(diǎn)個數(shù)得到編碼寬度,根據(jù)所述編碼寬度對所述課件文件的節(jié)點(diǎn)進(jìn)行編碼;
具體的,獲取課件文件的編碼深度,對課件文件的每個編碼深度進(jìn)行逐層編碼,在課件文件的同一編碼深度下,對節(jié)點(diǎn)從1開始遞增,當(dāng)?shù)竭_(dá)最后一個節(jié)點(diǎn)時,其編碼為編碼寬度;回溯之前的節(jié)點(diǎn),并用0填充形成等長寬度,即完成該編碼深度下對節(jié)點(diǎn)的編碼。所述每個編碼深度下的編碼寬度是指同一編碼深度下文件夾或者文件或大塊或小塊的個數(shù),也就是節(jié)點(diǎn)的個數(shù)。在同一編碼深度下,對全部節(jié)點(diǎn)進(jìn)行排序編號,編號從1 開始,最后一個節(jié)點(diǎn)的編號長度,就是節(jié)點(diǎn)的個數(shù),也就是編碼寬度。為了保證各個階段的寬度一致,不足寬度的用0填充,比如001表示寬度為3,序號為1,由于不足3位,所以在1 前面填充兩個0 ;同時也可以推到出,此編碼寬度下節(jié)點(diǎn)個數(shù)超過100個,最多為998個。比如
1 I 01代表某課件第一個文件夾。1 I 01 I 001 I 02 I 01 I 01 代表一個小塊。其編碼深度為5級,分為文件夾、文件、大塊和小塊。一般文件夾有多級,而文件、 大塊和小塊分別都只有1級。小塊所在位置為01文件夾下的001文件夾中第02個文件的第01個大塊中的第01個小塊。大塊最多有10個,文件最多有10個。第二層文件夾最多有998個,最少有100個。實(shí)施例3
本發(fā)明第三實(shí)施例在實(shí)施例1的基礎(chǔ)上提出了一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,其流程如圖3所示,步驟102具體包括 步驟301、獲取課件文件的編碼深度;
所述編碼深度隨課件文件的結(jié)構(gòu)變化而變化,級數(shù)不定。其變動的主要是文件夾部份, 當(dāng)課件文件夾嵌套越深時,其編碼深度越深。需要明確的,如果課件文件沒有文件夾,則所述編碼深度不包括文件夾級別,僅為 3級。如果有文件夾,則編碼深度為4級。步驟302、根據(jù)所述課件文件的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度;
步驟303、根據(jù)所述編碼寬度,逐層對樹形結(jié)構(gòu)的各個層級的節(jié)點(diǎn)進(jìn)行編碼。具體的,對同一層級從1開始遞增,當(dāng)達(dá)到最后一個編碼時,得到編碼寬度,并回溯其他節(jié)點(diǎn),為了形成等長寬度,不足寬度的部分用0填充。當(dāng)切換到其他層級時,又從1 開始遞增。示例如圖4所示
假設(shè)圖4是課件邏輯樹,現(xiàn)在需要對它進(jìn)行編碼; 1,首先課件根節(jié)點(diǎn)只有一個,所以編碼為1。2,從左到右遍歷根節(jié)點(diǎn)1的子節(jié)點(diǎn),得到1,2···,50個編號,說明根節(jié)點(diǎn)1下有50 個子節(jié)點(diǎn)。需要使用兩位數(shù)字才能表示完整。所以可得此級的編碼寬度為2。3,回溯全部該級節(jié)點(diǎn),不足兩位的用0填充,得到01,02···。50,并在之前加上父節(jié)點(diǎn)編碼1,最終形成完整的編碼101,102··· 150。
4,重復(fù)以上動作,最終完成對整棵樹進(jìn)行編碼。步驟304,按照所述節(jié)點(diǎn)的編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。不論是課件文件,文件夾,文件,大塊,小塊都是樹上的一個節(jié)點(diǎn),樹的建立有利于課件在終端的重新還原。其具體的每級編碼數(shù)字代表的意義,是根據(jù)課件文件掃描時程序設(shè)定的,文件夾及文件節(jié)點(diǎn)的先后次序主要是依據(jù)名稱排列,而大小塊節(jié)點(diǎn)的先后則是依據(jù)它們的相對偏移。相對初始偏移越大,則編號越大。上述編碼邏輯的好處在于對節(jié)點(diǎn)進(jìn)行先序排列,加快檢索速度。實(shí)施例4
本發(fā)明第三實(shí)施例提出了一種網(wǎng)絡(luò)傳輸方法,其流程如圖5所示,包括 步驟501 獲取課件文件的編碼深度,生成樹形結(jié)構(gòu);
所述編碼深度隨課件文件的結(jié)構(gòu)變化而變化,級數(shù)不定。其變動的主要是文件夾部份, 當(dāng)課件文件夾嵌套越深時,其編碼深度越深。需要明確的,如果課件文件沒有文件夾,則所述編碼深度不包括文件夾級別,僅為 3級。如果有文件夾,則編碼深度為4級。步驟502、根據(jù)所述樹形結(jié)構(gòu)最低層節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容,獲取該節(jié)點(diǎn)的哈希值; 一般小塊是最低層節(jié)點(diǎn),根據(jù)小塊的數(shù)據(jù)內(nèi)容獲取其哈希值。步驟503、從低層級到高層級依次遍歷,每層級節(jié)點(diǎn)都對其下級節(jié)點(diǎn)的哈希值匯總,再取哈希值。步驟504、判斷節(jié)點(diǎn)為課件節(jié)點(diǎn)為是時,所述課件節(jié)點(diǎn)的哈希值為所述課件哈希值。每個課件只有1個課件節(jié)點(diǎn),為最頂層的樹形結(jié)構(gòu)的節(jié)點(diǎn)。本實(shí)施例可謂可單獨(dú)實(shí)施,也可以作為第一實(shí)施例的優(yōu)選方案。將各個節(jié)點(diǎn)的哈希值作為各個節(jié)點(diǎn)的編碼,也就是文件夾、文件、大塊、小塊的哈希值作為其編碼。然后為了保證寬度統(tǒng)一,通過填補(bǔ)0的方式進(jìn)行調(diào)整。優(yōu)選的,課件文件的哈希值是根據(jù)各個小塊以及劃分順序得到的,其哈希值一致, 則必然課件內(nèi)容一致。因此,可以通過該哈希值來準(zhǔn)確定位對應(yīng)的課件文件,提高了網(wǎng)絡(luò)定位的準(zhǔn)確性。如圖6所示,例如
1,對節(jié)點(diǎn) 1111 進(jìn)行運(yùn)算得到散列值33BBEC8556E03F85B27D90C18A2C38256B82E1D1 2,對節(jié)點(diǎn) 1112 進(jìn)行運(yùn)算得到散列值33BBEC8556E03F85B27D90C18A2C38256B82E1D2 3,將1111與1112的散列值疊加再進(jìn)行散列運(yùn)算,便得到節(jié)點(diǎn)111的散列值 4,以此類推,父級散列基于子級的散列。最終得到根節(jié)點(diǎn)散列,也就是課件的散列,該散列與整個課件結(jié)構(gòu)相對應(yīng),只要課件任一部分發(fā)生變動,都會影響散列值。所以散列值唯一代表著課件。5,當(dāng)終端接收到1112的數(shù)據(jù)時,也會對相同的散列算法計(jì)算出散列,如果計(jì)算值與課件信息不一致則重傳1112。6,當(dāng)終端接收到111的數(shù)據(jù)后,校驗(yàn)得出數(shù)據(jù)錯誤,則分別檢驗(yàn)1111和1112,從而定位到最小的分支,而不用重傳整個111提高了效率。7,為了減少碰撞機(jī)率,采用了 shal算法進(jìn)行散列運(yùn)算(相對于md5散列算法,較短)。由于掃描規(guī)則是固定的,除了小塊節(jié)點(diǎn)是對內(nèi)容進(jìn)行散列外,其它節(jié)點(diǎn)都是依據(jù)子節(jié)點(diǎn)的散列值疊加再求散列,方向上都是從樹上從左到右將子進(jìn)行疊加,所以對同一課件求多次散列值都是一樣的。可以保證傳輸?shù)耐暾?。?yōu)選的,在實(shí)施例1-4實(shí)施之前,還可以判斷課件文件是本地課程還是云課程。具體的獲得課件文件的編碼深度同時,還可以獲取課件文件的存儲參數(shù),所述參數(shù)標(biāo)明該課件文件是在云中心還是在本地課程。所謂的云課程是指由供應(yīng)商發(fā)布課件到新為課件云中心,可以訂閱到本地,并利用終端進(jìn)行學(xué)習(xí)的課件。它是云存儲一種方式,課件被加密放置在各個終端和服務(wù)器上,當(dāng)終端學(xué)習(xí)需要數(shù)據(jù)時,通過云中心可以定位到具體的服務(wù)器,再由服務(wù)器協(xié)調(diào)進(jìn)行p2p傳輸或者中轉(zhuǎn)傳輸。如果課件文件是在本地,由終端和系統(tǒng)進(jìn)行協(xié)商,確定課件文件所在服務(wù)器進(jìn)行傳輸。如果課件文件在云中心,則通過云中心先定位到具體的學(xué)習(xí)系統(tǒng),然后定位到課件文件所在的服務(wù)器。所述云中心在課件文件上傳審核通過后進(jìn)行歸類操作,有利于檢索和定位。所述歸類包括但不限于按照供應(yīng)商名稱、課件名、點(diǎn)擊率、最新最熱和推薦課件進(jìn)行歸類,以便于檢索。所述服務(wù)器可以為P2P服務(wù)器,也可以為普通的存儲服務(wù)器。實(shí)施例5
本發(fā)明第五實(shí)施例提出了一種網(wǎng)絡(luò)傳輸方法,具體應(yīng)用的P2P傳輸時,所述步驟104, 還包括
步驟105、按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,P2P服務(wù)器根據(jù)其他P2P終端的所持有節(jié)點(diǎn)的情況,按照優(yōu)先級因子,對網(wǎng)絡(luò)資源進(jìn)行傳輸。所述優(yōu)先級因子的判斷緯度有
1,終端的帶寬權(quán)重如果帶寬權(quán)重越大則優(yōu)先級越大;
2,終端的服務(wù)數(shù)權(quán)重如果服務(wù)數(shù)越多的話,優(yōu)先級會下降,主要為了降低負(fù)荷; 3,終端的在線時間權(quán)重在線時間越長,代表它下段時間在線機(jī)率越大,所以優(yōu)級越
大;
4,終端的NAT類型如果NAT是完全端口,或無NAT,即可穿透型的,優(yōu)先級越大,否則優(yōu)先級較低或?yàn)?,即不能提供服務(wù);
5,播放優(yōu)先級如果是用戶當(dāng)前要播放的內(nèi)容,則該節(jié)點(diǎn)傳輸?shù)膬?yōu)先級最大,優(yōu)選服務(wù)器中轉(zhuǎn)為方式進(jìn)行傳輸。因?yàn)镻2P傳輸不穩(wěn)定,通過服務(wù)器將其放入優(yōu)先級最高的隊(duì)列,同時終端接收完成后,按照最高優(yōu)先級處理寫入。在實(shí)際的運(yùn)算中,根據(jù)不同的權(quán)重進(jìn)行疊加之后產(chǎn)生的優(yōu)先級因子,就可以對可能為候選數(shù)據(jù)源做優(yōu)先排序形成資源隊(duì)列,最優(yōu)質(zhì)的節(jié)點(diǎn)排在最前面。隨著時間及網(wǎng)絡(luò)環(huán)境的變化。此隊(duì)列可能會發(fā)生變動。終端根據(jù)此隊(duì)列。做相應(yīng)的調(diào)整。以便可以最快的取到需要數(shù)據(jù)。
優(yōu)選的,步驟104還包括
按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,依據(jù)網(wǎng)絡(luò)傳輸流量進(jìn)行調(diào)整,對網(wǎng)絡(luò)資源進(jìn)行傳輸。當(dāng)終端的下行速度慢時,服務(wù)器也要感知并相應(yīng)調(diào)整發(fā)送速度,確保服務(wù)器不會造成擁塞,服務(wù)器具有服務(wù)數(shù)量上限,根據(jù)并發(fā)數(shù)發(fā)攤流量,保證終端的公平性。具體包括
服務(wù)器發(fā)送一定數(shù)量的數(shù)據(jù)包后會包含一個回執(zhí)包請求,如果終端已經(jīng)接收完畢就可以發(fā)送回執(zhí),服務(wù)器收到回執(zhí)確認(rèn)以后,才會繼續(xù)發(fā)包,同時根據(jù)上次的交互時間,及數(shù)據(jù)大小,估算出客戶端的當(dāng)前下行速度,在下一次的發(fā)送中,調(diào)整包大小及數(shù)量。當(dāng)服務(wù)數(shù)量未達(dá)到或是剛達(dá)到限時,平均服務(wù)流量=流量\服務(wù)數(shù)量流量; 假如終端的實(shí)際接收能力 >=平均服務(wù)流量,按平均服務(wù)流量發(fā)送數(shù)據(jù);
假如終端的實(shí)際接收能力〈平均服務(wù)流量,按實(shí)際接收能力發(fā)送數(shù)據(jù); 終端設(shè)置了流量范圍的情況下
如果設(shè)置值 <=實(shí)際接收能力,即終端放慢了接收速度,此時服務(wù)器認(rèn)為終端的接收能力為設(shè)置值,服務(wù)端按上述處理。如果設(shè)置值〉實(shí)際接收能力,終端不處理,此時服務(wù)器認(rèn)為終端的接收能力為實(shí)際接收能力,服務(wù)端按上述處理。這樣可以起到調(diào)整發(fā)送速度的功能。優(yōu)選的,步驟104還可以包括
按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,按照節(jié)點(diǎn)級別進(jìn)行合并,然后進(jìn)行傳輸; 由于SCORM和AICC文件可能包含大量的小文件,數(shù)量多的時候會引起頻繁的請求,就要求從文件級別進(jìn)行壓縮,減少交互次數(shù),加快工作效率。按照一定的大小值對文件進(jìn)行級別劃分,對于符合級別的文件進(jìn)行統(tǒng)一壓縮處理。文件級別是相對于塊級別而言,文件級別的壓縮即指對幾個文件進(jìn)行壓縮,塊級別壓縮是指對幾個塊進(jìn)行壓縮,小文件是指大小小于人為劃定的經(jīng)驗(yàn)值的文件,比如100K, 由于SCORM課件的特點(diǎn)是這類文件數(shù)量多,但是都很小,如果每個文件都按標(biāo)準(zhǔn)流程傳輸, 會導(dǎo)致比較大的資源浪費(fèi)??梢詫⑿∥募喜嚎s,一次上下文切換就可以傳輸完畢,省時省力。對于劃分是否為小文件的劃定值,可以在服務(wù)器端任意設(shè)置,通過實(shí)踐可以得到較合適的經(jīng)驗(yàn)值。優(yōu)選的,在傳輸過程中,根據(jù)網(wǎng)絡(luò)資源節(jié)點(diǎn)所在位置的不同,動態(tài)切換網(wǎng)絡(luò)。例如
1.客戶端A請求課件E,
2.服務(wù)端收到請求以后,發(fā)現(xiàn)客戶端B持有A課件的一部分,于是通知客戶端A。3.此時客戶端A的課件E來源包含服務(wù)器和客戶端B
4.客戶端A與服務(wù)器端是C/S模式,則采用了 TCP直接進(jìn)行數(shù)據(jù)傳輸。5.客戶端A與客戶端B是P2P模式,則先由探測模塊,探測出A和B所處NAT類型,再使用UDP進(jìn)行打洞,打洞成功以后,采用UDP進(jìn)行數(shù)據(jù)傳輸,如果打洞不成功,又切換回與服務(wù)器進(jìn)行TCP傳輸。實(shí)施例6
本發(fā)明第六實(shí)施例提出了一種網(wǎng)絡(luò)傳輸方法,在實(shí)施例1的基礎(chǔ)上,如圖7所示,包
10括
步驟601、獲取網(wǎng)絡(luò)資源的編碼深度;
步驟602、獲取所述網(wǎng)絡(luò)資源的不同編碼深度下的節(jié)點(diǎn)的個數(shù),得到所述編碼深度下的編碼寬度;
具體的,網(wǎng)絡(luò)資源的結(jié)點(diǎn)包括但不限于文件夾、文件和大塊和小塊。文件夾中包括若干文件;一個文件內(nèi)部連續(xù)的按一定大小進(jìn)行分割而成的大塊。將一個大塊內(nèi)部連續(xù)的按一定大小進(jìn)行分割而成的小塊。優(yōu)選的所述編碼深度會根據(jù)網(wǎng)絡(luò)資源的結(jié)構(gòu)的變化而變化,深度不定。其變動主要是文件夾部分,當(dāng)網(wǎng)絡(luò)資源嵌套越深時,其編碼深度越深。步驟603、根據(jù)所述編碼深度,依據(jù)所述編碼寬度形成樹形結(jié)構(gòu),依次對網(wǎng)絡(luò)資源的節(jié)點(diǎn)進(jìn)行編碼;
步驟604、從樹形結(jié)構(gòu)最低層級的節(jié)點(diǎn)開始進(jìn)行傳輸;
步驟605、判斷是否所有節(jié)點(diǎn)已經(jīng)傳輸完成,如果沒有,則通過最小樹算法,獲取未傳輸完成的節(jié)點(diǎn),再次形成樹形結(jié)構(gòu),執(zhí)行步驟604;如果判斷已經(jīng)完成所有節(jié)點(diǎn)的傳輸,則流程結(jié)束。一個課件文件請求和傳輸過程往往是多次才完成的,當(dāng)一次請求完成以后,通過最小樹算法,可以計(jì)算出下一輪要請求的節(jié)點(diǎn)集合。這個集合要求是一棵精減的未傳輸?shù)墓?jié)點(diǎn)的集合,它仍然是一棵樹形。最小樹算法依賴于節(jié)點(diǎn)編碼(節(jié)點(diǎn)編碼是變長的編碼),通過對編碼的排序,可以有效的避免遞歸,從而提高計(jì)算速度。例如如圖8所示
1,開始下載,此時由于整棵樹是空的,由于根節(jié)點(diǎn)的編碼是“1”,所以只需請求節(jié)點(diǎn) “1”,即可以代表請求一個課件。2,下載中,當(dāng)編碼為1112節(jié)點(diǎn)被下載時,它的祖先節(jié)點(diǎn)的狀態(tài)都會設(shè)置為下載中狀態(tài)。這一輪的請求中,需要請求的節(jié)點(diǎn)包含1111,112,12三個即可。3,下載中,當(dāng)節(jié)點(diǎn)1111下載完成后,由于兄弟節(jié)點(diǎn)1112也已經(jīng)完成下載,這時應(yīng)設(shè)置它們的父親111的狀態(tài)為下載完成。在新一輪的請求節(jié)點(diǎn)中,包含的節(jié)點(diǎn)有112,12。4。重復(fù)上述動作,直到邏輯樹的節(jié)點(diǎn)全部下載完畢。采用這種算法,都能保證每一次請求的節(jié)點(diǎn)數(shù)量最少,且能覆蓋所有未下載節(jié)點(diǎn)。本發(fā)明實(shí)施例所述單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,也可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分。而前述的存儲介質(zhì)包括u盤、移動硬盤、只讀存儲器(ROM,Read-only Memory)、隨機(jī)存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,其特征在于,包?獲取網(wǎng)絡(luò)資源的編碼深度;根據(jù)所述網(wǎng)絡(luò)資源的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度;根據(jù)所述編碼寬度,逐層對樹形結(jié)構(gòu)的各個層級的節(jié)點(diǎn)進(jìn)行編碼; 按照所述節(jié)點(diǎn)的編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。
2.根據(jù)權(quán)利要求1所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,其特征在于,所述?jié)點(diǎn)具體包括但不限于文件夾、文件、大塊和小塊;所述文件夾包含N個文件,N為大于等于1的自然數(shù); 一個文件內(nèi)部連續(xù)的按一定大小進(jìn)行分割而成的大塊; 將一個大塊內(nèi)部連續(xù)的按一定大小進(jìn)行分割而成的小塊。
3.根據(jù)權(quán)利要求1所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒ǎ涮卣髟谟?,所述根?jù)所述網(wǎng)絡(luò)資源的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度的步驟具體包括對同一層級從1開始遞增,當(dāng)達(dá)到最后一個編碼時,得到編碼寬度,并回溯其他節(jié)點(diǎn), 為了形成等長寬度,不足寬度的部分用0填充;當(dāng)切換到其他層級時,又從1開始遞增,直到完成對整棵樹進(jìn)行編碼。
4.根據(jù)權(quán)利要求1所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,其特征在?獲取所述網(wǎng)絡(luò)資源的編碼深度,生成樹形結(jié)構(gòu);根據(jù)所述樹形結(jié)構(gòu)最低層節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容,獲取該節(jié)點(diǎn)的哈希值;從低層級到高層級依次遍歷,每層級節(jié)點(diǎn)都對其下級節(jié)點(diǎn)的哈希值匯總,再取哈希值;判斷節(jié)點(diǎn)為課件節(jié)點(diǎn)為是時,所述課件節(jié)點(diǎn)的哈希值為所述課件哈希值。
5.根據(jù)權(quán)利要求1所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒ǎ涮卣髟谟?,所述對所述網(wǎng)絡(luò)資源進(jìn)行傳輸,還包括按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,P2P服務(wù)器根據(jù)其他P2P終端的所持有節(jié)點(diǎn)的情況,按照優(yōu)先級因子,對網(wǎng)絡(luò)資源進(jìn)行傳輸。
6.根據(jù)權(quán)利要求5所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,其特征在于,所述?yōu)先級因子包括但不限于終端的帶寬權(quán)重如果帶寬權(quán)重越大則優(yōu)先級越大;終端的服務(wù)數(shù)權(quán)重如果服務(wù)數(shù)越多的話,優(yōu)先級會下降,主要為了降低負(fù)荷; 終端的在線時間權(quán)重在線時間越長,代表它下段時間在線機(jī)率越大,所以優(yōu)級越大; 終端的NAT類型如果NAT是完全端口,或無NAT,即可穿透型的,優(yōu)先級越大,否則優(yōu)先級較低或?yàn)?,即不能提供服務(wù);播放優(yōu)先級如果是用戶當(dāng)前要播放的內(nèi)容,則該節(jié)點(diǎn)傳輸?shù)膬?yōu)先級最大,優(yōu)選服務(wù)器中轉(zhuǎn)為方式進(jìn)行傳輸。
7.根據(jù)權(quán)利要求1-6任一所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒?,其特征在于,所述對所述網(wǎng)絡(luò)資源進(jìn)行傳輸,還包括按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,依據(jù)網(wǎng)絡(luò)傳輸流量進(jìn)行調(diào)整,對網(wǎng)絡(luò)資源進(jìn)行傳輸;或按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,按照節(jié)點(diǎn)級別進(jìn)行合并,然后進(jìn)行傳輸。
8.—種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)难b置,其特征在于,包括編碼深度獲取模塊,用于獲取網(wǎng)絡(luò)資源的編碼深度;編碼寬度獲取模塊,根據(jù)所述網(wǎng)絡(luò)資源的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度;編碼模塊,根據(jù)所述編碼寬度,逐層對各個樹形結(jié)構(gòu)的層級的節(jié)點(diǎn)進(jìn)行編碼;傳輸模塊,按照所述節(jié)點(diǎn)的編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。
9.根據(jù)權(quán)利要求8所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)难b置,其特征在于,還包括優(yōu)先級確認(rèn)模塊,按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,P2P服務(wù)器根據(jù)其他P2P終端的所持有節(jié)點(diǎn)的情況,按照優(yōu)先級因子,對網(wǎng)絡(luò)資源進(jìn)行傳輸。
10.根據(jù)權(quán)利要求9所述的通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)难b置,其特征在于,還包括傳輸優(yōu)化模塊,用于按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,依據(jù)網(wǎng)絡(luò)傳輸流量進(jìn)行調(diào)整,對網(wǎng)絡(luò)資源進(jìn)行傳輸;或按照所述網(wǎng)絡(luò)資源的節(jié)點(diǎn)編碼,按照節(jié)點(diǎn)級別進(jìn)行合并,然后進(jìn)行傳輸。
全文摘要
本發(fā)明提出了一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)姆椒ê脱b置,屬于計(jì)算機(jī)技術(shù)領(lǐng)域。所述方法包括獲取網(wǎng)絡(luò)資源的編碼深度;根據(jù)所述網(wǎng)絡(luò)資源的編碼深度,形成樹形結(jié)構(gòu),得到所述樹形結(jié)構(gòu)的每個層級的編碼寬度;根據(jù)所述編碼寬度,逐層對各個樹形結(jié)構(gòu)的層級的節(jié)點(diǎn)進(jìn)行編碼;按照所述節(jié)點(diǎn)的編碼,對所述網(wǎng)絡(luò)資源進(jìn)行傳輸。還提出了一種通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源進(jìn)行傳輸?shù)难b置。本發(fā)明實(shí)例通過樹形結(jié)構(gòu)對網(wǎng)絡(luò)資源各個編碼深度下的文件夾、文件以及塊進(jìn)行編碼,使得傳輸過程中可以準(zhǔn)確定位到對應(yīng)的具體信息,保證網(wǎng)絡(luò)傳輸?shù)臏?zhǔn)確性,同時實(shí)現(xiàn)斷點(diǎn)續(xù)傳,減少服務(wù)器的壓力。
文檔編號H04L1/00GK102546108SQ20111044858
公開日2012年7月4日 申請日期2011年12月28日 優(yōu)先權(quán)日2011年12月28日
發(fā)明者汪崢嶸, 袁紅兵, 黃圣護(hù) 申請人:深圳市新為軟件有限公司