一種文件并行傳輸的方法及系統的制作方法
【專利摘要】一種文件并行傳輸的方法和系統,所述方法包括如下步驟:獲取待傳輸的文件的長度并設置傳輸線程的數量;分割文件;創建傳輸線程;創建目標文件;執行所述傳輸線程以傳輸多個文件片段;在所有傳輸線程傳輸完各自對應的文件片段時,結束文件傳輸,關閉所述目標文件。本發明以提高數據交互的速度和數據分析結果的準確度,提升了用戶體驗,同時降低用戶的使用成本。
【專利說明】一種文件并行傳輸的方法及系統
【技術領域】
[0001]本發明涉及云計算和數據統計【技術領域】,特別涉及一種文件并行傳輸的方法和文件并行傳輸的系統。
【背景技術】
[0002]在云計算和大數據統計過程中,對數據的交互傳輸速度有著很高的要求。但是目前的問題是數據的交互采用順序傳輸,讀取和發送使用同步進行的方式,從而占用了大量的時間,而統計則占用了較少的時間。這種情況就會導致在一個固定的時間內必須返回結果時,查找樹又沒有達到查找的最佳數據節點就返回了查找結果,可想而知返回的這種查找結果準確度不高。而且,傳輸數據的時間長會導致設備系統資源的利用效率低。
[0003]因此,有必要對數據交互的方式進行優化改善,以提高數據交互的速度和準確度。
【發明內容】
[0004]本發明鑒于上述情況而作出,其目的是提供一種文件并行傳輸的方法,該方法可以提高數據交互的速度和數據分析結果的準確度,提升了用戶體驗,同時降低用戶的使用成本。
[0005]為實現上述目的,本發明的一個方面提供了一種文件并行傳輸的方法,包括如下步驟:獲取待傳輸的文件的長度并設置傳輸線程的數量;分割文件;創建傳輸線程;創建目標文件;執行所述傳輸線程以傳輸多個文件片段;以及在所有傳輸線程傳輸完各自對應的文件片段時形成所述目標文件。
[0006]所述分割文件的步驟中,根據待傳輸文件的長度和設置的傳輸線程的數量將文件分割為多個文件片段,使得每個文件片段的長度小于預定數值;其中,采用Http協議的GET命令設置每個傳輸線程對應傳輸的文件片段。
[0007]所述創建傳輸線程的步驟還包括以下步驟:設置每個傳輸線程對應的文件片段的起始位置和結束位置并形成該文件片段的文件句柄;將每個傳輸線程對應的文件片段的文件句柄發送到接收端。
[0008]其中,所述創建目標文件的步驟是在文件傳輸的目標位置創建目標文件,該目標文件是空文件,用于存儲多個傳輸線程所傳輸的文件片段。
[0009]所述執行所述傳輸線程的步驟進一步包括以下步驟:在傳輸對應的文件片段過程中,實時記錄當前傳輸數據在所述文件中的數據位置;以及如果存在傳輸線程出錯,則創建一個新的傳輸線程或者由其他線程根據出錯線程記錄的當前傳輸數據在所述文件中的數據位置進行斷點續傳。
[0010]根據本發明的另一方面,提供了一種文件并行傳輸的系統,包括:線程設置模塊,用于獲取待傳輸的文件的長度并設置傳輸線程的數量;文件分割模塊,連接至所述線程設置模塊,用于分割文件;線程創建模塊,連接至所述文件分割模塊,用于創建所述傳輸線程和目標文件;線程執行模塊,連接至所述線程創建模塊,用于執行所述傳輸線程以傳輸多個文件片段;以及文件處理模塊,用于在所有傳輸線程傳輸完各自對應的文件片段時形成所述目標文件。
[0011]根據本發明的系統,可以提高數據交互的速度和數據分析結果的準確度,提升了用戶體驗,同時降低用戶的使用成本。
[0012]優選的,所述文件分割模塊根據待傳輸文件的長度和設置的傳輸線程的數量將文件分割為多個文件片段,使得每個文件片段的長度小于預定數值。
[0013]優選的,所述線程創建模塊采用Http協議的GET命令設置每個傳輸線程對應傳輸的文件片段,并在創建所述多個傳輸線程之后進一步執行下述操作:設置每個傳輸線程對應的文件片段的起始位置和結束位置并形成該文件片段的文件句柄;以及將每個傳輸線程對應的文件片段的文件句柄發送到接收端。
[0014]優選的,所述線程執行模塊還執行下述操作:在每個傳輸線程的執行過程中,實時記錄當前傳輸數據在所述文件中的數據位置;和如果某個傳輸線程出錯,則創建一個新的傳輸線程或者由其他線程根據出錯線程記錄的當前傳輸數據在所述文件中的數據位置進行斷點續傳。
[0015]優選的,所述文件處理模塊在文件傳輸的目標位置創建目標文件,該目標文件是空文件,用于存儲多個傳輸線程所傳輸的文件片段。
[0016]根據本發明提供的文件并行傳輸的方法,可以對數據交互進行優化改善,將數據的完整性進行拆分傳輸。即,使用多個傳輸線程對數據進行分割和斷點續傳,將對一個文件的順序傳輸模擬成多個文件的同時傳輸的方式來實現,從而達到加速數據交互的目的。本發明通過續點連傳的方式進行數據交互,提高數據交互的速度,留出更多時間用于數據分析。
[0017]根據本發明的方法,每個傳輸線程在傳輸對應的文件片段過程中,實時記錄當前傳輸數據在所述文件中的數據位置,并且在有所述傳輸線程出錯時,創建一個新的傳輸線程或者由其他線程根據出錯線程記錄的當前傳輸數據在所述文件中的數據位置進行斷點續傳。
[0018]本發明提供的文件并行傳輸的系統對數據交互進行優化改善,將數據的完整性進行拆分傳輸。即,使用多個傳輸線程對數據進行分割和斷點續傳,將對一個文件的順序傳輸模擬成多個文件的同時傳輸的方式來實現,從而達到加速數據交互的目的。本發明通過續點連傳的方式進行數據交互,提高數據交互的速度,留出更多時間用于數據分析。
【專利附圖】
【附圖說明】
[0019]圖1是根據本發明實施方式的文件并行傳輸的方法的流程圖;
[0020]圖2示意性地示出文件分割示意圖;
[0021]圖3是根據本發明實施方式的文件并行傳輸的系統的結構圖。
【具體實施方式】
[0022]為使本發明的目的、技術方案和優點更加清楚明了,下面結合【具體實施方式】并參照附圖,對本發明進一步詳細說明。應該理解,這些描述只是示例性的,而并非要限制本發明的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本發明的概念。
[0023]云計算和大數據統計過程中,目前存在交互傳輸與統計分析時間分配不均衡的問題。在數據的整個傳輸及分析過程中,交換數據占用了較多的時間,而留給分析的時間較少,從而導致傳輸效率低,并且分析結果沒有時間達到最優,影響了分析結果的準確度。為此,本發明提出了一種文件并行傳輸的方法,縮短了數據的交互傳輸時間,從而可以留出更多時間用于數據分析。
[0024]圖1是根據本發明實施方式的文件并行傳輸的方法的流程圖。
[0025]如圖1所示,本發明優選實施方式的文件并行傳輸的方法包括如下步驟:
[0026]步驟SI,獲取待傳輸的文件的長度并設置傳輸線程的數量。
[0027]首先獲取待傳輸的文件的長度,同時設置該文件傳輸線程的數量,也即將該文件設置為通過多個線程進行并行傳輸。通過一個文件拆分為多個線程并行傳輸,可以顯著提高文件傳輸的速度。
[0028]在本發明的實施方式中,優選的采用Http (Hypertext transfer protocol,超文本轉移協議)協議的HEAD命令獲取待傳輸的文件的長度。
[0029]步驟S2,分割文件。
[0030]本步驟中,根據待傳輸文件的長度和設置的傳輸線程的數量,將文件分割為多個文件片段,每個文件片段的長度均小于預定數值。
[0031]在本發明的實施方式中,可以采用等分或不等分的方式將文件分割為多個文件片段。優選的,分割后的文件片段的長度不超過100字節,但本發明不限制于此。
[0032]例如,待傳輸文件的長度為L,傳輸線程的數量為η。本步驟中,采用等分的方式,可以將文件分割為η個文件片段,每個文件片段的長度為L/n。當然,也可以采用不等分的方式,隨機將文件長度L劃分η份。
[0033]步驟S3,創建傳輸線程。
[0034]本步驟中,基于設置好的傳輸線程的數量以及分割好的文件片段創建多個傳輸線程,將多個文件片段分配至多個傳輸線程,使得每個傳輸線程對應一個需要傳輸的文件片段。所創建的每個傳輸線程發送與該傳輸線程對應的文件片段的文件句柄,使得該傳輸線程可以執行對應文件片段的傳輸。
[0035]在本發明的實施方式中,采用Http協議的GET命令設置每個傳輸線程對應傳輸的文件片段。其中,每個文件片段包括數據在文件中的起始位置和結束位置[From,to]。具體來說,設置每個傳輸線程對應的傳輸范圍的起始位置(From)和結束位置(To),即設置每個傳輸線程從文件中哪一個位置開始傳輸,以及傳輸到文件中的哪一個位置結束。
[0036]如圖2所示,文件的長度為L,傳輸線程的數量為6。第一傳輸線程的文件片段為[S0, SI],第二傳輸線程的文件片段為[SI,S2],第三傳輸線程的文件片段為[S2,S3],第四傳輸線程的文件片段為[S3,S4],第五傳輸線程的文件片段為[S4,S5],第六傳輸線程的文件片段為[S5, S6]。
[0037]步驟S4,創建目標文件。
[0038]本步驟在文件傳輸的目標位置創建目標文件,例如如果將源文件從A設備傳輸到B設備,則本步驟在作為傳輸目標位置的B設備處創建目標文件。該目標文件是空文件,用于存儲多個傳輸線程所下載(傳輸)過來的文件片段。本步驟中,不需要預先生成與待傳輸文件同樣大小的空文件,每個線程只需要傳輸其打開的文件句柄即可。
[0039]步驟S5,執行傳輸線程以傳輸多個文件片段。
[0040]本步驟中,同時并行執行每個傳輸線程,以將每個傳輸線程對應的文件片段傳輸到目標文件保存。
[0041]創建傳輸線程之后,每個傳輸線程從文件中下載與其對應文件片段,將文件片段傳輸到目標位置的目標文件保存到相應位置。需要說明的是,這個過程中不需要對文件加鎖,因為操作系統層級本身對文件的I/o是帶鎖的。
[0042]進一步,每個傳輸線程負責下載和寫入一個文件片段,每個線程都記錄當前已經下載到的位置,這樣如果有某個線程出錯了,可以從斷點處繼續下載,即每個傳輸線程可以斷點續傳。
[0043]在本發明的實施方式中,每個傳輸線程在傳輸對應的文件片段過程中,實時記錄當前傳輸數據在文件中的數據位置。如果某個傳輸線程出錯,則可以創建一個新的線程,或者由其他線程根據出錯線程記錄的當前傳輸數據在文件中的數據位置進行斷點續傳。
[0044]步驟S6,形成目標文件。
[0045]在所有傳輸線程傳輸完各自對應的文件片段時,結束文件傳輸的各個線程,將各個線程傳輸的文件片段填充到先前創建的目標文件中,按照文件片段在文件中的起始位置和結束位置[From,to]進行數據重組,從而確保形成目標文件,形成目標文件與傳輸的源文件一致。
[0046]本發明實施方式提供的數據交換傳輸的方法,對數據交互進行優化改善,將數據的完整性進行拆分傳輸。即,使用多個傳輸線程對數據進行分割和斷點續傳,將對一個文件的順序傳輸模擬成多個文件的同時傳輸的方式來實現,從而達到加速數據交互的目的。本發明通過續點連傳的方式進行數據交互,提高數據交互的速度,留出更多時間用于數據分析。例如:一個100G的數據,如果能提高10的傳輸時間,就可以將時間交給更多的分析計算使用,從而可以提高數據的統計分析效率和準確度。例如最新的語音搜索系統,在用戶量小的時候,就會比用戶量大的時候回復的信息更加準確,從而可以提高數據分析結果的準確度,提升了用戶體驗,同時降低用戶的使用成本。
[0047]圖3是根據本發明實施方式的文件并行傳輸的系統的結構圖。
[0048]如圖3所示,根據本發明實施方式的文件并行傳輸的系統包括:線程設置模塊1、文件分割模塊2、線程創建模塊3、線程執行模塊4和文件處理模塊5。
[0049]具體來說,線程設置模塊I用于獲取待傳輸的文件的長度并設置該文件傳輸線程的數量,也即將該文件設置為通過多個線程進行并行傳輸。通過一個文件拆分為多個線程并行傳輸,可以顯著提高文件傳輸的速度。
[0050]在本發明的實施方式中,線程設置模塊I優選的采用Http協議的HEAD命令獲取待傳輸的文件的長度。
[0051]文件分割模塊2連接至線程設置模塊1,用于根據待傳輸文件的長度和設置的傳輸線程的數量,將文件分割為多個文件片段,每個文件片段的長度均小于預定數值。
[0052]在本發明的實施方式中,文件分割模塊2可以采用等分或不等分的方式將文件分割為多個文件片段。
[0053]例如,待傳輸文件的長度為L,傳輸線程的數量為η。文件分割模塊2采用等分的方式,可以將文件分割為η個文件片段,每個文件片段的長度為L/n。當然,也可以采用不等分的方式,隨機將文件長度L劃分η份。線程創建模塊3基于線程設置模塊I設置好的傳輸線程的數量以及文件分割模塊2分割好的文件片段創建多個傳輸線程,將多個文件片段分配至多個傳輸線程,使得每個傳輸線程對應一個需要傳輸的文件片段。在創建傳輸線程之后,所創建的每個傳輸線程發送與該傳輸線程對應的文件片段的文件句柄,使得該傳輸線程可以執行對應文件片段的傳輸。
[0054]在本發明的實施方式中,線程創建模塊3采用Http協議的GET命令設置每個傳輸線程對應傳輸的文件片段。其中,每個文件片段包括數據在文件中的起始位置和結束位置。具體來說,線程創建模塊3設置每個傳輸線程對應的傳輸范圍的起始位置(From)和結束位置(To),即設置每個傳輸線程從文件中哪一個位置開始傳輸,以及傳輸到文件中的哪一個位置結束。
[0055]線程創建模塊3還用于在文件傳輸的目標位置創建目標文件,例如如果將源文件從A設備傳輸到B設備,則線程創建模塊3在作為傳輸目標位置的B設備處創建目標文件。該目標文件是空文件,用于存儲多個傳輸線程所下載(傳輸)過來的文件片段。線程創建模塊3不需要預先生成與待傳輸文件同樣大小的空文件,每個線程只需要傳輸其打開的文件句柄即可。
[0056]線程執行模塊4執行傳輸線程以傳輸多個文件片段。具體來說,線程執行模塊4同時并行執行每個傳輸線程,以將每個傳輸線程對應的文件片段傳輸到目標文件保存。
[0057]創建傳輸線程之后,每個傳輸線程從文件中下載與其對應文件片段,將文件片段傳輸到目標位置的目標文件保存到相應位置。需要說明的是,這個過程中不需要對文件加鎖,因為操作系統層級本身對文件的I/O是帶鎖的。
[0058]進一步,每個傳輸線程負責下載和寫入一個文件片段,每個線程都記錄當前已經下載到的位置,這樣如果有某個線程出錯了,可以從斷電處繼續下載,即每個傳輸線程可以斷點續傳。
[0059]在本發明的實施方式中,每個傳輸線程在傳輸對應的文件片段過程中,實時記錄當前傳輸數據在文件中的數據位置。如果某個傳輸線程出錯,則可以創建一個新的線程,或者由其他線程根據出錯線程記錄的當前傳輸數據在文件中的數據位置進行斷點續傳。
[0060]文件處理模塊5用于形成目標文件。具體來說,文件處理模塊5在所有傳輸線程傳輸完各自對應的文件片段時,將各個線程傳輸的文件片段填充到先前創建的目標文件中,按照文件片段在文件中的起始位置和結束位置[From,to]進行數據重組,從而確保形成目標文件,形成目標文件與傳輸的源文件一致。
[0061]根據本發明實施方式的文件并行傳輸的系統,對數據交互進行優化改善,將數據的完整性進行拆分傳輸。即,使用多個傳輸線程對數據進行分割和斷點續傳,將對一個文件的順序傳輸模擬成多個文件的同時傳輸的方式來實現,從而達到加速數據交互的目的。本發明通過續點連傳的方式進行數據交互,提高數據交互的速度,留出更多時間用于數據分析。例如:一個100G的數據,如果能提高10的傳輸時間,就可以將時間交給更多的分析計算使用,從而可以提高數據的統計分析效率和準確度。例如最新的語音搜索系統,在用戶量小的時候,就會比用戶量大的時候回復的信息更加準確,從而可以提高數據分析結果的準確度,提升了用戶體驗,同時降低用戶的使用成本。[0062]應當理解的是,本發明的上述【具體實施方式】僅僅用于示例性說明或解釋本發明的原理,而不構成對本發明的限制。因此,在不偏離本發明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。此外,本發明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。
【權利要求】
1.一種文件并行傳輸的方法,包括如下步驟: 獲取待傳輸的文件的長度并設置傳輸線程的數量; 分割文件; 創建傳輸線程; 創建目標文件; 執行所述傳輸線程以傳輸多個文件片段;以及 在所有傳輸線程傳輸完各自對應的文件片段時形成所述目標文件。
2.根據權利要求1所述的文件并行傳輸的方法,所述分割文件的步驟中,根據待傳輸文件的長度和設置的傳輸線程的數量將文件分割為多個文件片段,使得每個文件片段的長度小于預定數值;其中,采用Http協議的GET命令設置每個傳輸線程對應傳輸的文件片段。
3.根據權利要求1所述的文件并行傳輸的方法,其特征在于,所述創建傳輸線程的步驟還包括以下步驟: 設置每個傳輸線程對應的文件片段的起始位置和結束位置并形成該文件片段的文件句柄; 將每個傳輸線程對應的文件片段的文件句柄發送到接收端。
4.根據權利要求1所述的文件并行傳輸的方法,所述創建目標文件的步驟是在文件傳輸的目標位置創建目標文件,該目標文件是空文件,用于存儲多個傳輸線程所傳輸的文件片段。
5.根據權利要求1-4中任一項所述的文件并行傳輸的方法,所述執行所述傳輸線程的步驟進一步包括以下步驟: 在傳輸對應的文件片段過程中,實時記錄當前傳輸數據在所述文件中的數據位置;以及 如果存在傳輸線程出錯,則創建一個新的傳輸線程或者由其他線程根據出錯線程記錄的當前傳輸數據在所述文件中的數據位置進行斷點續傳。
6.一種文件并行傳輸的系統,包括: 線程設置模塊,用于獲取待傳輸的文件的長度并設置傳輸線程的數量; 文件分割模塊,連接至所述線程設置模塊,用于分割文件; 線程創建模塊,連接至所述文件分割模塊,用于創建所述傳輸線程和目標文件; 線程執行模塊,連接至所述線程創建模塊,用于執行所述傳輸線程以傳輸多個文件片段;以及 文件處理模塊,用于在所有傳輸線程傳輸完各自對應的文件片段時形成所述目標文件。
7.根據權利要求6所述的文件并行傳輸的系統,其特征在于,所述文件分割模塊根據待傳輸文件的長度和設置的傳輸線程的數量將文件分割為多個文件片段,使得每個文件片段的長度小于預定數值。
8.根據權利要求6所述的文件并行傳輸的系統,其特征在于,所述線程創建模塊采用Http協議的GET命令設置每個傳輸線程對應傳輸的文件片段,并在創建所述多個傳輸線程之后進一步執行下述操作: 設置每個傳輸線程對應的文件片段的起始位置和結束位置并形成該文件片段的文件句柄;以及 將每個傳輸線程對應的文件片段的文件句柄發送到接收端。
9.根據權利要求6所述的文件并行傳輸的系統,所述線程執行模塊還執行下述操作: 在每個傳輸線程的執行過程中,實時記錄當前傳輸數據在所述文件中的數據位置;和 如果某個傳輸線程出錯,則創建一個新的傳輸線程或者由其他線程根據出錯線程記錄的當前傳輸數據在所述文件中的數據位置進行斷點續傳。
10.根據權利要求6所述的文件并行傳輸的系統,所述文件處理模塊在文件傳輸的目標位置創建目標文件 ,該目標文件是空文件,用于存儲多個傳輸線程所傳輸的文件片段。
【文檔編號】H04L29/08GK103997514SQ201410165392
【公開日】2014年8月20日 申請日期:2014年4月23日 優先權日:2014年4月23日
【發明者】康暖 申請人:漢柏科技有限公司