新四季網

分布式存儲冗餘數據壓縮方法和系統、客戶端以及伺服器與流程

2023-04-23 23:17:41


本發明涉及分布式計算領域,特別涉及一種分布式存儲冗餘數據壓縮技術。



背景技術:

隨著雲計算相關技術在國內的廣泛應用,基於廉價硬體的分布式存儲在企業內外部數據處理中得到了廣泛應用。

為保證分布式存儲系統的整體可靠性,目前典型的分布式存儲在底層普遍採用數據冗餘存儲的方式,例如將一份數據存儲保留多個副本,且存儲在不同的主機上,用空間置換安全性的提升。基於底層提供的數據安全保障,從應用層面就不再需要對數據做冗餘處理。由於同樣的文件存儲了多份,分布式存儲上應用層數據的冗餘不僅會浪費計算資源和網絡資源,也會增加整體維護成本,需要對應用層冗餘數據進行必要的壓縮處理。

目前分布式存儲在應用層數據壓縮,通常採用先上傳、後剔重的方案,這一方案雖然也可以釋放冗餘數據佔據的存儲空間,但需要佔用通信網絡資源、且剔重操作集中在伺服器端,會降低整體效能。對於大體積文件來說,這一缺陷尤其明顯。



技術實現要素:

本發明實施例所要解決的一個技術問題是:先上傳後剔重的應用層數據壓縮方法存在的通信網絡資源浪費以及整體效能比較低的問題。

根據本發明實施例的一個方面,提供了一種分布式存儲冗餘數據壓縮方法,包括:客戶端將上傳數據打包成數據塊;客戶端生成數據塊的數據塊ID;客戶端將數據塊ID發送至伺服器,使伺服器判斷該數 據塊ID對應的數據塊是否已經存在;客戶端接收伺服器返回的該數據塊ID對應的數據塊是否已經存在響應;根據響應,如果該數據塊ID對應的數據塊已存在於伺服器,客戶端開始下一個數據塊的傳輸;如果該數據塊ID對應的數據塊不存在於伺服器,客戶端將該數據塊ID對應的數據塊傳輸至伺服器。

根據本發明實施例的另一個方面,提供了一種分布式存儲冗餘數據壓縮方法,包括:伺服器端接收客戶端發送的數據塊ID;伺服器端判斷該數據塊ID對應的數據塊是否已經存在;如果數據塊ID對應的數據塊已經存在,則伺服器端將數據塊ID已存在的信息反饋給客戶端;如果數據塊ID對應的數據塊不存在,則伺服器端通知客戶端上傳數據塊ID對應的數據塊,並在接收到數據塊ID對應的數據塊後,將數據塊ID記錄到已上傳數據塊列表中。

根據本發明實施例的又一個方面,提供了一種用於分布式存儲冗餘數據壓縮的客戶端,包括:數據塊打包單元,用於將上傳數據打包成數據塊;數據塊ID生成單元,用於生成數據塊的數據塊ID;數據塊ID發送單元,用於將數據塊ID發送至伺服器,使伺服器判斷該數據塊ID對應的數據塊是否已經存在;響應接收單元,用於接收伺服器返回的該數據塊ID對應的數據塊是否已經存在響應;數據塊傳輸單元,用於根據響應,如果該數據塊ID對應的數據塊已存在於伺服器,則開始下一個數據塊的傳輸;如果該數據塊ID對應的數據塊不存在於伺服器,則將該數據塊ID對應的數據塊傳輸至伺服器。

根據本發明實施例的再一個方面,提供了一種用於分布式存儲冗餘數據壓縮的伺服器,包括:數據塊ID接收單元,用於接收客戶端發送的數據塊ID;數據塊判斷單元,用於判斷該數據塊ID對應的數據塊是否已經存在;信息反饋單元,用於如果數據塊ID對應的數據塊已經存在,則信息反饋單元將數據塊ID已存在的信息反饋給客戶端;如果數據塊ID對應的數據塊不存在,則信息反饋單元通知客戶端上傳數據塊ID對應的數據塊;數據塊接收單元,用於接收數據塊ID對應的數據塊;數據塊ID記錄單元,用於在接收到數據塊ID對 應的數據塊後,將數據塊ID記錄到已上傳數據塊列表中。

根據本發明實施例的另一個方面,提供了一種分布式存儲冗餘數據壓縮系統,包括前述的客戶端以及前述的伺服器。

本發明至少具有以下優點:

通過客戶端和伺服器端的協作,目標數據在上傳伺服器前先判斷是否在伺服器端已經存在,如果存在則進行「預壓縮」,從而實現了對應用層冗餘數據的壓縮,減少對通信網絡資源和伺服器端資源的佔用,提升分布式存儲的整體效能。

通過以下參照附圖對本發明的示例性實施例的詳細描述,本發明的其它特徵及其優點將會變得清楚。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。

圖1示出根據本發明分布式存儲冗餘數據壓縮方法的一個實施例的流程示意圖。

圖2示出根據本發明分布式存儲冗餘數據壓縮方法的另一個實施例的流程示意圖。

圖3示出根據本發明分布式存儲冗餘數據壓縮方法的又一個實施例的流程示意圖。

圖4示出根據本發明分布式存儲冗餘數據壓縮客戶端的一個實施例的結構示意圖。

圖5示出根據本發明分布式存儲冗餘數據壓縮客戶端的另一個實施例的結構示意圖。

圖6示出根據本發明分布式存儲冗餘數據壓縮伺服器的一個實施例的結構示意圖。

圖7示出根據本發明分布式存儲冗餘數據壓縮伺服器的另一個實施例的結構示意圖。

具體實施方式

下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發明及其應用或使用的任何限制。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。

下面參考圖1描述本發明一個實施例的分布式存儲冗餘數據壓縮方法。

圖1示出根據本發明分布式存儲冗餘數據壓縮方法的一個實施例的流程示意圖。如圖1所示,該實施例的方法包括:

步驟S102,客戶端將上傳數據打包成數據塊。

一種示例性的方法,客戶端根據數據打包策略將上傳數據打包成數據塊。以基於體積的策略為例,客戶端比較上傳數據的體積與數據打包策略中設定的數據塊閾值體積X;若上傳數據的體積小於或等於X,則將上傳數據打包成一個數據塊,並且打包數據塊體積等於上傳數據體積;若上傳數據的體積大於X,則以體積X為單位對上傳數據進行分割,分割後不足X的部分進行填充處理,分割後的各部分上傳數據分別打包成一個數據塊。

例如,客戶端預先設定數據塊閾值體積為100兆比特。客戶端比較上傳數據的體積與數據打包策略中設定的數據塊閾值體積:若上傳數據的體積小於或等於100兆比特,則將上傳數據打包成一個數據塊,並且打包數據塊體積等於上傳數據體積;若上傳數據的體積大於100兆比特,則以體積100兆比特為單位對上傳數據進行分割,分割後不足100兆比特的部分進行填充處理,分割後的各部分上傳數據分別打包成一個數據塊。此外,數據打包策略中,除了包括數據塊分割填充 機制之外,還可以包括數據塊完整性校驗機制,以保證上傳數據塊的完整性。

步驟S104,客戶端根據數據塊ID生成策略生成數據塊的數據塊ID。

一種示例性的方法,客戶端根據數據塊體積生成數據塊ID。客戶端比較數據塊的體積與數據塊ID生成策略中設定的數據塊閾值體積Y;若數據塊的體積小於Y,則根據數據塊所在的源文件名、文件後綴、文件大小以及文件修改時間中的至少一項信息生成數據塊ID;若數據塊的體積等於或大於Y,則對數據塊採用消息摘要算法計算生成數據塊ID。此外,若數據塊體積小於等於Y,且數據塊所在的源文件名、文件後綴、文件大小以及文件修改時間都相同,則也可以根據配置對數據塊採用消息摘要算法計算生成數據塊ID。

典型的數據塊ID生成策略包括基於文件特徵的數據塊ID生成策略和基於消息摘要算法數據塊ID生成策略。

基於文件特徵的數據塊ID生成策略計算簡單,耗費的系統資源較少,但存在文件唯一性識別錯誤的風險。例如,對於小體積數據塊,可以採用「文件名+文件後綴名+文件大小+修改時間」作為打包數據塊的數據塊ID。但是,如果有多個不同數據塊的文件名、文件後綴名、文件大小以及修改時間均相同,那麼依照基於文件特徵的數據塊ID生成策略所生成的數據塊ID相同。

基於消息摘要算法的數據塊ID生成策略可以避免文件唯一性識別錯誤的發生,但其計算複雜,耗費的系統資源較多,通常可以適用於大體積數據塊。常見的基於消息摘要算法包括CRC32、MD5以及SHA算法。例如,通過MD5算法,不同的數據塊可以生成唯一的數據塊ID。

為了更好的提高分布式存儲冗餘數據壓縮效率,可以將基於文件特徵的數據塊ID生成策略和基於消息摘要算法的數據塊ID生成策略結合使用。例如,客戶端預先設定數據塊閾值體積100兆比特。然後,客戶端比較數據塊的體積與數據塊ID生成策略中設定的數據塊閾值 體積:若數據塊體積小於100兆比特,則免去生成數據塊ID的過程,直接採用「文件名+文件後綴名+文件大小+修改時間」作為打包數據塊的數據塊ID,並進行數據塊上傳;若數據塊的體積大於100兆比特,則對數據塊採用MD5算法計算生成數據塊ID。

此外,若多個數據塊體積小於100兆比特,且多個數據塊所在的源文件名、文件後綴、文件大小以及文件修改時間都相同,則也對這些數據塊採用消息摘要算法計算生成數據塊ID。

步驟S106,客戶端將數據塊ID發送至伺服器,相應的,伺服器端接收客戶端發送的數據塊ID。

步驟S108,伺服器判斷該數據塊ID對應的數據塊是否已經存在。

一種示例性的判斷方法,伺服器可以根據已上傳數據塊列表記錄的信息,判斷列表中是否有請求上傳的數據塊ID,如果有,則說明該數據塊已經上傳過,可以執行步驟S110進行「預壓縮」,如果沒有,則說明該數據塊還沒有上傳過,可以執行步驟S112進行數據塊的上傳。

步驟S110,如果伺服器判斷數據塊ID對應的數據塊已經存在,則伺服器端將數據塊ID已存在的信息反饋給客戶端,客戶端開始下一個數據塊的傳輸;

步驟S112,如果伺服器判斷數據塊ID對應的數據塊不存在,則伺服器端通知客戶端上傳數據塊ID對應的數據塊,客戶端將該數據塊ID對應的數據塊傳輸至伺服器,伺服器在接收到數據塊ID對應的數據塊後,將數據塊ID記錄到已上傳數據塊列表中。

其中,已上傳數據塊列表中記錄有已上傳的數據塊ID,還可以包括已上傳數據塊的存儲位置信息等內容。

上述方法通過客戶端和伺服器端的協作,目標數據在上傳伺服器前先判斷是否在伺服器端已經存在,如果存在則進行「預壓縮」,從而實現了對應用層冗餘數據的壓縮,並且減少對通信網絡資源和伺服器端資源的佔用,提升分布式存儲的整體效能。

圖2示出根據本發明分布式存儲冗餘數據壓縮方法的又一個實施例的流程示意圖。如圖2所示,在圖1所示實施例的基礎上,本實 施例的方法還包括:

步驟S201,在伺服器配置數據塊打包策略和數據塊ID生成策略,客戶端在對數據塊進行打包之前,從伺服器同步數據打包策略和數據塊ID生成策略,由每個客戶端對本地數據分別進行數據塊打包和數據塊ID的生成。

影響數據打包策略的參數可以包括數據體積、數據所有者、數據文件類別。基於同步參數,可以確定數據塊的打包策略。伺服器可以根據安全、性能和其他個性化要求,制定數據塊ID計算算法,標識其唯一性。

通過客戶端與伺服器同步數據塊打包策略,伺服器可以處理具有統一規格的數據塊,進一步提高了分布式存儲的整體效能。此外,由於數據塊ID是上傳數據的唯一標識,伺服器依據數據塊ID對數據塊作出是否需要「預壓縮」的判斷。如果伺服器和客戶端的數據塊ID生成策略不同,那麼有可能出現以下兩種情形:不同客戶端根據不同數據塊生成策略生成相同數據塊ID,伺服器端會錯誤的執行預壓縮;不同客戶端根據相同數據塊生成不同數據塊ID,伺服器端會錯誤的遺漏預壓縮。因此,作為一個優選的方案,伺服器和各個客戶端的數據塊ID生成策略相同,可以保證不同的數據塊具有其對應的不同數據塊ID。從而可以避免上述情形的發生,有助於預壓縮高效地、準確地進行。

圖3示出根據本發明分布式存儲冗餘數據壓縮方法的又一個實施例的流程示意圖。如圖3所示,在圖1所示實施例的基礎上,本實施例的方法還包括:步驟S307,客戶端將上傳數據所屬文件的文件名稱發送至伺服器,相應的,伺服器接收客戶端發送的上傳數據塊所屬文件的文件名稱。步驟S307可以與步驟S106同時執行。

在步驟S110或S112伺服器接收到客戶端上傳的數據塊之後,執行步驟S314,伺服器建立文件名稱與其數據塊的連接。

在該實施例中,伺服器端維護「文件名-數據塊ID」的有序連接,一個文件名可以對應一個或更多個數據塊ID。如果有多個數據塊,需要按先後順序存放。一個數據塊ID可以對應一到多個文件名,當 數據塊ID沒有對應的文件名時,該數據塊ID和數據塊本身可以刪除。基於文件名,根據數據塊ID按次序組合其對應的數據塊,則可以得到文件本身。

下面參考圖4描述本發明一個實施例的分布式存儲冗餘數據壓縮客戶端的結構。

圖4示出根據本發明分布式存儲冗餘數據壓縮客戶端的一個實施例的結構示意圖。如圖4所示,該實施例的客戶端40包括:

數據塊打包單元402,用於將上傳數據打包成數據塊;

數據塊ID生成單元404,用於生成數據塊的數據塊ID;

數據塊ID發送單元406,用於將數據塊ID發送至伺服器,使伺服器判斷該數據塊ID對應的數據塊是否已經存在;

響應接收單元408,用於接收伺服器返回的該數據塊ID對應的數據塊是否已經存在響應;

數據塊傳輸單元410,用於根據所述響應,如果該數據塊ID對應的數據塊已存在於伺服器,則開始下一個數據塊的傳輸;如果該數據塊ID對應的數據塊不存在於伺服器,則將該數據塊ID對應的數據塊傳輸至伺服器。

其中,數據塊打包單元402用於根據數據打包策略配置將上傳數據打包成數據塊,例如,比較上傳數據的體積與數據打包策略中設定的數據塊閾值體積X;根據數據打包策略,若上傳數據的體積小於或等於X,則將上傳數據打包成一個數據塊,並且打包數據塊體積等於上傳數據體積;若上傳數據的體積大於X,則以體積X為單位對上傳數據進行分割,分割後不足X的部分進行填充處理,分割後的各部分上傳數據分別打包成一個數據塊。

其中,數據塊ID生成單元404用於根據數據塊ID生成策略配置生成數據塊的數據塊ID,比較數據塊的體積與數據塊ID生成策略中設定的數據塊閾值體積Y;根據數據塊ID生成策略,若數據塊的體積小於Y,則根據數據塊所在的源文件名、文件後綴、文件大小以及文件修改時間中的至少一項信息生成數據塊ID,或者對數據塊採用消 息摘要算法計算生成數據塊ID;若數據塊的體積等於或大於Y,則對數據塊採用消息摘要算法計算生成數據塊ID。

其中,數據塊ID生成單元404用於根據數據塊ID生成策略,在數據塊體積小於等於Y,且數據塊所在的源文件名、文件後綴、文件大小以及文件修改時間都相同的情況下,則對數據塊採用消息摘要算法計算生成數據塊ID,以便檢查其是否在伺服器端已經存在。

下面參考圖5描述本發明另一個實施例的分布式存儲冗餘數據壓縮客戶端的結構。

圖5示出根據本發明分布式存儲冗餘數據壓縮客戶端的另一個實施例的結構示意圖。如圖5所示,該實施例的客戶端50還包括:

包括策略同步單元501,用於從伺服器同步數據打包策略和數據塊ID生成策略。

文件名發送單元509,用於將上傳數據所屬文件的文件名稱發送至伺服器,以便伺服器建立文件名稱與其數據塊的連接。

優選的,數據塊ID發送單元406與文件名發送單元509可以同步執行。

下面參考圖6描述本發明一個實施例的分布式存儲冗餘數據壓縮伺服器的結構。

圖6示出根據本發明分布式存儲冗餘數據壓縮伺服器的一個實施例的結構示意圖。如圖6所示,該實施例的伺服器60包括:

數據塊ID接收單元602,用於接收客戶端發送的數據塊ID.

數據塊判斷單元604,用於判斷該數據塊ID對應的數據塊是否已經存在。

信息反饋單元606,用於如果數據塊ID對應的數據塊已經存在,則信息反饋單元將數據塊ID已存在的信息反饋給客戶端;如果數據塊ID對應的數據塊不存在,則信息反饋單元通知客戶端上傳數據塊ID對應的數據塊。

數據塊接收單元608,用於接收數據塊ID對應的數據塊。

數據塊ID記錄單元610,用於在接收到數據塊ID對應的數據塊 後,將數據塊ID記錄到已上傳數據塊列表中。

下面參考圖7描述本發明另一個實施例的分布式存儲冗餘數據壓縮伺服器的結構。

圖7示出根據本發明分布式存儲冗餘數據壓縮伺服器的另一個實施例的結構示意圖。如圖7所示,該實施例的伺服器70還包括:

策略同步單元701,用於將數據打包策略和數據塊ID生成策略同步到各客戶端。

文件名接收單元709,用於接收客戶端發送的上傳數據塊所屬文件的文件名稱,並建立文件名稱與其數據塊的連接。

優選的,數據塊ID接收單元602與文件名接收單元709可以同步執行。

本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬體來完成,也可以通過程序來指令相關的硬體完成,所述的程序可以存儲於一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁碟或光碟等。

以上所述僅為本發明的較佳實施例,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀