亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

下載文件的方法和裝置制造方法

文檔序號:7982546閱讀:162來源:國知局
下載文件的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種下載文件的方法和裝置,屬于互聯(lián)網(wǎng)領(lǐng)域。所述方法包括:當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;根據(jù)所述下載得到的至少兩個分片得到所述文件。本發(fā)明通過將下載請求切分成多個分片請求,實現(xiàn)對多個分片請求的并行下載,從而大大提高文件的下載效率。
【專利說明】下載文件的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,特別涉及一種下載文件的方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的發(fā)展,出現(xiàn)了 HDFS (Hadoop Distributed File System,開源的分布式文件系統(tǒng))。HDFS將需要存儲的文件切成64M大小的塊。一方面,為了增強(qiáng)數(shù)據(jù)的安全性,降低數(shù)據(jù)丟失的風(fēng)險,文件的每個塊可能會保存多個副本,每個副本對應(yīng)的數(shù)據(jù)都完全相同,每個副本保存在不同的DataNode (數(shù)據(jù)節(jié)點)上面;另一方面,HDFS將文件的屬性信息存儲到NameNode上,其中屬性信息包括:文件大小,文件被分成的塊數(shù),每塊所有副本位置等。
[0003]基于上述HDFS的存儲方式,HDFS客戶端在讀取文件內(nèi)容的時候,首先從NameNode獲取文件的塊列表,以及每個塊的所有副本位置信息,針對某個塊,客戶端計算和該塊所有副本的距離,然后按照距離進(jìn)行排序。首先選擇距離最近的副本進(jìn)行下載,如果下載失敗則按照排列的順序選擇下一個副本進(jìn)行下載。從而得到文件的所有塊。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)HDFS這種文件順序下載方式的問題是:由于物理距離作用不大,網(wǎng)絡(luò)距離又因為網(wǎng)絡(luò)狀況的不斷變化而變化,所以無法準(zhǔn)確計算客戶端和副本之間的距離,且如果某個DataNode被許多客戶端優(yōu)先選擇,但是DataNode —次只能響應(yīng)一個客戶端的下載,其他客戶端只能等待下載,這就降低了下載效率。

【發(fā)明內(nèi)容】

[0005]為了提高文件的下載效率,本發(fā)明實施例提供了一種下載文件的方法和裝置。所述技術(shù)方案如下:
[0006]一方面,提供了一種下載文件的方法,所述方法包括:
[0007]當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;
[0008]當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;
[0009]將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;
[0010]根據(jù)所述下載得到的至少兩個分片獲得所述文件。
[0011]所述將所述下載請求切分成至少兩個分片的下載請求,包括:
[0012]根據(jù)所述文件的屬性信息獲得所述文件的檢驗值;
[0013]根據(jù)所述校驗值將所述下載請求分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。
[0014]所述將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片,包括:[0015]將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片;
[0016]接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載,獲得所述至少兩個分片。
[0017]所述方法還包括:
[0018]如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。
[0019]所述接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,還包括:
[0020]如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載失敗的信息。
[0021]另一方面,提供了一種下載文件的裝置,所述裝置包括:
[0022]屬性獲取模塊,用于當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;
[0023]切分模塊,用于當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;
[0024]下載模塊,用于將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;
[0025]文件獲取模塊,用于根據(jù)所述下載得到的至少兩個分片獲得所述文件。
[0026]所述切分模塊,包括:
[0027]獲取單元,用于根據(jù)所述文件的屬性信息獲得所述文件的檢驗值;
[0028]切分單元,用于根據(jù)所述校驗值將所述下載請求切分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。
[0029]所述下載模塊,包括:
[0030]發(fā)送單元,用于將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片;
[0031]接收單元,用于接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載,獲得所述至少兩個分片。
[0032]所述接收單元還用于:
[0033]如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。
[0034]所述下載模塊還包括:
[0035]記錄單元,用于在所述接收單元接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載失敗的信息。
[0036]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;根據(jù)所述下載得到的至少兩個分片得到所述文件。通過將下載請求切分成多個分片請求,實現(xiàn)對多個分片請求的并行下載,從而大大提高文件的下載效率。
【專利附圖】

【附圖說明】
[0037]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0038]圖1是本發(fā)明實施例一提供的一種下載文件的方法流程圖;
[0039]圖2是本發(fā)明實施例二提供的一種下載文件的方法流程圖;
[0040]圖3是本發(fā)明實施例三提供的一種下載文件的裝置結(jié)構(gòu)示意圖;
[0041]圖4是本發(fā)明實施例三提供的另一種下載文件的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0042]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。
[0043]實施例一
[0044]參見圖1,本實施例中提供了一種下載文件的方法,所述方法包括:
[0045]101、當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;
[0046]102、當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;
[0047]103、將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;
[0048]104、根據(jù)所述下載得到的至少兩個分片獲得所述文件。
[0049]優(yōu)選地,所述將所述下載請求切分成至少兩個分片的下載請求,包括:
[0050]根據(jù)所述文件的屬性信息獲得所述文件的檢驗值;
[0051]根據(jù)所述校驗值將所述下載請求切分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。
[0052]優(yōu)選地,所述將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片,包括:
[0053]將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片;
[0054]接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載,獲得所述至少兩個分片。[0055]進(jìn)一步地,所述方法還包括:
[0056]如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。
[0057]可選地,所述接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,還包括:
[0058]如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載失敗的信息。
[0059]本實施例的有益效果包括:當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息;根據(jù)所述文件的屬性信息將所述下載請求分成至少兩個分片的下載請求;將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;根據(jù)所述下載得到的至少兩個分片得到所述文件。通過將下載請求切分成多個分片請求,實現(xiàn)對多個分片請求的并行下載,從而大大提高文件的下載效率。
[0060]實施例二
[0061]本發(fā)明實施例提供了一種下載文件的方法,參見圖2,方法流程包括:
[0062]201、當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息。
[0063]本實施例中,HDFS客戶端在下載文件時,首先從服務(wù)器端獲取文件的屬性信息,其中屬性信息包括但不限于:文件長度,文件被分成的塊數(shù),每塊所有副本位置和文件的校驗值信息等,此處有現(xiàn)有技術(shù)類似,本實施例不再贅述。
[0064]202、根據(jù)文件的屬性信息獲知所述文件的長度信息,當(dāng)所述文件的長度超過預(yù)設(shè)值時,將下載請求切分成至少兩個分片的下載請求。
[0065]本實施例中,當(dāng)文件的長度超過預(yù)設(shè)值時,將文件的下載請求進(jìn)行切分,得到多個分片的下載請求,從而將對每個文件塊的下載轉(zhuǎn)換成對更小的分片的下載。其中預(yù)設(shè)值是指服務(wù)器端需要校驗文件的長度的最小粒度。具體的,將所述下載請求切分成至少兩個分片的下載請求,包括:根據(jù)所述文件的屬性信息獲得所述文件的檢驗值;根據(jù)所述校驗值將所述下載請求切分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。其中,由于文件長度的原因,最后一個分片的長度可能小于預(yù)設(shè)值,除最后一個分片外,其它分片的長度均等于預(yù)設(shè)值。本實施例中,如果文件的長度小于預(yù)設(shè)值則不需要對該下載請求進(jìn)行切分,直接下載即可。
[0066]本實施例中,分片的切分方法和數(shù)據(jù)在服務(wù)器端的保存方式有關(guān)。例如,在服務(wù)器端,每128k的數(shù)據(jù)會計算一個hash值,用來校驗數(shù)據(jù)的正確性,此時預(yù)設(shè)值為128k??蛻舳艘哺鶕?jù)服務(wù)器端校驗數(shù)據(jù)的方式來切片,盡量把分片請求對齊到128k的倍數(shù)位置,這樣可以降低服務(wù)器校驗數(shù)據(jù)的開銷。如果請求下載的文件長度小于128k,則不需要對該分片進(jìn)行切分,直接下載即可。如果請求下載的文件大于128k,則對該下載請求進(jìn)行切分,得到的分片個數(shù)大于2,每個分片的長度等于128k,第一個分片的結(jié)束位置是128k的整數(shù)倍,這樣可以保證后續(xù)分片的起始位置都是128k的整數(shù)倍。例如,一個文件塊有A,B和C三個副本,分別存放在不同的A, B, C三個數(shù)據(jù)節(jié)點上,當(dāng)接收到對該文件塊的下載請求R的時候,首先把請求R切分成η個分片si, s2, s3,.....sn,獲得更小的下載單元。
[0067]203、將至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片。[0068]本實施例中,將切分得到的多個分片請求分別發(fā)送到多個數(shù)據(jù)節(jié)點中,其中每個數(shù)據(jù)節(jié)點只接收一部分分片下載請求。數(shù)據(jù)節(jié)點接收到分片下載請求后將相應(yīng)的分片返回
給客戶端。
[0069]本實施例中,可以將分片下載請求一次性的發(fā)送到多個保存其對應(yīng)副本的數(shù)據(jù)節(jié)點上,也可以先發(fā)送一部分的分片請求到相應(yīng)的數(shù)據(jù)節(jié)點上,等到下載成功后再發(fā)送其它的分片請求,實際操作中使用哪種方法本實施例不做具體限定。
[0070]204、接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載。
[0071]本實施例中,優(yōu)選地,根據(jù)每個塊包含的副本的位置信息,先發(fā)送一部分分片請求到相應(yīng)的數(shù)據(jù)節(jié)點中,當(dāng)接收到數(shù)據(jù)節(jié)點返回的相應(yīng)的分片時,在將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點中繼續(xù)下載。例如,把si發(fā)送到A, s2發(fā)送到B, s3發(fā)送到C,當(dāng)Si下載成功后,再將s4發(fā)送到A,當(dāng)s2下載成功后,再將s5發(fā)送到B……,重復(fù)此下載過程,直到將所有的分片下載完成。
[0072]由于機(jī)群中所有的數(shù)據(jù)節(jié)點的負(fù)載可能不均衡,就會導(dǎo)致數(shù)據(jù)節(jié)點處理請求的快慢不同。本步驟中,沒有把所有的分片請求同時發(fā)到相應(yīng)的數(shù)據(jù)節(jié)點,而是先把一部分分片請求發(fā)送出去,當(dāng)收到數(shù)據(jù)節(jié)點的一個分片請求的響應(yīng)的時候,再發(fā)送下一個分片到該數(shù)據(jù)節(jié)點上面。這樣比較空閑的數(shù)據(jù)節(jié)點就會多處理下載請求,而比較繁忙的數(shù)據(jù)節(jié)點就會少處理下載請求,從而使機(jī)群整體的流量更加均衡。由于機(jī)群整體流量比較均衡,不會使下載請求集中到某個數(shù)據(jù)節(jié)點上,也就可以提高機(jī)群的吞吐能力。
[0073]本實施例中,如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。具體的,如果某個分片下載失敗,數(shù)據(jù)節(jié)點返回下載失敗信息,則當(dāng)客戶端接收到的信息為下載失敗信息時,查找每個塊的副本位置,找到其它保存有該分片對應(yīng)的文件塊的數(shù)據(jù)節(jié)點,將該分片的下載請求該數(shù)據(jù)節(jié)點上繼續(xù)下載。
[0074]本實施例中,可選地,接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,還包括:如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載失敗的信息。當(dāng)接收到下載失敗的信息后,可以根據(jù)記錄的數(shù)據(jù)節(jié)點下載成功或是下載失敗的信息,將下載失敗的文件分片發(fā)送到記錄的下載成功且保存有該分片對應(yīng)的副本的數(shù)據(jù)節(jié)點上。例如,Si在A上下載成功,s2在B上下載失敗,s3在C上下載成功,則記錄A和C下載成功的信息,將s2發(fā)送到其它數(shù)據(jù)節(jié)點上進(jìn)行下載,并記錄C下載失敗的信息點,當(dāng)其它分片下載失敗后,盡量不選擇將分片下載請求發(fā)送到B上,而將分片下載請求發(fā)送到記錄下載成功的數(shù)據(jù)節(jié)點上,從而進(jìn)一步提高下載的效率。
[0075]其中,步驟203-205為實現(xiàn)將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片的具體過程。
[0076]205、根據(jù)所述下載得到的至少兩個分片獲得所述文件。
[0077]本實施例中,當(dāng)所有分片都下載完成的時候,依次把這η個分片數(shù)據(jù)拼接在一起組合成請求R需要的文件。具體的拼接組合過程與現(xiàn)有技術(shù)類似,對此本實施例不再贅述。
[0078]本實施例的有益效果包括:當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;根據(jù)所述下載得到的至少兩個分片得到所述文件。通過將下載請求切分成多個分片請求,實現(xiàn)對多個分片請求的并行下載,從而大大提高文件的下載效率。同時空閑的數(shù)據(jù)節(jié)點會多處理下載請求,繁忙的數(shù)據(jù)節(jié)點會少處理下載請求,從而自動均衡網(wǎng)絡(luò)下載流量,而不至于讓某些數(shù)據(jù)節(jié)點成為系統(tǒng)的熱點,使整個機(jī)群的負(fù)載比較均衡,提高機(jī)群的吞吐能力。
[0079]實施例三
[0080]參見圖3,本發(fā)明實施例提供了一種下載文件的裝置,該裝置包括:屬性獲取模塊301,切分模塊302,下載模塊303和文件獲取模塊304。
[0081]屬性獲取模塊301,用于當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;
[0082]切分模塊302,用于當(dāng)所述文件的長度超過預(yù)設(shè)值時,將將所述下載請求切分成至少兩個分片的下載請求;
[0083]下載模塊303,用于將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;
[0084]文件獲取模塊304,用于根據(jù)所述下載得到的至少兩個分片獲得所述文件。
[0085]優(yōu)選地,參見圖4,所述切分模塊302,包括:
[0086]獲取單元302a,用于根據(jù)所述文件的屬性信息獲得所述文件的檢驗值;
[0087]切分單元302b,用于根據(jù)所述校驗值將所述下載請求切分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。
[0088]優(yōu)選地,參見圖4,所述下載模塊303,包括:
[0089]發(fā)送單元303a,用于將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片;
[0090]接收單元303b,用于接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載,獲得所述至少兩個分片。
[0091]其中,所述接收單元303b還用于:
[0092]如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。
[0093]可選地,參見圖4,所述下載模塊303還包括:
[0094]記錄單元303c,用于在所述接收單元303b接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載失敗的信息。
[0095]本實施例的有益效果包括:當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息;當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片;根據(jù)所述下載得到的至少兩個分片得到所述文件。通過將下載請求切分成多個分片請求,實現(xiàn)對多個分片請求的并行下載,從而大大提高文件的下載效率。
[0096]需要說明的是:上述實施例提供的下載文件的裝置中,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。
[0097]另外,上述實施例提供的下載文件的裝置與下載文件的方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
[0098]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0099]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0100]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種下載文件的方法,其特征在于,所述方法包括: 當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息; 當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求;將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片; 根據(jù)所述下載得到的至少兩個分片獲得所述文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述下載請求切分成至少兩個分片的下載請求,包括: 根據(jù)所述文件的屬性信息獲得所述文件的檢驗值; 根據(jù)所述校驗值將所述下載請求切分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片,包括: 將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片;接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載,獲得所述至少兩個分片。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,還包括: 如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載失敗的信息。
6.一種下載文件的裝置,其特征在于,所述裝置包括: 屬性獲取模塊,用于當(dāng)接收到文件的下載請求時,獲取所述文件的屬性信息,并根據(jù)所述文件的屬性信息獲知所述文件的長度信息; 切分模塊,用于當(dāng)所述文件的長度超過預(yù)設(shè)值時,將所述下載請求切分成至少兩個分片的下載請求; 下載模塊,用于將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片,獲得所述至少兩個分片; 文件獲取模塊,用于根據(jù)所述下載得到的至少兩個分片獲得所述文件。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述切分模塊,包括: 獲取單元,用于根據(jù)所述文件的屬性信息獲得所述文件的檢驗值; 切分單元,用于根據(jù)所述校驗值將所述下載請求切分成至少兩個分片的下載請求,其中,所述切分得到的所有分片中至少有一個分片的長度與所述預(yù)設(shè)值相等。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述下載模塊,包括: 發(fā)送單元,用于將所述至少兩個分片的下載請求發(fā)送到至少兩個數(shù)據(jù)節(jié)點中請求下載對應(yīng)的分片; 接收單元,用于接收所述每個數(shù)據(jù)節(jié)點返回的信息,如果所述信息為下載分片,則存儲所述下載分片,并將其它未處理的分片下載請求發(fā)送到該數(shù)據(jù)節(jié)點上請求下載,獲得所述至少兩個分片。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述接收單元還用于: 如果所述信息為下載失敗信息,則將所述下載失敗的分片下載請求發(fā)送到除發(fā)送所述下載失敗信息的數(shù)據(jù)節(jié)點以外的其它數(shù)據(jù)節(jié)點上進(jìn)行下載,獲得所述其它數(shù)據(jù)節(jié)點下載后的分片。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述下載模塊還包括: 記錄單元,用于在所述接收單元接收所述每個數(shù)據(jù)節(jié)點返回的信息之后,如果所述信息為下載分片,則記錄所述當(dāng)前數(shù)據(jù)節(jié)點下載成功的信息,如果所述信息為下載失敗信息,則記錄所述當(dāng)前數(shù)據(jù)節(jié) 點下載失敗的信息。
【文檔編號】H04L1/00GK103634361SQ201210309977
【公開日】2014年3月12日 申請日期:2012年8月28日 優(yōu)先權(quán)日:2012年8月28日
【發(fā)明者】伍海君, 李銳, 鄒永強(qiáng), 董乘宇, 闕太富, 王磊, 楊紹鵬, 張書鑫, 趙大勇, 劉暢, 陳曉東, 張銀鋒 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1