一種大量小文件遠程傳輸?shù)姆椒?br>【專利摘要】本發(fā)明提供了一種大量小文件遠程傳輸?shù)姆椒?,其將位于第一計算設(shè)備的大量小文件遠程傳輸至第二計算設(shè)備,包括如下步驟:打開位于第一計算設(shè)備的小文件并讀取文件內(nèi)容;將讀取的文件加入到網(wǎng)絡(luò)包;將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備;重復(fù)上述步驟直至所有文件傳輸完畢。本發(fā)明在原有流程上增加了一重操作循環(huán),通過新的同步協(xié)議,定義網(wǎng)絡(luò)包內(nèi)容,包含多組文件操作,使得原有需要多次的網(wǎng)絡(luò)通信合并為一次,充分提高了網(wǎng)絡(luò)帶寬利用率;同時本發(fā)明通過多線程IO復(fù)用技術(shù),消了除文件IO延遲對于系統(tǒng)性能的影響。本發(fā)明使得海量小文件的遠程傳輸效率有了顯著的提升。
【專利說明】
一種大量小文件遠程傳輸?shù)姆椒?br>技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是一種大量小文件遠程傳輸?shù)姆椒ā!颈尘凹夹g(shù)】
[0002]隨著非結(jié)構(gòu)化數(shù)據(jù)的快速增長,計算機系統(tǒng)創(chuàng)建出越來越多的小的文件。為了提高數(shù)據(jù)安全行,這些文件也存在著同步、備份等在不同的計算機系統(tǒng)之間傳輸?shù)男枨蟆?br>[0003]目前海量小文件的傳輸主要有兩類方法:
[0004](1)根據(jù)小文件的列表,使用rsync或ftp等工具一個一個的傳輸文件。這種方法通常無法有效的利用網(wǎng)絡(luò)帶寬,因為網(wǎng)絡(luò)傳輸帶寬和網(wǎng)絡(luò)上傳輸?shù)南拇笮∮兄嚓P(guān)關(guān)系,即隨著網(wǎng)絡(luò)通信包的增大,網(wǎng)絡(luò)帶寬也跟隨增大,所以如果一次一個一個文件的傳輸,會受制于網(wǎng)絡(luò)帶寬,傳輸效率很低。
[0005](2)事先將小文件整體打包成一個大文件,然后再傳輸。這種方式將小文件整體打包后,可以增大網(wǎng)絡(luò)發(fā)送的包的大小,從而提高文件傳輸效率,但是這種方式需要額外的存儲空間用于存儲打包后的文件,在存儲空間有限的情況下無法使用。另外文件的打包和解包也需要浪費計算資源,也延長了整個傳輸過程。
【發(fā)明內(nèi)容】
[0006]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種大量小文件遠程傳輸?shù)姆椒?,有效提高了海量小文件的傳輸效率?br>[0007]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
[0008]本發(fā)明首先提供一種大量小文件遠程傳輸?shù)姆椒?,其將位于第一計算設(shè)備的大量小文件遠程傳輸至第二計算設(shè)備,包括如下步驟:
[0009]步驟S11:打開位于第一計算設(shè)備的小文件并讀取文件內(nèi)容;
[0010]步驟S12:將讀取的文件加入到網(wǎng)絡(luò)包;
[0011]步驟S13:將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備;
[0012]步驟S14:重復(fù)步驟SI 1?S14,直至所有文件傳輸完畢。
[0013]優(yōu)選的,在所述步驟S11之前,還包括:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作,若文件名沒有讀取完畢則在讀取文件名后執(zhí)行步驟S11。
[0014]優(yōu)選的,在所述步驟S13之前,還包括:判斷網(wǎng)絡(luò)包是否已滿,若是則執(zhí)行步驟S13, 若否則重復(fù)步驟S11和步驟S12直至填滿網(wǎng)絡(luò)包。
[0015]優(yōu)選的,所述步驟S13具體包括:第二計算設(shè)備接收保存文件的請求;創(chuàng)建網(wǎng)絡(luò)包中對應(yīng)的多個文件;寫入對應(yīng)文件的內(nèi)容;操作結(jié)果列表返回第一計算設(shè)備。
[0016]本發(fā)明還提供一種大量小文件遠程傳輸?shù)姆椒ǎ鋵⑽挥诘谝挥嬎阍O(shè)備的大量小文件遠程傳輸至第二計算設(shè)備,包括如下步驟:
[0017]步驟S21:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作, 若文件名沒有讀取完畢則在讀取文件名;
[0018]步驟S22:分發(fā)若干工作線程;
[0019]步驟S23:以單個線程為單位在每個工作線程中執(zhí)行如下操作:打開已讀取文件名的文件并讀取文件內(nèi)容;將讀取的文件加入到網(wǎng)絡(luò)包;將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備。
[0020]步驟S24:返回步驟S21,直至所有文件傳輸完畢。[〇〇21]優(yōu)選的,所述步驟S23中,在將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備之前,還包括,判斷網(wǎng)絡(luò)包是否已滿,若否則重復(fù)讀取文件內(nèi)容并將讀取的文件加入到網(wǎng)絡(luò)包的操作,直至填滿網(wǎng)絡(luò)包。
[0022]本發(fā)明的積極效果:本發(fā)明在原有流程上增加了一重操作循環(huán),通過新的同步協(xié)議,定義網(wǎng)絡(luò)包內(nèi)容,包含多組文件操作,使得原有需要多次的網(wǎng)絡(luò)通信合并為一次,充分提高了網(wǎng)絡(luò)帶寬利用率;同時本發(fā)明通過多線程10復(fù)用技術(shù),使得CHJ在線程等待10的時候釋放出來給其他工作線程使用,從而消了除文件10延遲對于系統(tǒng)性能的影響。本發(fā)明使得海量小文件的遠程傳輸效率有了顯著的提升?!靖綀D說明】[0〇23]圖1是本發(fā)明實施例1的流程不意圖;[0〇24]圖2是本發(fā)明實施例2的流程不意圖;[0〇25]圖3是本發(fā)明實施例3的流程不意圖;
[0026]圖4是本發(fā)明實施例中小文件傳輸協(xié)議網(wǎng)絡(luò)包的定義圖;
[0027]圖5是采用rsync及本發(fā)明方法傳輸100萬16K文件時的測試結(jié)果?!揪唧w實施方式】
[0028]下面結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行詳細說明。
[0029]實施例1
[0030]參照圖1,本發(fā)明實施例1提供一種大量小文件遠程傳輸?shù)姆椒?,假設(shè)需要同步的文件夾僅有一個,下面全部是普通小文件,這里的小文件主要是指小于256KB的文件,最大不能超過512KB的文件,其中每個小文件的大小可能不一樣,也可能一樣。將本地源服務(wù)器一個文件夾下的所有小文件傳輸?shù)搅硪慌_遠程服務(wù)器上,需要經(jīng)過下列步驟:[0031 ]步驟S01:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作, 若文件名沒有讀取完畢則在讀取文件名后執(zhí)行后續(xù)步驟;
[0032]步驟S02:打開已讀取文件名的文件并讀取文件內(nèi)容;[〇〇33]步驟S03:將文件內(nèi)容經(jīng)網(wǎng)絡(luò)傳輸至遠程服務(wù)器;[〇〇34]步驟S04:重復(fù)步驟S01?S03,直至所有文件傳輸完畢。
[0035]所述步驟S03具體包括:遠程服務(wù)器接收保存文件的請求;創(chuàng)建對應(yīng)文件;寫入對應(yīng)文件的內(nèi)容;操作結(jié)果列表返回源服務(wù)器。
[0036]本實施例中,其中的多個操作需要使用到文件操作或者網(wǎng)絡(luò)操作這種慢速10操作,在等待操作結(jié)果響應(yīng)的時候無法繼續(xù)執(zhí)行后續(xù)步驟,其傳輸效率較差。[〇〇37] 實施例2[〇〇38]參照圖2,為提升小文件傳輸?shù)恼w效果,本發(fā)明實施例2提供一種大量小文件遠程傳輸?shù)姆椒?,其將位于源服?wù)器某文件夾下的大量小文件遠程傳輸至遠程服務(wù)器,包括如下步驟:
[0039]步驟SI 1:打開位于源服務(wù)器的小文件并讀取文件內(nèi)容;
[0040]步驟S12:將讀取的文件加入到網(wǎng)絡(luò)包;
[0041]步驟S13:將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述遠程服務(wù)器;[〇〇42]步驟S14:重復(fù)步驟SI 1?S14,直至所有文件傳輸完畢。
[0043]在所述步驟S11之前,還包括:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作,若文件名沒有讀取完畢則在讀取文件名后執(zhí)行步驟S11。
[0044]在所述步驟S13之前,還包括:判斷網(wǎng)絡(luò)包是否已滿,若是則執(zhí)行步驟S13,若否則重復(fù)步驟SI 1和步驟S12直至填滿網(wǎng)絡(luò)包。
[0045]所述步驟S13具體包括:遠程服務(wù)器接收保存文件的請求;創(chuàng)建網(wǎng)絡(luò)包中對應(yīng)的多個文件;寫入對應(yīng)文件的內(nèi)容;操作結(jié)果列表返回源服務(wù)器。
[0046]本實施例采用動態(tài)自適應(yīng)組包批量傳輸方式,在實施例1所述的原有流程上增加了一重操作循環(huán),通過新的同步協(xié)議,定義網(wǎng)絡(luò)包內(nèi)容(如圖4所示),包含多組文件操作,使得原有需要多次的網(wǎng)絡(luò)通信合并為一次,充分提高了網(wǎng)絡(luò)帶寬利用率。
[0047]—個典型的小文件傳輸協(xié)議網(wǎng)絡(luò)包如圖4所示。首先是整個同步軟件協(xié)議網(wǎng)絡(luò)報文控制信息,包含消息頭部、校驗、協(xié)議說明等信息。接下來就是需要傳輸?shù)奈募M信息,每個文件都包含元數(shù)據(jù)和數(shù)據(jù)部分。其中元數(shù)據(jù)包含文件路徑、文件名稱、大小、屬主、時間等文件屬性。文件內(nèi)容即為待傳輸文件內(nèi)容。[〇〇48]判斷網(wǎng)絡(luò)包是否已滿的標準:
[0049]根據(jù)應(yīng)用部署的網(wǎng)絡(luò)情況,網(wǎng)絡(luò)包會選取一個合適的大小。在每次把一個文件元數(shù)據(jù)和數(shù)據(jù)附加到網(wǎng)絡(luò)包之后,都會更新網(wǎng)絡(luò)包長度。在下一次需要附加文件數(shù)據(jù)前,都會計算網(wǎng)絡(luò)包剩余空間是否足夠。不足的話就判斷當前網(wǎng)絡(luò)包已滿,進入發(fā)送流程。
[0050]實施例3[〇〇51]參照圖3,為進一步提升小文件傳輸?shù)恼w效果,本發(fā)明實施例3提供一種大量小文件遠程傳輸?shù)姆椒?,其將位于源服?wù)器某文件夾下的大量小文件遠程傳輸至遠程服務(wù)器,包括如下步驟:
[0052]步驟S21:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作, 若文件名沒有讀取完畢則在讀取文件名;[〇〇53]步驟S22:分發(fā)若干工作線程;[〇〇54]步驟S23:以單個線程為單位在每個工作線程中執(zhí)行如下操作:打開已讀取文件名的文件并讀取文件內(nèi)容;將讀取的文件加入到網(wǎng)絡(luò)包;將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述遠程服務(wù)器。
[0055]步驟S24:返回步驟S21,直至所有文件傳輸完畢。
[0056]所述步驟S23中,在將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備之前, 還包括,判斷網(wǎng)絡(luò)包是否已滿,若否則重復(fù)讀取文件內(nèi)容并將讀取的文件加入到網(wǎng)絡(luò)包的操作,直至填滿網(wǎng)絡(luò)包。[〇〇57]本實施例采用多線程動態(tài)分發(fā)10復(fù)用傳輸方式,在一個線程內(nèi)部,在做10的過程中仍然需要等待10延遲,通過多線程10復(fù)用技術(shù),可以使得CHJ在線程等待10的時候釋放出來給其他工作線程使用,從而消除文件10延遲對于系統(tǒng)性能的影響。
[0058]通過本發(fā)明的傳輸方法,海量小文件傳輸性能有顯著提升,對比測試結(jié)果如圖5所示,其中測試環(huán)境如下:
[0059]CPU:1ntel E5至強系列
[0060]內(nèi)存:16G[0061 ]操作系統(tǒng):CentOS6.4 [〇〇62]文件系統(tǒng):12盤配置的LeoFS[〇〇63]網(wǎng)絡(luò)連接:單萬兆以太網(wǎng)連接
[0064]以上所述的僅為本發(fā)明的優(yōu)選實施例,所應(yīng)理解的是,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的思想和原則之內(nèi)所做的任何修改、等同替換等等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種大量小文件遠程傳輸?shù)姆椒?,其將位于第一計算設(shè)備的大量小文件遠程傳輸至 第二計算設(shè)備,其特征在于,包括如下步驟:步驟S11:打開位于第一計算設(shè)備的小文件并讀取文件內(nèi)容;步驟S12:將讀取的文件加入到網(wǎng)絡(luò)包;步驟S13:將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備;步驟S14:重復(fù)步驟SI 1?S14,直至所有文件傳輸完畢。2.根據(jù)權(quán)利要求1所述的一種大量小文件遠程傳輸?shù)姆椒ǎ涮卣髟谟?在所述步驟 S11之前,還包括:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作, 若文件名沒有讀取完畢則在讀取文件名后執(zhí)行步驟S11。3.根據(jù)權(quán)利要求1所述的一種大量小文件遠程傳輸?shù)姆椒ǎ涮卣髟谟?在所述步驟 S13之前,還包括:判斷網(wǎng)絡(luò)包是否已滿,若是則執(zhí)行步驟S13,若否則重復(fù)步驟S11和步驟 S12直至填滿網(wǎng)絡(luò)包。4.根據(jù)權(quán)利要求1所述的一種大量小文件遠程傳輸?shù)姆椒?,其特征在?所述步驟S13 具體包括:第二計算設(shè)備接收保存文件的請求;創(chuàng)建網(wǎng)絡(luò)包中對應(yīng)的多個文件;寫入對應(yīng)文 件的內(nèi)容;操作結(jié)果列表返回第一計算設(shè)備。5.—種大量小文件遠程傳輸?shù)姆椒?,其將位于第一計算設(shè)備的大量小文件遠程傳輸至 第二計算設(shè)備,奇特在于,包括如下步驟:步驟S21:打開文件夾,判斷文件名是否讀取完畢,若文件名讀取完畢則結(jié)束操作,若文 件名沒有讀取完畢則在讀取文件名;步驟S22:分發(fā)若干工作線程;步驟S23:以單個線程為單位在每個工作線程中執(zhí)行如下操作:打開已讀取文件名的文 件并讀取文件內(nèi)容;將讀取的文件加入到網(wǎng)絡(luò)包;將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所 述第二計算設(shè)備。步驟S24:返回步驟S21,直至所有文件傳輸完畢。6.根據(jù)權(quán)利要求5所述的一種大量小文件遠程傳輸?shù)姆椒?,其特征在?所述步驟S23 中,在將網(wǎng)絡(luò)包中的文件同時經(jīng)網(wǎng)絡(luò)傳輸至所述第二計算設(shè)備之前,還包括,判斷網(wǎng)絡(luò)包是 否已滿,若否則重復(fù)讀取文件內(nèi)容并將讀取的文件加入到網(wǎng)絡(luò)包的操作,直至填滿網(wǎng)絡(luò)包。
【文檔編號】H04L29/08GK105959423SQ201610585749
【公開日】2016年9月21日
【申請日】2016年7月22日
【發(fā)明人】康煒, 閆鵬飛
【申請人】北京龍存科技有限責(zé)任公司