一種數據處理方法及裝置的制造方法
【技術領域】
[0001] 本發(fā)明涉及計算機領域,尤其涉及一種數據處理方法及裝置。
【背景技術】
[0002] 傳統(tǒng)的網絡存儲系統(tǒng)將所有數據集中存儲在一臺設備中,而分布式存儲系統(tǒng)是指 將數據分散存儲在多臺獨立的設備上,在每臺獨立的設備上存儲數據的副本。GFS(G 〇〇gle File system,-種可擴展的分布式文件系統(tǒng))中的多副本讀寫采用WAR0(write all read one,寫所有副本,讀一份),一個寫請求在成功寫完數據到的所有副本后有效,若寫一份副 本失敗,則寫失敗。在由設備異常、網絡問題等情況導致寫副本失敗時,導致數據的副本不 一致,數據的寫性能差,無法確保數據的一致性。
【發(fā)明內容】
[0003] 本發(fā)明實施例提供一種數據處理方法及裝置??蓹z測到副本數據的不一致,且可 確定正確的副本數據,從而根據正確的副本數據進行業(yè)務處理,保證了數據的一致性。
[0004] 本發(fā)明第一方面提供一種數據處理方法,可包括:
[0005] 在接收到對目標數據的業(yè)務請求時,讀取所述目標數據的多份副本數據,其中,所 述多份副本數據為分別存儲在不同的存儲服務器中的副本數據;
[0006] 判斷所述目標數據的多份副本數據是否一致;
[0007] 在所述目標數據的多份副本數據不一致時,從所述目標數據的多份副本數據中確 定一份正確的副本數據;
[0008] 根據所述確定的正確的副本數據對所述目標數據的多份副本數據進行業(yè)務處理。
[0009] 本發(fā)明第二方面提供一種數據處理裝置,可包括:
[0010] 讀取模塊,用于在接收到對目標數據的業(yè)務請求時,讀取所述目標數據的多份副 本數據,其中,所述多份副本數據為分別存儲在不同的存儲服務器中的副本數據;
[0011] 判斷模塊,用于判斷所述目標數據的多份副本數據是否一致;
[0012] 確定模塊,用于在所述判斷模塊的判斷結果為否時,從所述目標數據的多份副本 數據中確定一份正確的副本數據;
[0013] 業(yè)務處理模塊,用于根據所述確定的正確的副本數據對所述目標數據的多份副本 數據進行業(yè)務處理。
[0014] 本發(fā)明第三方面提供一種訪問服務器,可包括如第二方面所述的裝置。
[0015] 實施本發(fā)明實施例,具有如下有益效果:
[0016] 在分布式存儲系統(tǒng)中,目標數據的多份副本數據可分別在不同的存儲服務器中, 在接收到對目標數據的業(yè)務請求時,讀取目標數據的多份副本數據,在判斷到目標數據的 多份副本數據不一致時,從目標數據的多份副本數據中確定一份正確的副本數據,進而可 根據正確的副本數據對目標數據的多份副本數據進行業(yè)務處理。通過本發(fā)明實施例,可檢 測到副本數據的不一致,且可確定正確的副本數據,從而根據正確的副本數據進行業(yè)務處 理,保證了數據的一致性,提高了數據的讀寫性能。
【附圖說明】
[0017] 為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據這些附圖獲得其他的附圖。
[0018] 圖1為本發(fā)明實施例提供的一種數據處理方法的流程圖;
[0019] 圖2為本發(fā)明實施例提供的寫副本數據的示意圖;
[0020] 圖3為本發(fā)明實施例提供的修復副本數據的示意圖;
[0021] 圖4為本發(fā)明實施例提供的搬遷副本數據的示意圖;
[0022] 圖5為本發(fā)明實施例提供的一種數據處理裝置的結構示意圖;
[0023] 圖6為本發(fā)明實施例提供的一種訪問服務器的結構示意圖;
[0024] 圖7為本發(fā)明實施例提供的一種數據處理系統(tǒng)的示意圖。
【具體實施方式】
[0025] 下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。
[0026] 本發(fā)明實施例提供的數據處理方案可以應用于分布式存儲系統(tǒng)中對數據的讀、寫 或搬遷等業(yè)務操作,可包括客戶端(client)、訪問服務器(access server)以及存儲服務 器,進一步的,還可以包括:修復服務器或搬遷服務器。進一步的,還可以包括分布式管理單 J Li 〇
[0027] 具體的,目標數據的多份副本數據可分別存儲于不同的存儲服務器中,可部署多 個存儲服務器,其中,存儲服務器用于數據的磁盤存儲,可接收并處理訪問服務器發(fā)送的數 據訪問請求。
[0028] 訪問服務器可控制數據的讀取、更新和修復流程,訪問服務器可轉發(fā)客戶端的請 求,進行路由查找以及訪問流程控制。
[0029] 訪問服務器在目標數據的多份副本數據不一致時,向修復服務器提交該目標數據 的數據標識,從而修復服務器可對副本數據不一致的目標數據的數據標識進行管理。
[0030] 搬遷服務器用于在存儲服務器存在異?;蛘邤U容等情況時,控制將存儲服務器上 的數據搬遷到其他存儲服務器中。
[0031] 分布式管理單元用于管理存儲的數據和數據的路由信息等。
[0032] 現有技術的分布式文件系統(tǒng)中在由設備異常、網絡問題等情況導致寫副本失敗 時,導致數據的副本不一致,數據的寫性能差,沒有對副本數據的一致性進行檢測,無法確 保數據的一致性。
[0033] 本發(fā)明實施例中,副本數據不一致的出現原因例如,當目標數據的多份副本數據 中出現部分副本數據離線,例如設備異常網絡問題等情況時,導致部分副本數據更新失敗, 則會出現副本數據的不一致;又當業(yè)務請求在不同的訪問服務器上出現并發(fā)訪問時,比如 某個訪問服務器壞死、過載時,客戶端切換部分業(yè)務請求道新擴容的訪問服務器上,并發(fā)更 新相同的副本數據,導致副本數據不一致。
[0034] 而本發(fā)明實施例中,在分布式存儲系統(tǒng)中,目標數據的多份副本數據可分別在不 同的存儲服務器中,在接收到對目標數據的業(yè)務請求時,讀取目標數據的多份副本數據,在 判斷到目標數據的多份副本數據不一致時,從目標數據的多份副本數據中確定一份正確的 副本數據,進而可根據正確的副本數據對目標數據的多份副本數據進行業(yè)務處理。通過本 發(fā)明實施例,可檢測到副本數據的不一致,且可確定正確的副本數據,從而根據正確的副本 數據進行業(yè)務處理,保證了數據的一致性,提高了數據的讀寫性能。
[0035] 下面將結合附圖1~附圖4,對本發(fā)明實施例提供的數據處理方法進行詳細介紹。
[0036] 請參見圖1,為本發(fā)明實施例提供的一種數據處理方法的流程圖,本發(fā)明實施例以 訪問服務器作為執(zhí)行主體進行描述。如圖1所示,該方法可包括以下步驟:S101~S104。
[0037] S101,在接收到對目標數據的業(yè)務請求時,讀取目標數據的多份副本數據,其中, 多份副本數據為分別存儲在不同的存儲服務器中的副本數據。
[0038] 作為一種可選的實施方式,訪問服務器可接收客戶端發(fā)送的對目標數據的業(yè)務請 求,其中,對目標數據的業(yè)務請求可包括:讀數據請求、寫數據請求或更新數據請求等等。 進一步的,業(yè)務請求可包括目標數據的數據標識,其中,目標數據的數據標識可以為目標數 據在存儲時用于唯一標識目標數據的鍵值、流水號、字符串等,具體不受本發(fā)明實施例的限 制。
[0039] 進一步的,訪問服務器可讀取目標數據的多份副本數據,其中,多份副本數據為分 別存儲在不同的存儲服務器中的副本數據。訪問服務器可分別讀取到每個存儲服務器中的 副本數據。具體的,可讀取副本數據的版本號。
[0040] S102,判斷目標數據的多份副本數據是否一致。在S102的判斷結果為否時,執(zhí)行 步驟S103。如果S102的判斷結果為是,根據業(yè)務請求對目標數據的多份副本數據進行業(yè)務 處理。
[0041] 作為一種可選的實施方式,可判斷目標數據的多份副本數據是否一致,具體的,可 判斷目標數據的多份副本數據的版本號是否一致。
[0042] 具體實現中,可判斷目標數據的各個副本數據的版本號是否一致,其中,副本數 據的版本號可以包括:序列號、副本狀態(tài)以及訪問服務器的標識,例如,48b i t的版本號 (version)可以為:
[0043]
[0044] 其中,Sequence (32bit)為自增長的序列號(從0開始,每次更新加1), Duplicate_ver(3bit)為多份副本數據的副本狀態(tài),例如可以設定副本狀態(tài)正常為0,副本 狀態(tài)異常為1,A CCesS_id(13bit)為訪問服務器的標識,例如可以為訪問服務器的編號,用 于區(qū)分不同訪問服務器的請求,還可以用于發(fā)現串行化請求修改導致的副本數據不一致。
[0045] 在判斷目標數據的各個副本數據的版本號是否一致時,可分別比較版本號中的本 號中的序列號、副本狀態(tài)和訪問服務器的標識,進而判斷目標數據的多份副本數據是否一 致。
[0046] S103,從目標數據的多份副本數據中確定一份正確的副本數據。
[0047] 作為一種可選的實施方式,在判斷到目標數據的多份副本數據不一致時,從從目 標數據的多份副本數據中確定一份正確的副本數據。具體的,例如,步驟S103中,若確定的 正確的副本數據為副本數據A,則返回副本數據A和副本數據A的版本號;若確定的正確的 副本數據為副本數據B,則返回副本數據B和副本數據B的版本號等等。
[0048] 進一步的,從目標數據的多份副本數據中確定一份正確的副本數據具體可以包 括:
[0049] 比較目標數據的多份副本數據的版本號,將多份副本數據的版本號中最新的版本 號確定為目標數據的正確版本號;
[00