新四季網

一種數據處理方法及重刪引擎的製作方法

2023-10-11 21:21:29

一種數據處理方法及重刪引擎的製作方法
【專利摘要】本發明實施例公開了一種數據處理方法及重刪引擎。該數據處理方法應用於數據備份系統,數據備份系統包括重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立至少兩個線程;所述重刪引擎將數據查重任務劃分為至少一個子任務,所述方法包括:所述重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;釋放調取的所述至少一個線程;並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。該方法避免了線程長時間等待IO返回,實現了對CPU充分高效的利用,以及對重複數據刪除性能的提升。
【專利說明】一種數據處理方法及重刪弓I擎
【技術領域】
[0001]本發明涉及數據處理【技術領域】,特別是涉及一種數據處理方法及重刪引擎。
【背景技術】
[0002]重複數據刪除技術是一種數據縮減技術,通常用於基於磁碟的備份系統,旨在減少存儲系統中使用的存儲容量,是存儲業界的熱門技術。
[0003]重複數據刪除技術通過記錄數據塊的指紋,並根據數據塊的指紋實現對重複數據的識別。在數據備份時,對於重複的數據塊直接引用,並修改元數據中的引用計數,否則保存新的數據塊並記錄其指紋信息。
[0004]現有技術中,在應用重複數據刪除技術進行數據備份時,每條備份數據流佔用一個線程直至該數據流備份完成,該方法中單個線程CPU運算不夠充分,導致重複數據刪除性能無法提升。

【發明內容】

[0005]本發明實施例中提供了一種數據處理方法及重刪引擎,能夠高效利用CPU,提升重複數據刪除性能。
[0006]為了解決上述技術問題,本發明實施例公開了如下技術方案:
[0007]第一方面,提供一種數據處理方法,所述方法應用於數據備份系統,所述數據備份系統包括重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立至少兩個線程;所述重刪引擎將數據查重任務劃分為至少一個子任務,所述方法包括:
[0008]所述重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;
[0009]釋放調取的所述至少一個線程;
[0010]並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0011]結合上述第一方面,在第一種可能的實現方式中,所述方法還包括:
[0012]所述存儲節點調取所述線程池中的一個線程對所述第一文件的數據進行存儲;
[0013]存儲結束後,釋放所述存儲節點調取的所述線程。
[0014]結合上述第一方面,和/或第一種可能的實現方式,在第二種可能的實現方式中,所述重刪引擎將數據查重任務劃分為至少一個子任務,包括:
[0015]所述重刪引擎將所述數據查重任務劃分為三個子任務,所述三個子任務依次為數據分塊子任務、指紋計算子任務和重複塊查詢子任務;
[0016]所述重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,包括:
[0017]所述重刪引擎對輸入第一線程的所述第一文件的數據執行所述數據分塊子任務,並輸出處理後數據至第二線程,在所述第二線程對所述第一線程處理後的數據執行所述指紋計算子任務,並輸出處理後數據至所述第三線程,在所述第三線程對所述第二線程處理後的數據執行所述重複塊查詢子任務,其中,所述第一線程、第二線程和第三線程分別為所述線程池中的任意一個線程。
[0018]結合上述第一方面,和/或第一種可能的實現方式,和/或第二種可能的實現方式,在第三種可能的實現方式中,所述重刪引擎調取所述線程池中的一個線程對所述第一文件的數據執行所述數據查重任務中的一個子任務的過程包括:
[0019]所述重刪引擎生成子任務,並將所述子任務添加至所述子任務對應的任務隊列;
[0020]當所述任務隊列中的所述子任務被調度執行時,調取所述線程池中的一個線程執行所述子任務,並在所述子任務完成後釋放所述子任務佔用的線程;
[0021]其中,所述子任務為所述數據分塊子任務、指紋計算子任務和重複塊查詢子任務中的任一子任務。
[0022]第二方面,提供一種重刪引擎,所述重刪引擎應用於數據備份系統,所述數據備份系統包括所述重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立有至少兩個線程;所述重刪引擎包括:
[0023]劃分單元,用於將數據查重任務劃分為至少一個子任務;
[0024]線程處理單元,用於調取所述線程池中的至少一個線程;在查重單元執行所述數據查重任務包含的子任務後,釋放調取的所述至少一個線程;
[0025]所述查重單元,用於佔用所述線程處理單元調取的線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;
[0026]數據發送單元,用於當所述查重單元沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0027]結合上述第二方面,在第一種可能的實現方式中,所述劃分單元,具體用於將所述數據查重任務劃分為三個子任務,所述三個子任務依次為數據分塊子任務、指紋計算子任務和重複塊查詢子任務;
[0028]所述查重單元,具體用於對輸入第一線程的所述第一文件的數據執行所述數據分塊子任務,並輸出處理後數據至第二線程,在所述第二線程對所述第一線程處理後的數據執行所述指紋計算子任務,並輸出處理後數據至所述第三線程,在所述第三線程對所述第二線程處理後的數據執行所述重複塊查詢子任務,其中,所述第一線程、第二線程和第三線程分別為所述線程池中的任意一個線程。
[0029]結合上述第二方面,和/或第一種可能的實現方式,在第二種可能的實現方式中,所述查重單元包括:
[0030]生成子單元,用於生成子任務,並將所述子任務添加至所述子任務對應的任務隊列;
[0031]執行子單元,用於當所述任務隊列中的所述子任務被調度執行時,佔用所述線程處理單元調取的所述線程池中的一個線程執行所述子任務;
[0032]所述線程處理單元,具體用於在所述子任務完成後釋放所述子任務佔用的線程;
[0033]其中,所述子任務為所述數據分塊子任務、指紋計算子任務和重複塊查詢子任務中的任一子任務。
[0034]結合上述第二方面,和/或第一種可能的實現方式,和/或第二種可能的實現方式,在第三種可能的實現方式中,
[0035]第三方面,還提供一種數據備份系統,包括重刪引擎和存儲節點,其中,所述數據備份系統預先在線程池中建立有至少兩個線程;
[0036]所述重刪引擎,用於將數據查重任務劃分為至少一個子任務,調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;釋放調取的所述至少一個線程;並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0037]結合上述第三方面,在第一種可能的實現方式中,所述存儲節點,用於調取所述線程池中的一個線程對所述第一文件的數據進行存儲;存儲結束後,釋放所述存儲節點調取的所述線程。
[0038]第四方面,還提供一種重刪引擎,所述重刪引擎應用於數據備份系統,所述數據備份系統包括重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立有至少兩個線程;所述重刪引擎包括處理器和存儲器;
[0039]所述存儲器中存儲有一段程序代碼,所述處理器用於讀取所述存儲器中的程序代碼,並執行以下步驟:
[0040]將數據查重任務劃分為至少一個子任務;
[0041]調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;
[0042]釋放調取的所述至少一個線程;
[0043]並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0044]本發明實施例通過將主要消耗CPU資源的數據查重任務獨立佔用至少一個線程,從而在進行數據備份時,避免了線程長時間等待IO返回,在對某一數據佔用一線程執行存儲任務時,可以對另一數據佔用另一線程執行數據查重任務,從而實現了對CPU充分高效的利用,以及對重複數據刪除性能的提升。
【專利附圖】

【附圖說明】
[0045]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對於本領域普通技術人員而言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0046]圖1為本發明實施例一種數據處理的方法流程圖;
[0047]圖2為本發明實施例另一種數據處理的方法流程圖;
[0048]圖3為本發明實施例中對第一文件數據進行數據分塊的方法流程圖;
[0049]圖4為本發明實施例中對第一數據塊進行指紋計算的方法流程圖;
[0050]圖5為本發明實施例中對第一數據塊的指紋信息進行查重的方法流程圖;
[0051]圖6為本發明實施例一種重刪引擎的結構示意圖;[0052]圖7為本發明實施例中查重單元的結構示意圖。
【具體實施方式】
[0053]為了使本【技術領域】的人員更好地理解本發明實施例中的技術方案,並使本發明實施例的上述目的、特徵和優點能夠更加明顯易懂,下面結合附圖對本發明實施例中技術方案作進一步詳細的說明。
[0054]現有技術中,數據流的備份包含重複數據刪除過程以及數據存儲過程,其中,重複數據刪除過程也即數據查重包括數據分塊、指紋計算和查重(查詢重複數據)子流程,數據存儲包括對去重後的數據下盤存儲的子流程。每條備份數據流佔用一個線程直至該數據流備份完成。在備份過程中,重複數據刪除過程中的數據分塊、指紋計算和查重(查詢重複數據)三個子流程消耗主要的CPU資源,而對去重後的數據下盤存儲的子流程幾乎不消耗CPU資源,然而,在對去重後的數據下盤存儲的子流程佔了整個數據備份流程的較多時間,在該存儲過程中CPU幾乎閒置,因此,採用如此按照每條備份流佔用一個線程直至該流備份完成的方法,會使得線程長時間等待IO返回,CPU使用不充分,導致重複數據刪除性能無法提升,尤其是在高並發備份的場景下以上問題更為突出,會導致並發度不足,影響整體備份性能,且備份性能不能做到按預期的線性度提升的問題。
[0055]基於此,本發明實施例提供了一種新的數據處理方法及重刪引擎,通過將主要消耗CPU資源的數據查重任務獨立佔用至少一個線程,從而可以充分高效的利用CPU,增強任務間並發能力,提升了重複數據刪除性能。
[0056]參見圖1,為本發明實施例一種數據處理方法流程圖。
[0057]本發明實施例應用於數據備份系統,該數據備份系統包括重刪引擎和存儲節點;其中,數據備份系統預先在線程池中建立至少兩個線程,該數據處理方法可以包括:
[0058]步驟101,重刪引擎將數據查重任務劃分為至少一個子任務。
[0059]重刪引擎可以將數據查重任務劃分為三個子任務,該三個子任務依次為數據分塊子任務、指紋計算子任務和重複塊查詢子任務。
[0060]其中,數據分塊即將數據進行分塊獲得一個或多個數據塊,指紋計算即對一個或多個數據塊分別進行指紋計算獲得每個數據塊的指紋信息,查重即查詢各存儲節點中是否與各數據塊的指紋信息相同的指紋信息。本發明實施例中數據分塊、指紋計算和查重的方法分別與現有技術中的數據分塊、指紋計算和查重方法相同,此處不再贅述。該步驟無需在每次對數據進行處理時重複執行,可以在將數據重刪任務劃分成上述三個子任務後,對每個需要進行處理的數據依次執行上述子任務。
[0061]當然,在其它實施例中,該重刪引擎還可以將數據重刪任務劃分為其它子任務,例如,還可以包括網絡互連子任務等,不局限於上述三個子任務。
[0062]步驟102,重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據。
[0063]當線程池中具有空閒線程時,重刪引擎即可調取至少一個線程對需要進行數據處理的第一文件的數據執行數據查重任務,其中,第一文件的數據僅為舉例,並非限定或特指。[0064]該數據查重任務所包含的子任務可以佔用一個線程,也可以佔用多個線程,例如,數據查重任務中的數據分塊、指紋計算和查重三個子任務共佔用一個線程,或者數據分塊和指紋計算兩個子任務佔用一個線程,查重子任務佔用另一個線程,或者數據分塊、指紋計算和查重三個子任務各自佔用一個線程,對於同一備份數據的數據分塊、指紋計算、查重以及存儲需要順序執行。對於非同一備份數據,上述子任務可以並行執行。
[0065]在另一實施例中,若數據分塊、指紋計算和查重三個子任務各自佔用一個線程,則該重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,具體可以包括:
[0066]重刪引擎對輸入第一線程的所述第一文件的數據執行所述數據分塊子任務,並輸出處理後數據至第二線程,在所述第二線程對所述第一線程處理後的數據執行所述指紋計算子任務,並輸出處理後數據至所述第三線程,在所述第三線程對所述第二線程處理後的數據執行所述重複塊查詢子任務,其中,所述第一線程、第二線程和第三線程分別為所述線程池中的任意一個線程。
[0067]在具體執行某一子任務時,該重刪引擎具體可以執行以下過程:
[0068]重刪引擎生成子任務,並將所述子任務添加至所述子任務對應的任務隊列;
[0069]當所述任務隊列中的所述子任務被調度執行時,調取所述線程池中的一個線程執行所述子任務,並在所述子任務完成後釋放所述子任務佔用的線程;
[0070]其中,所述子任務可以是數據分塊子任務、指紋計算子任務和重複塊查詢子任務中的任一子任務。
[0071]在對第一文件的數據執行數據查重任務,查詢存儲節點是否存在第一文件的數據的重複數據後,無論結果如何,均執行步驟103,並在沒有查詢到第一文件的數據的重複數據時,執行步驟104。
[0072]步驟103,釋放調取的所述至少一個線程。
[0073]在數據查重任務包含的所有子任務完成後,無論是否在各存儲節點查詢到第一文件的數據的重複數據,均釋放數據查重任務佔用的線程。由於數據查重為主要消耗CPU資源的過程,而後續存儲過程中CPU幾乎閒置,所以,通過讓數據查重佔用的線程與後續存儲子任務佔用的線程相互獨立,可以使得在對第二文件的數據進行備份,尤其是對第二文件的數據執行數據查重任務時,可以復用對第一文件的數據執行數據查重任務後所釋放的線程,從而避免CPU的閒置,實現充分高效的利用CPU。
[0074]步驟104,當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0075]當查詢到第一文件數據的重複數據時,例如,在各存儲節點查詢不到與第一文件數據的任一數據塊的指紋信息相同的指紋信息時,或者,只查詢到與第一文件數據的部分數據塊的指紋信息相同的指紋信息時,將沒有查詢到的第一文件數據的數據塊及其指紋信息發送到存儲節點進行存儲。若查詢到與第一文件數據的所有數據塊的指紋信息完全相同的指紋信息時,不再存儲第一文件的數據,直接修改已存儲的第一文件數據的重複數據的引用計數。
[0076]在存儲節點進行存儲時執行步驟105?106。
[0077]步驟105,存儲節點調取所述線程池中的一個線程對所述第一文件的數據進行存儲。
[0078]在具體的存儲過程中,當線程池中存在空閒線程時,即可調取線程存儲各存儲節點中不存在的所有第一文件數據的數據塊及其指紋信息。
[0079]步驟106,存儲結束後,釋放所述存儲節點調取的所述線程。
[0080]本發明實施例通過將主要消耗CPU資源的數據查重任務和幾乎不消耗CPU資源的數據存儲任務分別通過相互獨立的線程執行,這樣在對第一文件的數據執行數據查重任務後即可釋放其佔用的線程,在對第一文件的數據採用另一線程執行數據存儲任務時,可以復用數據查重任務釋放的線程對其他數據進行備份,尤其是對其他數據執行數據查重任務,這樣就可以避免CPU的閒置,避免線程長時間等待IO返回,從而實現了對CPU充分高效的利用,以及對重複數據刪除性能的提升。
[0081]參見圖2,為本發明實施例另一種數據處理的方法流程圖。
[0082]該方法可以包括:
[0083]步驟201,將第一文件的數據寫入緩衝區,並對第一文件的數據進行分塊獲得至少
一個第一數據塊。
[0084]本發明實施例中可以在系統中預先建立一個線程池,在沒有待執行任務前,所有線程空閒,等待調度。將數據備份過程劃分為多個獨立的子任務,由多線程執行,每個子任務對應一個隊列,如數據分塊、指紋計算、查重和存儲。其中,數據查重任務中包含的子任務包括數據分塊、指紋計算、查重,數據存儲任務中包含存儲子任務。
[0085]在對第一文件數據的備份任務啟動時,首先將第一文件的數據寫入緩衝區中,寫入緩衝區成功後,如圖3所示,執行以下步驟:
[0086]步驟301,對第一文件數據生成第一分塊任務,並將第一分塊任務添加至分塊任務隊列。
[0087]步驟302,當分塊任務隊列中的第一分塊任務被調度執行時,所述第一分塊任務佔用一個線程,對第一文件數據分塊獲得至少一個第一數據塊,並釋放第一分塊任務佔用的線程。
[0088]例如,可以首先將待備份的第一文件數據固定組織成小於等於9MB大小的大塊數據,然後對上述9MB數據執行步驟302,劃分為4?12K大小的第一數據塊。具體的,可以採用現有的定長或變長分塊算法對第一數據進行分塊。當然,上述「9MB」及「4?12K」僅是舉例,具體大小數值可以根據需要設置。在分塊完成後,或在釋放第一分塊任務佔用的線程後,執行步驟202。
[0089]步驟202,對所述至少一個第一數據塊進行指紋計算,獲得所述至少一個第一數據塊的指紋信息。
[0090]分別對第一數據塊進行指紋計算,獲得各第一數據塊的指紋信息。如圖4所示,該過程可以包括:
[0091]步驟401,對所述至少一個第一數據塊生成第一指紋計算任務,並將第一指紋計算任務添加至指紋計算任務隊列。
[0092]步驟402,當指紋計算任務隊列中第一指紋計算任務被調度執行時,所述第一指紋計算任務佔用一個線程,對所述至少一個第一數據塊進行指紋計算,獲得所述至少一個第一數據塊的指紋信息,並釋放第一指紋計算任務佔用的線程。[0093]具體的,可以採用如SHA1、MD5等強哈希(hash)算法對一個或多個第一數據塊分別進行指紋計算,在計算完成後,或在釋放第一指紋計算任務佔用的線程後,執行步驟203。
[0094]步驟203,在各存儲節點查詢是否存在至少一個與所述第一數據塊的指紋信息重複的指紋信息。
[0095]查詢各存儲節點是否存在與一個或多個第一數據塊的指紋信息相同的指紋信息,如圖5所示,該過程進一步包括:
[0096]步驟501,對所述至少一個第一數據塊的指紋信息生成第一重複塊查詢任務,並將第一重複塊查詢任務添加至查詢任務隊列。
[0097]步驟502,當查詢任務隊列中第一重複塊查詢任務被調度執行時,所述第一重複塊查詢任務佔用一個線程,在各節點查詢是否存在至少一個與第一數據塊的指紋信息重複的指紋信息,並在查詢完成後釋放第一重複塊查詢任務佔用的線程。
[0098]在上述查重過程中,為了便於快速查找重複的指紋信息,還可以執行以下過程:
[0099]首先,當連續的第一數據塊大小累加最接近或達到IMB的時候,則認為當前該部分連續的第一數據塊屬於一個segment,然後在該segment的各第一數據塊的指紋信息中選擇最小的指紋信息作為該segment的segment id ;後續對其他第一數據塊依次按照上述過程劃分,該過程即為segment劃分。
[0100]按照上述segment劃分,備份進入的9MB數據必然會有9個Segment id。(後續經過重刪存到磁碟上的單一實例也可以按照小於等於9MB的大小進行組織稱為一個容器(Container),每個Container也包含9個Segment id。當然,容器的大小不一定為9MB,其大小也可以根據實際情況進行設定。)
[0101]在步驟502進行查重時,將備份進來的9MB數據的Segment id與各節點容器中存儲的Segment id全集做相似性分析,選出命中Segment id個數最高的6個容器,並在這6個容器中進行重複塊查詢。若各節點無符合的容器,則不會加載任何的容器進行查重,僅在本次9MB (或其他大小)的數據內部進行查重。
[0102]前面的劃分segment的個數以及查重選中的容器個數,如前述的6個容器,不做限制,可根據具體的實現進行調整,不是固定不變的值。其中,容器的個數可以減少或增加,只需保證小於等於segment的個數即可。上述方法主要目的是減小查重的範圍,將查重的範圍縮小到我們可接受的範圍內。當然也可以取消這個Segment id,直接做全局的數據塊的指紋信息的查重。
[0103]若在某存儲節點查詢到重複的第一數據塊的指紋信息,則直接修改已存儲的重複的第一數據塊的指紋信息的引用計數。對於沒有查詢到重複指紋信息的第一數據塊的指紋信息,執行步驟204。
[0104]步驟204,存儲各存儲節點中不存在的第一數據塊及其指紋信息,完成備份。
[0105]具體的,可以是生成第一存儲任務,並將該第一存儲任務添加至存儲任務隊列,當該存儲任務隊列中的第一存儲任務被調度執行時,第一存儲任務佔用一個線程,對各節點中均不存在的第一數據塊及其指紋信息進行存儲,並可更新對應的文件元數據信息。在存儲完成後,釋放第一存儲任務所佔用的線程,完成備份。
[0106]該方法在進行數據備份時,避免了線程長時間等待IO返回,在對某一數據佔用一線程執行存儲任務時,可以對另一數據調用另一線程執行數據分塊、指紋計算或重查任務,從而實現了對CPU充分高效的利用,以及對重複數據刪除性能的提升。在多並發備份流時,可以最快的將行,提升並發備份性能。
[0107]例如:多個用戶在同一時間段內備份文件,則會存在多個備份任務處於不同的重刪過程的情況,如A文件在數據分塊,B文件在寫磁碟保存單一實例數據,C文件在計算指紋,D文件在寫磁碟保存單一實例數據,E、F文件待啟動備份,若採用現有技術方法,則會導致B文件和D文件佔用的線程處於空閒等待寫磁碟的IO返回狀態,但CPU資源無法釋放給其他需要CPU運算的任務使用,導致E文件必須等到A?D其中一個任務完成後才可以開始備份;而採用本發明實施例的方法,在B和D文件開始寫盤操作後,該IO操作交由文件系統處理,而B和D文件佔用的線程得以釋放,同時可以發現E、F文件急需進行分塊、計算指紋等操作,因此可以即刻啟動備份操作,從而使整體系統呈流水線方式工作,使吞吐量提升,達到提升備份性能的目的。
[0108]以上是對本發明方法實施例的描述,下面對實現上述方法的裝置進行介紹。
[0109]參見圖6,為本發明實施例一種重刪引擎的結構示意圖。
[0110]該重刪引擎應用於數據備份系統,所述數據備份系統包括所述重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立有至少兩個線程。該重刪引擎可以包括:
[0111]劃分單元601,用於將數據查重任務劃分為至少一個子任務;
[0112]線程處理單元602,用於調取所述線程池中的至少一個線程;在查重單元603執行所述數據查重任務包含的子任務後,釋放調取的所述至少一個線程;
[0113]查重單元603,用於佔用所述線程處理單元602調取的線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;
[0114]數據發送單元604,用於當所述查重單元603沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0115]在劃分單元601將數據查重任務劃分為至少一個子任務後,線程處理單元602調取所述線程池中的至少一個線程,由查重單元603佔用所述線程處理單元調取的線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據,在查重單元603執行所述數據查重任務包含的子任務後,線程處理單元603釋放調取的所述至少一個線程,並當所述查重單元603沒有查詢到所述第一文件的數據的重複數據時,數據發送單元604將所述第一文件的數據發送到所述存儲節點進行存儲。
[0116]本發明實施例通過上述單元將主要消耗CPU資源的數據查重任務佔用獨立的線程,從而在進行數據備份時,避免了線程長時間等待IO返回,在對某一數據佔用一線程執行第二階段任務時,可以對另一數據佔用另一線程執行第一階段任務,從而實現了對CPU充分高效的利用,以及對重複數據刪除性能的提升。
[0117]在本發明的另一實施例中,所述劃分單元,具體用於將所述數據查重任務劃分為三個子任務,所述三個子任務依次為數據分塊子任務、指紋計算子任務和重複塊查詢子任務;所述查重單元,具體用於對輸入第一線程的所述第一文件的數據執行所述數據分塊子任務,並輸出處理後數據至第二線程,在所述第二線程對所述第一線程處理後的數據執行所述指紋計算子任務,並輸出處理後數據至所述第三線程,在所述第三線程對所述第二線程處理後的數據執行所述重複塊查詢子任務,其中,所述第一線程、第二線程和第三線程分別為所述線程池中的任意一個線程。
[0118]在另一實施例中,如圖7所示,該查重單元603可以進一步包括:
[0119]生成子單元701,用於生成子任務,並將所述子任務添加至所述子任務對應的任務隊列;
[0120]執行子單元702,用於當所述任務隊列中的所述子任務被調度執行時,佔用所述線程處理單元調取的所述線程池中的一個線程執行所述子任務;
[0121]所述線程處理單元,具體用於在所述子任務完成後釋放所述子任務佔用的線程;
[0122]其中,所述子任務為所述數據分塊子任務、指紋計算子任務和重複塊查詢子任務中的任一子任務。
[0123]本發明實施例還提供了另一種重刪引擎,該重刪引擎應用於數據備份系統,所述數據備份系統包括重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立有至少兩個線程;所述重刪引擎包括處理器和存儲器;
[0124]其中,存儲器中存儲有一段程序代碼,處理器用於讀取該程序代碼,執行以下步驟:
[0125]將數據查重任務劃分為至少一個子任務;
[0126]調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;
[0127]釋放調取的所述至少一個線程;
[0128]並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0129]本發明實施例還提供了一種數據備份系統,包括重刪引擎和存儲節點,其中,所述數據備份系統預先在線程池中建立有至少兩個線程;
[0130]重刪引擎,用於將數據查重任務劃分為至少一個子任務,調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;釋放調取的所述至少一個線程;並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
[0131]在另一實施例中,存儲節點,用於調取所述線程池中的一個線程對所述第一文件的數據進行存儲;存儲結束後,釋放所述存儲節點調取的所述線程。
[0132]本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、或者計算機軟體和電子硬體的結合來實現。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
[0133]所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
[0134]在本申請所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0135]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
[0136]另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
[0137]所述功能如果以軟體功能單元的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)或處理器(processor)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(R0M,Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光碟等各種可以存儲程序代碼的介質。
[0138]以上所述,僅為本發明的【具體實施方式】,但本發明的保護範圍並不局限於此,任何熟悉本【技術領域】的技術人員在本發明揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應所述以權利要求的保護範圍為準。
【權利要求】
1.一種數據處理方法,其特徵在於,所述方法應用於數據備份系統,所述數據備份系統包括重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立至少兩個線程;所述重刪引擎將數據查重任務劃分為至少一個子任務,所述方法包括: 所述重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據; 釋放調取的所述至少一個線程; 並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
2.根據權利要求1所述的方法,其特徵在於,所述方法還包括: 所述存儲節點調取所述線程池中的一個線程對所述第一文件的數據進行存儲; 存儲結束後,釋放所述存儲節點調取的所述線程。
3.根據權利要求1或2所述的方法,其特徵在於,所述重刪引擎將數據查重任務劃分為至少一個子任務,包括: 所述重刪引擎將所述數據查重任務劃分為三個子任務,所述三個子任務依次為數據分塊子任務、指紋計算子任務和重複塊查詢子任務; 所述重刪引擎調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,包括: 所述重刪引擎對輸入第一線程的所述第一文件的數據執行所述數據分塊子任務,並輸出處理後數據至第二線程,在所述第二線程對所述第一線程處理後的數據執行所述指紋計算子任務,並輸出處理後數據至所述第三線程,在所述第三線程對所述第二線程處理後的數據執行所述重複塊查詢子任務,其中,所述第一線程、第二線程和第三線程分別為所述線程池中的任意一個線程。
4.根據權利要求3所述的方法,其特徵在於,所述重刪引擎調取所述線程池中的一個線程對所述第一文件的數據執行所述數據查重任務中的一個子任務的過程包括: 所述重刪引擎生成子任務,並將所述子任務添加至所述子任務對應的任務隊列; 當所述任務隊列中的所述子任務被調度執行時,調取所述線程池中的一個線程執行所述子任務,並在所述子任務完成後釋放所述子任務佔用的線程; 其中,所述子任務為所述數據分塊子任務、指紋計算子任務和重複塊查詢子任務中的任一子任務。
5.一種重刪引擎,其特徵在於,所述重刪引擎應用於數據備份系統,所述數據備份系統包括所述重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立有至少兩個線程;所述重刪引擎包括: 劃分單元,用於將數據查重任務劃分為至少一個子任務; 線程處理單元,用於調取所述線程池中的至少一個線程;在查重單元執行所述數據查重任務包含的子任務後,釋放調取的所述至少一個線程; 所述查重單元,用於佔用所述線程處理單元調取的線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據; 數據發送單元,用於當所述查重單元沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
6.根據權利要求5所述的重刪引擎,其特徵在於, 所述劃分單元,具體用於將所述數據查重任務劃分為三個子任務,所述三個子任務依次為數據分塊子任務、指紋計算子任務和重複塊查詢子任務; 所述查重單元,具體用於對輸入第一線程的所述第一文件的數據執行所述數據分塊子任務,並輸出處理後數據至第二線程,在所述第二線程對所述第一線程處理後的數據執行所述指紋計算子任務,並輸出處理後數據至所述第三線程,在所述第三線程對所述第二線程處理後的數據執行所述重複塊查詢子任務,其中,所述第一線程、第二線程和第三線程分別為所述線程池中的任意一個線程。
7.根據權利要求6所述的重刪引擎,其特徵在於,所述查重單元包括: 生成子單元,用於生成子任務,並將所述子任務添加至所述子任務對應的任務隊列; 執行子單元,用於當所述任務隊列中的所述子任務被調度執行時,佔用所述線程處理單元調取的所述線程池中的一個線程執行所述子任務; 所述線程處理單元,具體用於在所述子任務完成後釋放所述子任務佔用的線程; 其中,所述子任務為所述數據分塊子任務、指紋計算子任務和重複塊查詢子任務中的任一子任務。
8.一種數據備份系統,其特徵在於,包括重刪引擎和存儲節點,其中,所述數據備份系統預先在線程池中建立有至少兩個線程;` 所述重刪引擎,用於將數據查重任務劃分為至少一個子任務,調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據;釋放調取的所述至少一個線程;並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
9.根據權利要求8所述的系統,其特徵在於, 所述存儲節點,用於調取所述線程池中的一個線程對所述第一文件的數據進行存儲;存儲結束後,釋放所述存儲節點調取的所述線程。
10.一種重刪引擎,其特徵在於,所述重刪引擎應用於數據備份系統,所述數據備份系統包括重刪引擎和存儲節點;其中,所述數據備份系統預先在線程池中建立有至少兩個線程;所述重刪引擎包括處理器和存儲器; 所述存儲器中存儲有一段程序代碼,所述處理器用於讀取所述存儲器中的程序代碼,並執行以下步驟: 將數據查重任務劃分為至少一個子任務; 調取所述線程池中的至少一個線程對第一文件的數據執行所述數據查重任務包含的子任務,以查詢所述存儲節點是否存在所述第一文件的數據的重複數據; 釋放調取的所述至少一個線程; 並當沒有查詢到所述第一文件的數據的重複數據時,將所述第一文件的數據發送到所述存儲節點進行存儲。
【文檔編號】G06F17/30GK103488734SQ201310425874
【公開日】2014年1月1日 申請日期:2013年9月17日 優先權日:2013年9月17日
【發明者】付旭東 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀