文件接收方法和裝置及文件傳輸系統(tǒng)的制作方法
【專利摘要】本發(fā)明屬于網(wǎng)絡(luò)文件傳輸技術(shù)領(lǐng)域,尤其涉及一種文件接收方法和裝置及文件傳輸系統(tǒng)。本發(fā)明提出文件接收方法,包括以下步驟:當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;對(duì)接收的該傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;將該數(shù)據(jù)塊加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;并在檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊轉(zhuǎn)移到片文件中。本發(fā)明提出的文件接收方法采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù)。
【專利說明】
文件接收方法和裝置及文件傳輸系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于網(wǎng)絡(luò)文件傳輸技術(shù)領(lǐng)域,尤其涉及一種文件接收方法和裝置及文件傳輸系統(tǒng)。
【背景技術(shù)】
[0002]目前,針對(duì)高峰期有幾千個(gè)客戶端同時(shí)下載至少一個(gè)大文件的網(wǎng)絡(luò)文件傳輸應(yīng)用,通常采用FTP服務(wù)器作為數(shù)據(jù)存儲(chǔ)平臺(tái)。
[0003]FTP服務(wù)器模式中,一個(gè)文件下載進(jìn)程對(duì)應(yīng)一個(gè)文件傳輸進(jìn)程,而每個(gè)文件傳輸進(jìn)程支持至少一個(gè)線程并發(fā)傳輸。這種文件傳輸方式,導(dǎo)致在單節(jié)點(diǎn)宕機(jī)時(shí),該節(jié)點(diǎn)已經(jīng)接收到的文件片段會(huì)丟失;而其他節(jié)點(diǎn)接收到的文件片段不能組裝成完整的文件而必須放棄,而這個(gè)文件傳輸任務(wù)因?yàn)槲募煌暾 ?br>
【發(fā)明內(nèi)容】
[0004]鑒于此,本發(fā)明提出一種文件接收方法和裝置及文件傳輸系統(tǒng),采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,可實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù);從而實(shí)現(xiàn)數(shù)據(jù)傳輸業(yè)務(wù)的高可靠性和持續(xù)性。
[0005]第一方面,本發(fā)明提出文件接收方法,包括以下步驟:
[0006]當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;該至少一個(gè)傳輸數(shù)據(jù)塊與至少一個(gè)該文件傳輸任務(wù)相對(duì)應(yīng);每個(gè)該文件傳輸任務(wù)與一個(gè)待傳輸文件相對(duì)應(yīng);
[0007]對(duì)接收的該傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;該元信息包括用于對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;該數(shù)據(jù)塊是預(yù)先將該待傳輸文件切分后得到的;
[0008]將根據(jù)該元信息校驗(yàn)通過的該數(shù)據(jù)塊根據(jù)該文件指示信息加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;每個(gè)該數(shù)據(jù)塊鏈表與一個(gè)該文件傳輸任務(wù)相對(duì)應(yīng);該數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的;
[0009]對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;每個(gè)該數(shù)據(jù)塊組是駐留在一片內(nèi)存片中的;
[0010]并在檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;該片文件是保存在文件系統(tǒng)中的。
[0011]進(jìn)一步地,本發(fā)明提出的文件接收方法的片文件包括與該文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示該片文件在該待傳輸文件中位置的位置指示信息;對(duì)應(yīng)地,本發(fā)明提出的文件接收方法還包括以下步驟:
[0012]當(dāng)檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的該待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與該待傳輸文件對(duì)應(yīng)的該文件傳輸任務(wù)完成;
[0013]將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;
[0014]根據(jù)該位置指示信息將該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件組裝得到目標(biāo)文件。
[0015]進(jìn)一步地,本發(fā)明提出的文件接收方法的該將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中的步驟之后,還包括:
[0016]從該分布式內(nèi)存集群中的內(nèi)存中釋放為該數(shù)據(jù)塊鏈表開辟的內(nèi)存空間;
[0017]從該文件系統(tǒng)中刪除該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件;
[0018]及和/或?qū)⒃撐募鬏斎蝿?wù)從文件傳輸任務(wù)列表中清除;每個(gè)文件傳輸任務(wù)是在創(chuàng)建時(shí)加入到該文件傳輸任務(wù)列表中的。
[0019]進(jìn)一步地,本發(fā)明提出的文件接收方法的元信息還包括數(shù)據(jù)塊的序列索引值;對(duì)應(yīng)地,該對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組的步驟包括:
[0020]在該數(shù)據(jù)塊鏈表內(nèi),將該數(shù)據(jù)塊按照該序列索引值進(jìn)行排序;并將具有連續(xù)的該序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組。
[0021]進(jìn)一步地,本發(fā)明提出的文件接收方法的目標(biāo)文件保存在分布式磁盤文件系統(tǒng)或者共享文件系統(tǒng)中。
[0022]本發(fā)明提出的文件接收方法將并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù)。
[0023]第二方面,本發(fā)明提出的文件接收裝置,包括數(shù)據(jù)接收單元、一級(jí)緩存單元和二級(jí)緩存單元;
[0024]該數(shù)據(jù)接收單元用于當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;該至少一個(gè)傳輸數(shù)據(jù)塊與至少一個(gè)該文件傳輸任務(wù)對(duì)應(yīng);每個(gè)該文件傳輸任務(wù)與一個(gè)待傳輸文件相對(duì)應(yīng);
[0025]該一級(jí)緩存單元用于對(duì)接收的該傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;該元信息包括用于對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;該數(shù)據(jù)塊是預(yù)先將該待傳輸文件切分后得到的;
[0026]及將根據(jù)該元信息校驗(yàn)通過的該數(shù)據(jù)塊根據(jù)該文件指示信息加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;每個(gè)該數(shù)據(jù)塊鏈表與一個(gè)該文件傳輸任務(wù)相對(duì)應(yīng);該數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的;
[0027]及對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;每個(gè)該數(shù)據(jù)塊組是駐留在一片內(nèi)存片中的;
[0028]該二級(jí)緩存單元用于在檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;該片文件是保存在文件系統(tǒng)中的。
[0029]進(jìn)一步地,本發(fā)明提出的文件接收裝置的片文件包括與該文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示該片文件在該待傳輸文件中位置的位置指示信息;
[0030]對(duì)應(yīng)地,該二級(jí)緩存單元還用于:
[0031]當(dāng)檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的該待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與該待傳輸文件對(duì)應(yīng)的該文件傳輸任務(wù)完成;
[0032]將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;
[0033]根據(jù)該位置指示信息將該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件組裝得到目標(biāo)文件。
[0034]進(jìn)一步地,本發(fā)明提出的文件接收裝置,在該將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中的步驟之后,
[0035]該一級(jí)緩存單元還用于從該分布式內(nèi)存集群中的內(nèi)存中釋放為該數(shù)據(jù)塊鏈表開辟的內(nèi)存空間;
[0036]及和/或?qū)⒃撐募鬏斎蝿?wù)從文件傳輸任務(wù)列表中清除;每個(gè)文件傳輸任務(wù)是在創(chuàng)建時(shí)加入到該文件傳輸任務(wù)列表中的;
[0037]該二級(jí)緩存單元還用于從該文件系統(tǒng)中刪除該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件。
[0038]進(jìn)一步地,本發(fā)明提出的文件接收裝置的該元信息還包括數(shù)據(jù)塊的序列索引值;
[0039]對(duì)應(yīng)地,該一級(jí)緩存單元用于對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組的步驟包括:
[0040]在該數(shù)據(jù)塊鏈表內(nèi),將該數(shù)據(jù)塊按照該序列索引值進(jìn)行排序;并將具有連續(xù)的該序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組。
[0041]本發(fā)明提出的文件接收裝置將并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù)。
[0042]第三方面,本發(fā)明提出的文件傳輸系統(tǒng),包括在上述第二方面中說明的文件接收裝置和文件發(fā)送裝置;該文件接收裝置和該文件發(fā)送裝置通過網(wǎng)絡(luò)連接;
[0043]該文件發(fā)送裝置用于在接收到文件發(fā)送請(qǐng)求時(shí),將該文件發(fā)送請(qǐng)求指定的待傳輸文件切分成至少一個(gè)數(shù)據(jù)塊;
[0044]及將每個(gè)該數(shù)據(jù)塊和每個(gè)該數(shù)據(jù)塊的元信息打包成一個(gè)傳輸數(shù)據(jù)塊;每個(gè)該數(shù)據(jù)塊的元信息包括用于對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;
[0045]及將至少一個(gè)該傳輸數(shù)據(jù)塊并發(fā)地通過網(wǎng)絡(luò)向該文件接收裝置發(fā)送。
[0046]本發(fā)明提出的文件傳輸系統(tǒng)實(shí)現(xiàn)并行發(fā)送、并行接收,且并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù),保證了文件傳輸快速、高效和安全。
[0047]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本申請(qǐng)。
【附圖說明】
[0048]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實(shí)施例,并與說明書一起用于解釋本發(fā)明的原理。
[0049]圖1是本發(fā)明實(shí)施例文件接收方法的流程示意圖;
[0050]圖2是本發(fā)明實(shí)施例文件接收方法進(jìn)行片文件組裝的流程示意圖;
[0051 ]圖3是本發(fā)明實(shí)施例文件接收方法釋放存儲(chǔ)空間的流程示意圖;
[0052]圖4是本發(fā)明實(shí)施例文件接收裝置的組成示意圖;
[0053]圖5是本發(fā)明實(shí)施例文件傳輸系統(tǒng)的組成示意圖。
【具體實(shí)施方式】
[0054]為使實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合實(shí)施例中的附圖,對(duì)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例。
[0055]基于下述的實(shí)施例,本領(lǐng)域普通技術(shù)人員在未做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0056]本申請(qǐng)的文件接收方法和裝置部署在多節(jié)點(diǎn)設(shè)備組成的分布式存儲(chǔ)系統(tǒng)中,該分布式存儲(chǔ)系統(tǒng)被配置為接收端,用于并發(fā)接收發(fā)送端經(jīng)網(wǎng)絡(luò)傳輸?shù)亩鄠€(gè)文件。該發(fā)送端可以是一個(gè)對(duì)等的多節(jié)點(diǎn)設(shè)備組成的分布式存儲(chǔ)系統(tǒng),也可以是一個(gè)單節(jié)點(diǎn)設(shè)備。除了能夠?qū)⒋齻鬏斘募M(jìn)行切分、打包和封裝后,以傳輸數(shù)據(jù)塊的形式并發(fā)發(fā)出該多個(gè)傳輸數(shù)據(jù)塊之外,本申請(qǐng)并不對(duì)發(fā)送端進(jìn)行額外的限制。該接收端的分布式存儲(chǔ)系統(tǒng)具有兩級(jí)緩存機(jī)制。其中,一級(jí)緩存單元采用分布式內(nèi)存集群存儲(chǔ)方式;二級(jí)緩存單元采用分布式磁盤文件系統(tǒng)或者共享文件系統(tǒng)的存儲(chǔ)方式;當(dāng)一級(jí)緩存單元中數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)先設(shè)定的閾值時(shí),將數(shù)據(jù)塊組內(nèi)的數(shù)據(jù)塊移動(dòng)到二級(jí)緩存單元。
[0057]通常分布式存儲(chǔ)系統(tǒng)中各節(jié)點(diǎn)設(shè)備分別獨(dú)立劃分內(nèi)存單元,每個(gè)內(nèi)存單元都有各自的對(duì)外接口。本申請(qǐng)文件接收方法和裝置所部署的接收端的分布式存儲(chǔ)系統(tǒng)中,各單節(jié)點(diǎn)設(shè)備組成分布式內(nèi)存集群,該分布式內(nèi)存集群中的內(nèi)存對(duì)外采用統(tǒng)一的接口,因此處理能力大,數(shù)據(jù)處理速度快。另外,各節(jié)點(diǎn)設(shè)備還組成分布式磁盤文件系統(tǒng)或者共享文件系統(tǒng),從而可以實(shí)現(xiàn)多備份存儲(chǔ),以提高數(shù)據(jù)可靠性,從而保證數(shù)據(jù)安全。
[0058]需要說明的是,文件系統(tǒng)是指磁盤文件系統(tǒng),用于對(duì)磁盤空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。
[0059]分布式磁盤文件系統(tǒng)是指將數(shù)據(jù)存儲(chǔ)在物理上分散的多個(gè)存儲(chǔ)節(jié)點(diǎn)上,對(duì)這些節(jié)點(diǎn)的資源進(jìn)行統(tǒng)一的管理與分配,并向用戶提供文件系統(tǒng)訪問接口。
[0060]共享文件系統(tǒng)包括多臺(tái)存儲(chǔ)有共享文件的共享計(jì)算機(jī),用戶可以聯(lián)結(jié)到這些共享計(jì)算機(jī),并像訪問本地硬盤一樣訪問共享計(jì)算機(jī)上的文件。下面將結(jié)合實(shí)施例中的附圖,對(duì)本申請(qǐng)文件接收方法和裝置的技術(shù)方案進(jìn)行清楚、完整地描述。
[0061 ] 實(shí)施例1
[0062]如圖1所示,本實(shí)施例文件接收方法,包括以下步驟:
[0063]Sll:當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;該至少一個(gè)傳輸數(shù)據(jù)塊與至少一個(gè)該文件傳輸任務(wù)相對(duì)應(yīng);每個(gè)該文件傳輸任務(wù)與一個(gè)待傳輸文件相對(duì)應(yīng);
[0064]S12:對(duì)接收的該傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;該元信息包括用于對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;該數(shù)據(jù)塊是預(yù)先將該待傳輸文件切分后得到的;
[0065]S13:將根據(jù)該元信息校驗(yàn)通過的該數(shù)據(jù)塊根據(jù)該文件指示信息加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;每個(gè)該數(shù)據(jù)塊鏈表與一個(gè)該文件傳輸任務(wù)相對(duì)應(yīng);該數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的;
[0066]S14:對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;每個(gè)該數(shù)據(jù)塊組是駐留在一片內(nèi)存片中的;
[0067]S15:并在檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;該片文件是保存在文件系統(tǒng)中的。
[0068]具體應(yīng)用時(shí),針對(duì)至少一個(gè)文件傳輸任務(wù),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;這至少一個(gè)傳輸數(shù)據(jù)塊來(lái)自至少一個(gè)該文件傳輸任務(wù),而每個(gè)文件傳輸任務(wù)則對(duì)應(yīng)一個(gè)待傳輸文件。
[0069]優(yōu)選地,每個(gè)文件傳輸任務(wù)可以是由發(fā)送端發(fā)起文件發(fā)送請(qǐng)求而由接收端創(chuàng)建的,并且通過接收端與發(fā)送端的會(huì)話標(biāo)識(shí)來(lái)傳遞待傳輸文件的信息,該待傳輸文件的信息可以包括該待傳輸文件的大小、該待傳輸文件被切分后得到的數(shù)據(jù)塊個(gè)數(shù)等信息。
[0070]優(yōu)選地,每個(gè)文件傳輸任務(wù)可以是由接收端發(fā)起文件接收請(qǐng)求而由接收端創(chuàng)建的,并由接收端通過會(huì)話標(biāo)識(shí)向發(fā)送端指定待傳輸文件;接收端接到接收請(qǐng)求后,可以通過與接收端的會(huì)話標(biāo)識(shí)來(lái)傳遞待傳輸文件的信息,該待傳輸文件的信息可以包括該待傳輸文件被切分后得到的數(shù)據(jù)塊個(gè)數(shù)信息。
[0071 ]接收到的傳輸數(shù)據(jù)包是經(jīng)過發(fā)送端打包封裝后再經(jīng)過網(wǎng)絡(luò)傳輸?shù)?,以便可以通過網(wǎng)絡(luò)快速傳輸。因此,對(duì)接收的傳輸數(shù)據(jù)塊首先要進(jìn)行拆包操作,得到該傳輸數(shù)據(jù)塊內(nèi)攜帶的元信息和數(shù)據(jù)塊。其中,元信息至少包括用于在接收端對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;數(shù)據(jù)塊則是在發(fā)送端將該待傳輸文件切分后得到的。
[0072]優(yōu)選地,該待傳輸文件被切分后得到的該數(shù)據(jù)塊大小是基本均勻的。
[0073]優(yōu)選地,也可以在元信息中不指定待傳輸文件的標(biāo)簽,而是在接收端接收文件時(shí),通過文件傳輸任務(wù)進(jìn)程獲得與該文件傳輸任務(wù)對(duì)應(yīng)的待傳輸文件信息。對(duì)應(yīng)地,在創(chuàng)建文件傳輸任務(wù)時(shí),獲得與該文件傳輸任務(wù)對(duì)應(yīng)的待傳輸文件的信息,并創(chuàng)建與該待傳輸文件對(duì)應(yīng)的數(shù)據(jù)塊鏈表。
[0074]接下來(lái),根據(jù)元信息內(nèi)攜帶的校驗(yàn)信息對(duì)拆包后得到的數(shù)據(jù)塊進(jìn)行校驗(yàn)。在校驗(yàn)通過時(shí),將該數(shù)據(jù)塊加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中。每個(gè)數(shù)據(jù)塊鏈表對(duì)應(yīng)于每個(gè)文件傳輸任務(wù)。其中,數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的。該分布式內(nèi)存集群中的內(nèi)存對(duì)外采用統(tǒng)一的接口,因此處理能力大,數(shù)據(jù)處理速度快。
[0075]需要說明的是,這里“數(shù)據(jù)塊鏈表”中的“鏈表”并不是指數(shù)據(jù)結(jié)構(gòu)中的鏈表這種數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。當(dāng)然,在具體實(shí)施時(shí),也可以采用鏈表來(lái)實(shí)現(xiàn)數(shù)據(jù)塊鏈表。
[0076]盡管內(nèi)存存取數(shù)據(jù)快,但內(nèi)存中的數(shù)據(jù)在斷電時(shí)會(huì)丟失,而磁盤中的數(shù)據(jù)在斷電時(shí)不會(huì)丟失。因此需要將內(nèi)存中的數(shù)據(jù)高效地轉(zhuǎn)移到采用磁盤的二級(jí)緩存單元中。
[0077]因此,進(jìn)一步地,對(duì)該數(shù)據(jù)塊鏈表內(nèi)的數(shù)據(jù)塊進(jìn)行分組,從而得到至少一個(gè)數(shù)據(jù)塊組,其中,每個(gè)數(shù)據(jù)塊組駐留在該數(shù)據(jù)塊鏈表所在的內(nèi)存空間內(nèi)的一片內(nèi)存片中。
[0078]優(yōu)選地,可按照先進(jìn)先出的模式對(duì)數(shù)據(jù)塊進(jìn)行分組,則按照這種模式進(jìn)行分組后的數(shù)據(jù)塊組大小相等,但文件個(gè)數(shù)并不一定相同。
[0079]優(yōu)選地,可按照數(shù)據(jù)塊的大小對(duì)數(shù)據(jù)塊進(jìn)行分組。啟動(dòng)將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)移到磁盤文件中的條件是:檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值。當(dāng)檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;該片文件是保存在磁盤上的文件系統(tǒng)中的。
[0080]優(yōu)選地,預(yù)設(shè)的文件格式可以是各種常見的通用文件格式,也可以自定義文件組織方式,并附加有自定義的文件后綴名。
[0081]通過設(shè)定的預(yù)設(shè)閾值,保證了片文件的大小比較均勻,既能保證及時(shí)將內(nèi)存片中的數(shù)據(jù)轉(zhuǎn)移到磁盤文件中,也可以避免在內(nèi)存與磁盤之間頻繁操作,占用過多的計(jì)算資源。
[0082]優(yōu)選地,可以將該片文件加入到對(duì)應(yīng)的片文件鏈表內(nèi),每個(gè)該片文件鏈表對(duì)應(yīng)于一個(gè)文件傳輸任務(wù);而該片文件鏈表是保存在文件系統(tǒng)中的。
[0083]優(yōu)選地,保存有同一個(gè)待傳輸文件不同數(shù)據(jù)塊組的多個(gè)片文件的文件名采用以下規(guī)則:該待傳輸文件名加上保存在該片文件內(nèi)的數(shù)據(jù)塊組的編號(hào)。
[0084]優(yōu)選地,保存有同一個(gè)待傳輸文件不同數(shù)據(jù)塊組的多個(gè)片文件可以保存在同一個(gè)以待傳輸文件命名的文件夾下。
[0085]本實(shí)施例文件接收方法將并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù)。
[0086]實(shí)施例2
[0087]本實(shí)施例文件接收方法是在實(shí)施例1基礎(chǔ)上,進(jìn)一步對(duì)組裝片文件的方法進(jìn)行說明。
[0088]如圖2所示,本實(shí)施例文件接收方法的片文件包括與該文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示該片文件在該待傳輸文件中位置的位置指示信息;對(duì)應(yīng)地,本實(shí)施例文件接收方法還包括以下步驟:
[0089]S21:當(dāng)檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的該待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與該待傳輸文件對(duì)應(yīng)的該文件傳輸任務(wù)完成;
[0090]S22:將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;
[0091]S23:根據(jù)該位置指示信息將該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件組裝得到目標(biāo)文件。
[0092]具體應(yīng)用時(shí),本實(shí)施例文件接收方法的片文件包括與該文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示該片文件在該待傳輸文件中位置的位置指示信息;當(dāng)檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的該待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與該待傳輸文件對(duì)應(yīng)的該文件傳輸任務(wù)完成;此時(shí),除了文件系統(tǒng)中的至少一個(gè)片文件外,與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)也駐留有一些尚未達(dá)到預(yù)先設(shè)定的閾值的數(shù)據(jù)塊組。將這些數(shù)據(jù)塊組按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;進(jìn)一步,可以根據(jù)片文件中的位置指示信息將文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件組裝起來(lái),從而得到目標(biāo)文件。這個(gè)目標(biāo)文件就是待傳輸文件的接收端的一個(gè)副本。
[0093]優(yōu)選地,目標(biāo)文件保存在分布式磁盤文件系統(tǒng)或者共享文件系統(tǒng)中,分布式磁盤文件系統(tǒng)或者共享文件系統(tǒng)都是分布式存儲(chǔ)系統(tǒng)支持的文件訪問模式。
[0094]本實(shí)施例文件接收方法在檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),將片文件組裝起來(lái),從而得到目標(biāo)文件。
[0095]實(shí)施例3
[0096]本實(shí)施例文件接收方法是在實(shí)施例2基礎(chǔ)上,進(jìn)一步對(duì)文件傳輸任務(wù)結(jié)束后釋放存儲(chǔ)空間的方法進(jìn)行說明。
[0097]如圖3所示,本實(shí)施例文件接收方法的該將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中的步驟之后,還包括:
[0098]S31:從該分布式內(nèi)存集群中的內(nèi)存中釋放為該數(shù)據(jù)塊鏈表開辟的內(nèi)存空間;
[0099 ] S32:從該文件系統(tǒng)中刪除該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件;
[0100]S33:及和/或?qū)⒃撐募鬏斎蝿?wù)從文件傳輸任務(wù)列表中清除;每個(gè)文件傳輸任務(wù)是在創(chuàng)建時(shí)加入到該文件傳輸任務(wù)列表中的。
[0101]本實(shí)施例文件接收方法在利用兩級(jí)緩存機(jī)制可靠地存儲(chǔ)待傳輸文件后,及時(shí)釋放存儲(chǔ)空間。
[0102]實(shí)施例4
[0103]本實(shí)施例文件接收方法是在實(shí)施例1基礎(chǔ)上,進(jìn)一步對(duì)數(shù)據(jù)塊鏈表內(nèi)的數(shù)據(jù)塊進(jìn)行分組的方法進(jìn)行說明。
[0104]本實(shí)施例文件接收方法的元信息還包括數(shù)據(jù)塊的序列索引值;對(duì)應(yīng)地,該對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組的步驟包括:
[0105]在該數(shù)據(jù)塊鏈表內(nèi),將該數(shù)據(jù)塊按照該序列索引值進(jìn)行排序;并將具有連續(xù)的該序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組。
[0106]本實(shí)施例文件接收方法利用元信息內(nèi)攜帶的數(shù)據(jù)塊的序列索引值對(duì)數(shù)據(jù)塊進(jìn)行排序,從而將具有連續(xù)序列索引值的數(shù)據(jù)塊標(biāo)記為一個(gè)數(shù)據(jù)塊組,為后續(xù)進(jìn)行片文件組裝提供了便利
[0107]需要說明的是,上述實(shí)施例1至實(shí)施例4中的多個(gè)實(shí)施例可組合實(shí)施,并實(shí)現(xiàn)組合后的功能。需要說明的是,此處的“多個(gè)”是指兩個(gè)以上。
[0108]實(shí)施例5
[0109]以下結(jié)合圖4,對(duì)本實(shí)施例文件接收方法的實(shí)施方案進(jìn)行具體闡述。
[0110]如圖4所示,本實(shí)施文件接收方法并發(fā)地接收到數(shù)據(jù)傳輸塊之后,通過拆包處理,得到數(shù)據(jù)塊;并根據(jù)與每個(gè)數(shù)據(jù)塊唯一對(duì)應(yīng)的元信息對(duì)數(shù)據(jù)塊進(jìn)行校驗(yàn);對(duì)校驗(yàn)通過的數(shù)據(jù)塊,加入到與文件傳輸任務(wù)對(duì)應(yīng)的數(shù)據(jù)塊鏈表中。在將數(shù)據(jù)塊加入到數(shù)據(jù)塊鏈表內(nèi)時(shí),按照數(shù)據(jù)塊的序列索引值進(jìn)行排序;并將具有連續(xù)的該序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組;并在檢測(cè)到某一數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;并在檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;并將該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件組裝得到目標(biāo)文件。
[0111]因?yàn)樯鲜鎏幚磉^程是多進(jìn)程或多線程并發(fā)處理的,在某一時(shí)刻,接收到多個(gè)傳輸數(shù)據(jù)塊;在用于一級(jí)緩存的分布式內(nèi)存集群中,存在多個(gè)尚未完成的文件傳輸任務(wù)所對(duì)應(yīng)的多個(gè)數(shù)據(jù)塊鏈表,如數(shù)據(jù)塊鏈表I,及數(shù)據(jù)塊鏈表η;在每個(gè)數(shù)據(jù)塊鏈表內(nèi),存在多個(gè)數(shù)據(jù)塊組,每個(gè)數(shù)據(jù)塊組駐留在一個(gè)內(nèi)存片中;在用于二級(jí)緩存的文件系統(tǒng)中,存在多個(gè)與尚未完成的文件傳輸任務(wù)所對(duì)應(yīng)的多個(gè)片文件組,這些片文件在隨后將被組裝成為目標(biāo)文件I,及目標(biāo)文件m,其中,m或η表示數(shù)據(jù)塊鏈表或目標(biāo)文件的最大編號(hào),可以反映當(dāng)前存在于緩存中的數(shù)據(jù)塊鏈表或目標(biāo)文件總數(shù)目,111可能大于η,等于η,但不會(huì)小于η。
[0112]本實(shí)施例文件接收方法將并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù)。
[0113]實(shí)施例6
[0114]如圖4所示,本實(shí)施例文件接收裝置,包括數(shù)據(jù)接收單元10、一級(jí)緩存單元20和二級(jí)緩存單元30;
[0115]該數(shù)據(jù)接收單元10用于當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;該至少一個(gè)傳輸數(shù)據(jù)塊與至少一個(gè)該文件傳輸任務(wù)對(duì)應(yīng);每個(gè)該文件傳輸任務(wù)與一個(gè)待傳輸文件相對(duì)應(yīng);
[0116]該一級(jí)緩存單元20用于對(duì)接收的該傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;該元信息包括用于對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;該數(shù)據(jù)塊是預(yù)先將該待傳輸文件切分后得到的;
[0117]及將根據(jù)該元信息校驗(yàn)通過的該數(shù)據(jù)塊根據(jù)該文件指示信息加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;每個(gè)該數(shù)據(jù)塊鏈表與一個(gè)該文件傳輸任務(wù)相對(duì)應(yīng);該數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的;
[0118]及對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;每個(gè)該數(shù)據(jù)塊組是駐留在一片內(nèi)存片中的;
[0119]該二級(jí)緩存單元30用于在檢測(cè)到該數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將該數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;該片文件是保存在文件系統(tǒng)中的。
[0120]本實(shí)施例文件接收裝置的【具體實(shí)施方式】參見實(shí)施例1,這里不再贅述。
[0121]本實(shí)施例文件接收裝置將并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù)。
[0122]實(shí)施例7
[0123]本實(shí)施例文件接收裝置是在實(shí)施例6基礎(chǔ)上,對(duì)進(jìn)一步對(duì)組裝片文件的方法進(jìn)行說明。
[0124]本實(shí)施例文件接收裝置的片文件包括與該文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示該片文件在該待傳輸文件中位置的位置指示信息;
[0125]對(duì)應(yīng)地,該二級(jí)緩存單元30還用于:
[0126]當(dāng)檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的該待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與該待傳輸文件對(duì)應(yīng)的該文件傳輸任務(wù)完成;
[0127]將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;
[0128]根據(jù)該位置指示信息將該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件組裝得到目標(biāo)文件。
[0129]本實(shí)施例文件接收裝置的【具體實(shí)施方式】參見實(shí)施例2,這里不再贅述。
[0130]本實(shí)施例文件接收裝置在檢測(cè)到與該文件傳輸任務(wù)對(duì)應(yīng)的待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),將片文件組裝起來(lái),從而得到目標(biāo)文件。
[0131]實(shí)施例8
[0132]本實(shí)施例文件接收裝置是在實(shí)施例7基礎(chǔ)上,進(jìn)一步對(duì)文件傳輸任務(wù)結(jié)束后釋放存儲(chǔ)空間的方法進(jìn)行說明。
[0133]本實(shí)施例文件接收裝置,在該將與該文件傳輸任務(wù)對(duì)應(yīng)的該數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中的步驟之后,
[0134]該一級(jí)緩存單元20還用于從該分布式內(nèi)存集群中的內(nèi)存中釋放為該數(shù)據(jù)塊鏈表開辟的內(nèi)存空間;
[0135]及和/或?qū)⒃撐募鬏斎蝿?wù)從文件傳輸任務(wù)列表中清除;每個(gè)文件傳輸任務(wù)是在創(chuàng)建時(shí)加入到該文件傳輸任務(wù)列表中的;
[0136]該二級(jí)緩存單元30還用于從該文件系統(tǒng)中刪除該文件標(biāo)簽與該文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)該片文件。
[0137]本實(shí)施例文件接收裝置的【具體實(shí)施方式】參見實(shí)施例3,這里不再贅述。
[0138]本實(shí)施例文件接收裝置在利用兩級(jí)緩存機(jī)制可靠地存儲(chǔ)待傳輸文件后,及時(shí)釋放存儲(chǔ)空間。
[0139]實(shí)施例9
[0140]本實(shí)施例文件接收裝置是在實(shí)施例6基礎(chǔ)上,進(jìn)一步對(duì)數(shù)據(jù)塊鏈表內(nèi)的數(shù)據(jù)塊進(jìn)行分組的方法進(jìn)行說明。
[0141]本實(shí)施例文件接收裝置的該元信息還包括數(shù)據(jù)塊的序列索引值;對(duì)應(yīng)地,該一級(jí)緩存單元20用于對(duì)該數(shù)據(jù)塊鏈表內(nèi)的該數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組的步驟包括:
[0142]在該數(shù)據(jù)塊鏈表內(nèi),將該數(shù)據(jù)塊按照該序列索引值進(jìn)行排序;并將具有連續(xù)的該序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組。
[0143]本實(shí)施例文件接收裝置的【具體實(shí)施方式】參見實(shí)施例4,這里不再贅述。
[0144]本實(shí)施例文件接收裝置利用元信息內(nèi)攜帶的數(shù)據(jù)塊的序列索引值對(duì)數(shù)據(jù)塊進(jìn)行排序,從而將具有連續(xù)序列索引值的數(shù)據(jù)塊標(biāo)記為一個(gè)數(shù)據(jù)塊組,為后續(xù)進(jìn)行片文件組裝提供了便利。
[0145]需要說明的是,上述實(shí)施例6至實(shí)施例9中的多個(gè)實(shí)施例可組合實(shí)施,并實(shí)現(xiàn)組合后的功能。需要說明的是,此處的“多個(gè)”是指兩個(gè)以上。
[0146]實(shí)施例10
[0147]如圖5所示,本實(shí)施例文件傳輸系統(tǒng),包括文件接收裝置200和文件發(fā)送裝置100;該文件接收裝置200已在上述實(shí)施例1至實(shí)施例9中進(jìn)行了說明;
[0148]該文件接收裝置200和該文件發(fā)送裝置100通過網(wǎng)絡(luò)連接;
[0149]該文件發(fā)送裝置100用于在接收到文件發(fā)送請(qǐng)求時(shí),將該文件發(fā)送請(qǐng)求指定的待傳輸文件切分成至少一個(gè)數(shù)據(jù)塊;及將每個(gè)該數(shù)據(jù)塊和每個(gè)該數(shù)據(jù)塊的元信息打包成一個(gè)傳輸數(shù)據(jù)塊;每個(gè)該數(shù)據(jù)塊的元信息包括用于對(duì)該數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示該數(shù)據(jù)塊相對(duì)應(yīng)的該待傳輸文件的文件指示信息;及將至少一個(gè)該傳輸數(shù)據(jù)塊并發(fā)地通過網(wǎng)絡(luò)向該文件接收裝置發(fā)送。
[0150]優(yōu)選地,每個(gè)該數(shù)據(jù)塊的元信息包括該數(shù)據(jù)塊在待傳輸文件的起始位置值、該數(shù)據(jù)塊的序列索引值、該數(shù)據(jù)塊的字節(jié)長(zhǎng)度、該數(shù)據(jù)塊的檢驗(yàn)碼、該數(shù)據(jù)塊的編碼狀態(tài)或該數(shù)據(jù)塊的編碼格式等信息。
[0151]優(yōu)選地,該待傳輸文件被切分后得到的該數(shù)據(jù)塊大小是基本均勻的。
[0152]本實(shí)施例文件傳輸系統(tǒng)的文件接收裝置的【具體實(shí)施方式】參見實(shí)施例6至9,這里不再贅述。
[0153]本實(shí)施例文件傳輸系統(tǒng)實(shí)現(xiàn)并行發(fā)送、并行接收,且并行接收的數(shù)據(jù)塊首先保存在內(nèi)存中,繼而轉(zhuǎn)移到磁盤文件系統(tǒng)中。通過采用內(nèi)存結(jié)合文件系統(tǒng)的兩級(jí)緩存機(jī)制,實(shí)現(xiàn)在單節(jié)點(diǎn)宕機(jī)的情況下,保證已接收到的數(shù)據(jù)塊不丟失;其他節(jié)點(diǎn)仍然能夠繼續(xù)數(shù)據(jù)塊的接收任務(wù),保證了文件傳輸快速、高效和安全。
[0154]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說許多修改和變更都是顯而易見的。本文中所用術(shù)語(yǔ)的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
[0155]本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的公開后,將容易想到本公開的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。
【主權(quán)項(xiàng)】
1.一種文件接收方法,其特征在于,包括以下步驟: 當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;所述至少一個(gè)傳輸數(shù)據(jù)塊與至少一個(gè)所述文件傳輸任務(wù)相對(duì)應(yīng);每個(gè)所述文件傳輸任務(wù)與一個(gè)待傳輸文件相對(duì)應(yīng); 對(duì)接收的所述傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;所述元信息包括用于對(duì)所述數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示所述數(shù)據(jù)塊相對(duì)應(yīng)的所述待傳輸文件的文件指示信息;所述數(shù)據(jù)塊是預(yù)先將所述待傳輸文件切分后得到的; 將根據(jù)所述元信息校驗(yàn)通過的所述數(shù)據(jù)塊根據(jù)所述文件指示信息加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;每個(gè)所述數(shù)據(jù)塊鏈表與一個(gè)所述文件傳輸任務(wù)相對(duì)應(yīng);所述數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的; 對(duì)所述數(shù)據(jù)塊鏈表內(nèi)的所述數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;每個(gè)所述數(shù)據(jù)塊組是駐留在一片內(nèi)存片中的; 并在檢測(cè)到所述數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將所述數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;所述片文件是保存在文件系統(tǒng)中的。2.根據(jù)權(quán)利要求1所述的文件接收方法,其特征在于,所述片文件包括與所述文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示所述片文件在所述待傳輸文件中位置的位置指示信息; 對(duì)應(yīng)地,還包括以下步驟: 當(dāng)檢測(cè)到與所述文件傳輸任務(wù)對(duì)應(yīng)的所述待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與所述待傳輸文件對(duì)應(yīng)的所述文件傳輸任務(wù)完成; 將與所述文件傳輸任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中; 根據(jù)所述位置指示信息將所述文件標(biāo)簽與所述文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)所述片文件組裝得到目標(biāo)文件。3.根據(jù)權(quán)利要求2所述的文件接收方法,其特征在于,所述將與所述文件傳輸任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中的步驟之后,還包括: 從所述分布式內(nèi)存集群中的內(nèi)存中釋放為所述數(shù)據(jù)塊鏈表開辟的內(nèi)存空間; 從所述文件系統(tǒng)中刪除所述文件標(biāo)簽與所述文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)所述片文件; 及和/或?qū)⑺鑫募鬏斎蝿?wù)從文件傳輸任務(wù)列表中清除;每個(gè)文件傳輸任務(wù)是在創(chuàng)建時(shí)加入到所述文件傳輸任務(wù)列表中的。4.根據(jù)權(quán)利要求1所述的文件接收方法,其特征在于,所述元信息還包括數(shù)據(jù)塊的序列索引值; 對(duì)應(yīng)地,所述對(duì)所述數(shù)據(jù)塊鏈表內(nèi)的所述數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組的步驟包括: 在所述數(shù)據(jù)塊鏈表內(nèi),將所述數(shù)據(jù)塊按照所述序列索引值進(jìn)行排序;并將具有連續(xù)的所述序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組。5.根據(jù)權(quán)利要求2所述的文件接收方法,其特征在于,所述目標(biāo)文件保存在分布式磁盤文件系統(tǒng)或者共享文件系統(tǒng)中。6.一種文件接收裝置,其特征在于,包括數(shù)據(jù)接收單元、一級(jí)緩存單元和二級(jí)緩存單元; 所述數(shù)據(jù)接收單元用于當(dāng)存在至少一個(gè)文件傳輸任務(wù)時(shí),并發(fā)地從網(wǎng)絡(luò)接收至少一個(gè)傳輸數(shù)據(jù)塊;所述至少一個(gè)傳輸數(shù)據(jù)塊與至少一個(gè)所述文件傳輸任務(wù)對(duì)應(yīng);每個(gè)所述文件傳輸任務(wù)與一個(gè)待傳輸文件相對(duì)應(yīng); 所述一級(jí)緩存單元用于對(duì)接收的所述傳輸數(shù)據(jù)塊進(jìn)行拆包,得到元信息和數(shù)據(jù)塊;所述元信息包括用于對(duì)所述數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示所述數(shù)據(jù)塊相對(duì)應(yīng)的所述待傳輸文件的文件指示信息;所述數(shù)據(jù)塊是預(yù)先將所述待傳輸文件切分后得到的; 將根據(jù)所述元信息校驗(yàn)通過的所述數(shù)據(jù)塊根據(jù)所述文件指示信息加入到相對(duì)應(yīng)的數(shù)據(jù)塊鏈表中;每個(gè)所述數(shù)據(jù)塊鏈表與一個(gè)所述文件傳輸任務(wù)相對(duì)應(yīng);所述數(shù)據(jù)塊鏈表是駐留在分布式內(nèi)存集群中的內(nèi)存中的; 對(duì)所述數(shù)據(jù)塊鏈表內(nèi)的所述數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組;每個(gè)所述數(shù)據(jù)塊組是駐留在一片內(nèi)存片中的; 所述二級(jí)緩存單元用于在檢測(cè)到所述數(shù)據(jù)塊組的字節(jié)長(zhǎng)度超過預(yù)設(shè)的閾值時(shí),將所述數(shù)據(jù)塊組中的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中;所述片文件是保存在文件系統(tǒng)中的。7.根據(jù)權(quán)利要求6所述的文件接收裝置,其特征在于,所述片文件包括與所述文件傳輸任務(wù)對(duì)應(yīng)的文件標(biāo)簽及用于指示所述片文件在所述待傳輸文件中位置的位置指示信息; 對(duì)應(yīng)地,所述二級(jí)緩存單元還用于: 當(dāng)檢測(cè)到與所述文件傳輸任務(wù)對(duì)應(yīng)的所述待傳輸文件切分后得到的所有數(shù)據(jù)塊均已完整接收時(shí),確定與所述待傳輸文件對(duì)應(yīng)的所述文件傳輸任務(wù)完成; 將與所述文件傳輸任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中; 根據(jù)所述位置指示信息將所述文件標(biāo)簽與所述文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)所述片文件組裝得到目標(biāo)文件。8.根據(jù)權(quán)利要求7所述的文件接收裝置,其特征在于,在所述將與所述文件傳輸任務(wù)對(duì)應(yīng)的所述數(shù)據(jù)塊鏈表內(nèi)駐留的數(shù)據(jù)塊按照預(yù)設(shè)的文件格式轉(zhuǎn)移到片文件中的步驟之后, 所述一級(jí)緩存單元還用于從所述分布式內(nèi)存集群中的內(nèi)存中釋放為所述數(shù)據(jù)塊鏈表開辟的內(nèi)存空間; 及和/或?qū)⑺鑫募鬏斎蝿?wù)從文件傳輸任務(wù)列表中清除;每個(gè)文件傳輸任務(wù)是在創(chuàng)建時(shí)加入到所述文件傳輸任務(wù)列表中的; 所述二級(jí)緩存單元還用于從所述文件系統(tǒng)中刪除所述文件標(biāo)簽與所述文件傳輸任務(wù)相對(duì)應(yīng)的至少一個(gè)所述片文件。9.根據(jù)權(quán)利要求6所述的文件接收裝置,其特征在于,所述元信息還包括數(shù)據(jù)塊的序列索引值; 對(duì)應(yīng)地,所述一級(jí)緩存單元用于對(duì)所述數(shù)據(jù)塊鏈表內(nèi)的所述數(shù)據(jù)塊進(jìn)行分組,得到至少一個(gè)數(shù)據(jù)塊組的步驟包括: 在所述數(shù)據(jù)塊鏈表內(nèi),將所述數(shù)據(jù)塊按照所述序列索引值進(jìn)行排序;并將具有連續(xù)的所述序列索引值的至少一個(gè)數(shù)據(jù)塊,標(biāo)記為一個(gè)數(shù)據(jù)塊組。10.—種文件傳輸系統(tǒng),其特征在于,包括權(quán)利要求6至9中任一項(xiàng)所述的文件接收裝置和文件發(fā)送裝置; 所述文件接收裝置和所述文件發(fā)送裝置通過網(wǎng)絡(luò)連接; 所述文件發(fā)送裝置用于在接收到文件發(fā)送請(qǐng)求時(shí),將所述文件發(fā)送請(qǐng)求指定的待傳輸文件切分成至少一個(gè)數(shù)據(jù)塊; 及將每個(gè)所述數(shù)據(jù)塊和每個(gè)所述數(shù)據(jù)塊的元信息打包成一個(gè)傳輸數(shù)據(jù)塊;每個(gè)所述數(shù)據(jù)塊的元信息包括用于對(duì)所述數(shù)據(jù)塊進(jìn)行校驗(yàn)的校驗(yàn)信息及用于指示所述數(shù)據(jù)塊相對(duì)應(yīng)的所述待傳輸文件的文件指示信息; 及將至少一個(gè)所述傳輸數(shù)據(jù)塊并發(fā)地通過網(wǎng)絡(luò)向所述文件接收裝置發(fā)送。
【文檔編號(hào)】H04L29/08GK105933412SQ201610248889
【公開日】2016年9月7日
【申請(qǐng)日】2016年4月20日
【發(fā)明人】肖華飚
【申請(qǐng)人】北京云宏信達(dá)信息科技有限公司