專利名稱:數(shù)據(jù)存儲系統(tǒng)的操作方法和裝置的制作方法
技術(shù)領域:
本發(fā)明涉及數(shù)據(jù)存儲領域,尤其涉及一種數(shù)據(jù)存儲系統(tǒng)的操作方法和裝置。
背景技術(shù):
分布式數(shù)據(jù)存儲系統(tǒng)是由經(jīng)網(wǎng)絡互聯(lián)的多個存儲設備組成的存儲系統(tǒng)。在該系統(tǒng)中,數(shù)據(jù)在多個數(shù)據(jù)節(jié)點上進行備份。傳統(tǒng)的分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)節(jié)點通常包括多個主節(jié)點,各個主節(jié)點分別保存全部數(shù)據(jù)的一部分,每個主節(jié)點都連接有一組從節(jié)點。當用戶讀取數(shù)據(jù)時,直接在主節(jié)點執(zhí)行讀數(shù)據(jù)操作;當用戶寫入數(shù)據(jù)時,在主節(jié)點執(zhí)行寫數(shù)據(jù)操作,并由主節(jié)點將數(shù)據(jù)復制到從節(jié)點,以使從節(jié)點保存與相連的主節(jié)點相同的數(shù)據(jù)副本。在主節(jié)點故障時,通過主從節(jié)點切換將一個從節(jié)點升級為主節(jié)點,保證正常的讀寫操作。傳統(tǒng)的主從節(jié)點的存儲系統(tǒng)中,各個從節(jié)點必須配置與主節(jié)點性能相近的硬件,以替換故障的主節(jié)點進行工作,這導致了過高的硬件成本;另外,在當前網(wǎng)絡通常為松散組網(wǎng)的背景下, 網(wǎng)絡中的節(jié)點經(jīng)常出現(xiàn)連接中斷或超時,由此會引發(fā)主從節(jié)點的頻繁切換,影響系統(tǒng)性能。為解決傳統(tǒng)的主從節(jié)點的存儲系統(tǒng)的問題,現(xiàn)有技術(shù)提供了基于(N,W,R)策略的管理方案。該方案取消了主從節(jié)點的概念,每個數(shù)據(jù)節(jié)點保存全部數(shù)據(jù)中的一部分;并且對于某個數(shù)據(jù)X,分配N個數(shù)據(jù)節(jié)點作為存儲數(shù)據(jù)X的副本節(jié)點,即數(shù)據(jù)X在數(shù)據(jù)存儲系統(tǒng)中存有N個副本。當對數(shù)據(jù)X進行寫操作時,要在W個副本節(jié)點完成對該數(shù)據(jù)的寫操作后才能結(jié)束本次寫操作;當對數(shù)據(jù)X進行讀操作時,必須在R個副本節(jié)點中讀出。其中,N、W、R 之間滿足W+R > N的關系,以保證讀取的R個數(shù)據(jù)中至少有一個為最新版本。在實現(xiàn)上述方案的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題首先,基于(N,W,R)策略的管理方案必須經(jīng)過對R個副本節(jié)點的讀操作后,才能確定一個數(shù)據(jù)的最新版本,讀操作的效率較低。此外,數(shù)據(jù)存儲系統(tǒng)中通常要支持對數(shù)據(jù)進行復雜條件查詢, 即通過遍歷數(shù)據(jù)篩選出符合指定的查詢條件的數(shù)據(jù),并對篩選出的數(shù)據(jù)執(zhí)行計算或?qū)懭雱幼?;而基?N,W,R)策略的方案中,任意數(shù)據(jù)都在N個副本節(jié)點中存有副本,這導致在進行復雜條件查詢時,對于每個數(shù)據(jù)必須遍歷R個副本節(jié)點才能確定最新版本的數(shù)據(jù),數(shù)據(jù)遍歷的操作量極為巨大,實際應用中難以實現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的實施例提供一種數(shù)據(jù)存儲系統(tǒng)的操作方法和裝置,提高了對分布式存儲的數(shù)據(jù)的讀操作效率。 為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案—種數(shù)據(jù)存儲系統(tǒng)的操作方法,包括數(shù)據(jù)節(jié)點接收數(shù)據(jù)操作消息,所述數(shù)據(jù)操作消息攜帶數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象;查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示數(shù)據(jù)對象的更新狀態(tài),所述更新狀態(tài)包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài);
若所述狀態(tài)參數(shù)為同步狀態(tài),并且所述操作類型為讀操作,則讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。一種數(shù)據(jù)存儲系統(tǒng)的操作裝置,包括操作消息接收單元,用于接收數(shù)據(jù)操作消息,所述數(shù)據(jù)操作消息攜帶數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象;
狀態(tài)參數(shù)查詢單元,用于查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示數(shù)據(jù)對象的更新狀態(tài),所述更新狀態(tài)包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài);數(shù)據(jù)讀取單元,用于在所述狀態(tài)參數(shù)為同步狀態(tài)并且所述操作類型為讀操作時, 讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)的操作方法和裝置,對數(shù)據(jù)節(jié)點中保存的數(shù)據(jù)分配了狀態(tài)參數(shù),并將狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)作為最新的數(shù)據(jù)讀取出來,避免了現(xiàn)有技術(shù)分別從R個節(jié)點讀取數(shù)據(jù)的操作,提高了讀操作的效率。
圖1為本發(fā)明實施例1中數(shù)據(jù)存儲系統(tǒng)的操作方法的流程圖;圖2為本發(fā)明實施例1中數(shù)據(jù)存儲系統(tǒng)的操作裝置的框圖;圖3為本發(fā)明實施例2中操作類型為讀操作時的操作方法的流程圖;圖4為本發(fā)明實施例2中操作類型為寫操作時的操作方法的流程圖;圖5為本發(fā)明實施例2中數(shù)據(jù)節(jié)點與管理節(jié)點進行交互的操作方法的流程圖;圖6為本發(fā)明實施例3中數(shù)據(jù)存儲系統(tǒng)的操作裝置的框圖;圖7為本發(fā)明實施例3中節(jié)點狀態(tài)表更新單元的框圖;圖8為本發(fā)明實施例2中一種分布式數(shù)據(jù)存儲系統(tǒng)的結(jié)構(gòu)圖;圖9為圖8所示的分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)節(jié)點1的節(jié)點狀態(tài)表的示意圖;圖10為基于account group的節(jié)點狀態(tài)表的示意圖。
具體實施例方式本發(fā)明的技術(shù)方案中的分布式數(shù)據(jù)存儲系統(tǒng)中沒有主從節(jié)點的區(qū)分,每個數(shù)據(jù)節(jié)點保存全部數(shù)據(jù)中的一部分。一般的,分布式數(shù)據(jù)存儲系統(tǒng)中存儲的數(shù)據(jù)項具備account、key、value, version 四種屬性。key為數(shù)據(jù)項的唯一標識,value為數(shù)據(jù)項的內(nèi)容,version為數(shù)據(jù)項的最新版本,account為數(shù)據(jù)項的賬戶號,并且不同的數(shù)據(jù)項可分配同一種賬戶號。對于每個數(shù)據(jù)節(jié)點僅保存全部數(shù)據(jù)中的一部分的分布式數(shù)據(jù)存儲系統(tǒng),在系統(tǒng)建立之初,可將所有的account預先分成若干個account group (賬戶組),并且所有數(shù)據(jù)節(jié)點 account group為單位來保存數(shù)據(jù)。舉例來說,對于某條數(shù)據(jù)項X,若該數(shù)據(jù)項X的account 為 account_X,貝Ij account_X 必定屬于某個 account group /[叚設 accouni^X^^f 屬的 account group為group_X,則保存數(shù)據(jù)X的數(shù)據(jù)節(jié)點還保存group_X中的所有account對應的數(shù)據(jù)項。對于每個account group,由N個數(shù)據(jù)節(jié)點保存每個account group的數(shù)據(jù)的副本,其中N稱為副本閾值并且N小于數(shù)據(jù)節(jié)點的總數(shù)。因此,該分布式數(shù)據(jù)存儲系統(tǒng)中的每條數(shù)據(jù)項都在N個數(shù)據(jù)節(jié)點中存有副本。下面結(jié)合本發(fā)明實施例的附圖對本發(fā)明實施例的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例1 本發(fā)明實施例提供了一種數(shù)據(jù)存儲系統(tǒng)的操作方法,如圖1所示,所述方法包括以下步驟101、數(shù)據(jù)節(jié)點接收數(shù)據(jù)操作消息。所述數(shù)據(jù)操作消息由客戶端發(fā)送到數(shù)據(jù)節(jié)點,并且所述數(shù)據(jù)操作消息中攜帶了數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象。102、查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)。當所述數(shù)據(jù)節(jié)點收到所述數(shù)據(jù)操作消息后,執(zhí)行查詢存儲的所述數(shù)據(jù)對象的狀態(tài)參數(shù)的操作。所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示數(shù)據(jù)對象的更新狀態(tài),所述更新狀態(tài)包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài)。對于更新為最新版本的數(shù)據(jù),其狀態(tài)參數(shù)為同步狀態(tài);對于還未更新至最新版本的數(shù)據(jù),其狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)。特別的,還可以在狀態(tài)參數(shù)中設置一種未指定狀態(tài),用來表示可能出現(xiàn)的既不是同步狀態(tài)、也不是半同步或異步狀態(tài)的異常情況。103、若所述狀態(tài)參數(shù)為同步狀態(tài)并且所述操作類型為讀操作,讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。當所述數(shù)據(jù)節(jié)點獲取到所述狀態(tài)參數(shù)為同步狀態(tài)時,進而查詢所述數(shù)據(jù)操作消息中的數(shù)據(jù)操作類型。如果所述數(shù)據(jù)操作類型為讀操作,則所述數(shù)據(jù)節(jié)點對所述狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)對象執(zhí)行讀操作,并將讀取的結(jié)果返回給客戶端。本發(fā)明實施例還提供了一種數(shù)據(jù)存儲系統(tǒng)的操作裝置,如圖2所示,所述裝置包括操作消息接收單元21、狀態(tài)參數(shù)查詢單元22、數(shù)據(jù)讀取單元23。操作消息接收單元21用于接收數(shù)據(jù)操作消息,所述數(shù)據(jù)操作消息攜帶數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象。狀態(tài)參數(shù)查詢單元22用于查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示數(shù)據(jù)對象的更新狀態(tài),所述更新狀態(tài)包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài)。數(shù)據(jù)讀取單元23用于在所述狀態(tài)參數(shù)為同步狀態(tài)并且所述操作類型為讀操作時,讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)的操作方法和裝置,對數(shù)據(jù)節(jié)點中保存的數(shù)據(jù)分配了狀態(tài)參數(shù),并將狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)作為最新的數(shù)據(jù)讀取出來,避免了現(xiàn)有技術(shù)分別從R個節(jié)點讀取數(shù)據(jù)的操作,提高了讀操作的效率。實施例2 本發(fā)明實施例提供了一種數(shù)據(jù)存儲系統(tǒng)的操作方法,如圖3所示,所述方法包括以下步驟301、數(shù)據(jù)節(jié)點接收數(shù)據(jù)操作消息。所述數(shù)據(jù)操作消息由客戶端發(fā)送到數(shù)據(jù)節(jié)點,并且所述數(shù)據(jù)操作消息中攜帶了數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象 。如果所述數(shù)據(jù)節(jié)點未存儲所述數(shù)據(jù)操作消息中攜帶的所述數(shù)據(jù)對象,則所述數(shù)據(jù)節(jié)點向客戶端返回一個異常消息,以使客戶端向其他的數(shù)據(jù)節(jié)點重發(fā)該數(shù)據(jù)操作消息。302、查詢所述數(shù)據(jù)節(jié)點當前的管理狀態(tài)參數(shù)。在所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為正常狀態(tài)時,執(zhí)行步驟303 ;當所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為中斷狀態(tài)時,終止當前的數(shù)據(jù)操作。303、查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)。所述狀態(tài)參數(shù)由所述管理節(jié)點為所述數(shù)據(jù)節(jié)點分配,包括同步狀態(tài)、半同步狀態(tài)、 異步狀態(tài)。對于更新為最新版本的數(shù)據(jù),其狀態(tài)參數(shù)為同步狀態(tài);對于還未更新至最新版本的數(shù)據(jù),其狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)。特別的,還可以在狀態(tài)參數(shù)中設置一種未指定狀態(tài),用來表示可能出現(xiàn)的既不是同步狀態(tài)、也不是半同步或異步狀態(tài)的異常情況。查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)后,如果所述狀態(tài)參數(shù)為同步狀態(tài),則轉(zhuǎn)向步驟 304 ;如果所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài),則轉(zhuǎn)向步驟305。304、若所述數(shù)據(jù)操作類型為讀操作,讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。所述數(shù)據(jù)節(jié)點讀取自身存儲的所述數(shù)據(jù)對象,并將讀取的結(jié)果返回客戶端。305、若所述數(shù)據(jù)操作類型為讀操作,查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點。每個數(shù)據(jù)節(jié)點都保存有一份節(jié)點狀態(tài)表,用于記錄各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)以及所述保存的數(shù)據(jù)對應的狀態(tài)參數(shù)。所述數(shù)據(jù)節(jié)點通過查詢節(jié)點狀態(tài)表來獲取數(shù)據(jù)的狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點,從而可以通知所述其他數(shù)據(jù)節(jié)點進行讀操作。比如,在如圖8所示的分布式數(shù)據(jù)存儲系統(tǒng)中,數(shù)據(jù)1至數(shù)據(jù)4在數(shù)據(jù)節(jié)點1至數(shù)據(jù)節(jié)點4中有著不同的存儲分布。數(shù)據(jù)節(jié)點1的節(jié)點狀態(tài)表可以是如圖9所示的情況。在圖9的節(jié)點狀態(tài)表中記錄了數(shù)據(jù)節(jié)點1至數(shù)據(jù)節(jié)點4的存儲情況。其中,考慮到整個分布式數(shù)據(jù)存儲系統(tǒng)的數(shù)據(jù)更新可能不是完全實時,數(shù)據(jù)節(jié)點1的節(jié)點狀態(tài)表記錄的其他數(shù)據(jù)節(jié)點(數(shù)據(jù)節(jié)點2至數(shù)據(jù)節(jié)點4)的情況可能會與實際情況不符。圖8、圖9描述的是一種極簡化的情況,由于分布式數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)量通常很龐大,像圖9 一樣對每條數(shù)據(jù)進行記錄較難實現(xiàn)。實際的分布式數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)節(jié)點以account group為單位保存數(shù)據(jù),因此,數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表通常是以account group為單位來進行數(shù)據(jù)的狀態(tài)參數(shù)的記錄,如圖10所示。這樣,一個數(shù)據(jù)節(jié)點所保存的一個account group下的所有數(shù)據(jù)都具有相同的狀態(tài)參數(shù)。本發(fā)明實施例下文中提及的數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù), 可以理解為以每條數(shù)據(jù)項為單位分配的狀態(tài)參數(shù),也可以理解為以每個acccnmt group為單位分配的狀態(tài)參數(shù)。通常,在數(shù)據(jù)量很大的分布式數(shù)據(jù)存儲系統(tǒng)中,以account group為單位分配狀態(tài)參數(shù)是優(yōu)選的方案。306、向所述其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送讀操作消息。所述讀操作消息中包括所述數(shù)據(jù)對象,所述其他數(shù)據(jù)節(jié)點接收所述讀操作消息后讀取自身存儲的所述數(shù)據(jù)對象,并將讀取的結(jié)果返回客戶端。此外,對于所述數(shù)據(jù)操作類型為寫操作的情況,如圖4所示,所述方法還包括如下步驟303、查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)。
查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)后,如果所述狀態(tài)參數(shù)為同步狀態(tài),則轉(zhuǎn)向步驟 307 ;如果所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài),則轉(zhuǎn)向步驟308。307、若所述狀態(tài)參數(shù)為同步狀態(tài)且所述數(shù)據(jù)操作類型為寫操作,對所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象進行寫入。308、若所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)且所述數(shù)據(jù)操作類型為寫操作,查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點。 309、向所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送第
一寫操作消息。所述第一寫操作消息中包括所述數(shù)據(jù)對象,所述其中一個數(shù)據(jù)節(jié)點接收所述第一寫操作消息后對自身存儲的所述數(shù)據(jù)對象進行寫入操作。310、向保存所述數(shù)據(jù)對象且所述數(shù)據(jù)對象的狀態(tài)參數(shù)為同步、半同步或異步狀態(tài)的所有其他數(shù)據(jù)節(jié)點發(fā)送第二寫操作消息。在步驟307完成寫入動作后,以及在步驟309完成寫入動作后,完成寫入動作的所述數(shù)據(jù)節(jié)點或所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點將向保存有所述數(shù)據(jù)對象并且所述數(shù)據(jù)對象的狀態(tài)參數(shù)為同步、半同步或異步狀態(tài)的所有其他數(shù)據(jù)節(jié)點發(fā)送第二寫操作消息,以便所述所有其他數(shù)據(jù)節(jié)點都進行對所述數(shù)據(jù)對象的寫入,實現(xiàn)整個分布式數(shù)據(jù)存儲系統(tǒng)對所述數(shù)據(jù)對象的更新。下面舉例來對讀操作和寫操作進行說明。假設在分布式數(shù)據(jù)存儲系統(tǒng)中,數(shù)據(jù)節(jié)點A、B、C、D存儲了數(shù)據(jù)a。如果數(shù)據(jù)節(jié)點A收到了客戶端發(fā)送的數(shù)據(jù)操作消息并且該數(shù)據(jù)操作消息要求對數(shù)據(jù)a進行讀操作,則當數(shù)據(jù)節(jié)點A查詢自身的節(jié)點狀態(tài)表并獲取到自身存儲的數(shù)據(jù)a的狀態(tài)參數(shù)為同步狀態(tài)時,數(shù)據(jù)節(jié)點A直接讀取自身存儲的數(shù)據(jù)a ;當數(shù)據(jù)節(jié)點A查詢自身的節(jié)點狀態(tài)表并獲取到自身存儲的數(shù)據(jù)a的狀態(tài)參數(shù)為半同步或異步狀態(tài)時,數(shù)據(jù)節(jié)點A將向自身的節(jié)點狀態(tài)表中記錄的存有數(shù)據(jù)a且其狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點(不妨假設所述其中一個數(shù)據(jù)節(jié)點為數(shù)據(jù)節(jié)點C)發(fā)送讀操作消息,從而由數(shù)據(jù)節(jié)點C進行對數(shù)據(jù)a的讀取。如果數(shù)據(jù)節(jié)點A收到了客戶端發(fā)送的數(shù)據(jù)操作消息并且該數(shù)據(jù)操作消息要求對數(shù)據(jù)a進行寫操作,則當數(shù)據(jù)節(jié)點A查詢自身的節(jié)點狀態(tài)表并獲取到自身存儲的數(shù)據(jù)a的狀態(tài)參數(shù)為同步狀態(tài)時,對自身存儲的數(shù)據(jù)a進行寫入;當數(shù)據(jù)節(jié)點A查詢自身的節(jié)點狀態(tài)表并獲取到自身存儲的數(shù)據(jù)a的狀態(tài)參數(shù)為半同步或異步狀態(tài)時,數(shù)據(jù)節(jié)點A將向自身的節(jié)點狀態(tài)表中記錄的存有數(shù)據(jù)a且其狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點(不妨假設所述其中一個數(shù)據(jù)節(jié)點為數(shù)據(jù)節(jié)點C)發(fā)送第一寫操作消息,從而由數(shù)據(jù)節(jié)點C進行對數(shù)據(jù)a的寫入。在完成上述的對數(shù)據(jù)a的寫入后,還要向保存數(shù)據(jù)a且其狀態(tài)參數(shù)為同步、半同步或異步狀態(tài)的所有其他數(shù)據(jù)節(jié)點(比如數(shù)據(jù)節(jié)點B、D)發(fā)送第二寫操作消息,以使數(shù)據(jù)節(jié)點B、D也進行對自身存儲的數(shù)據(jù)a的寫入。這樣,系統(tǒng)中所有保存有數(shù)據(jù)a的數(shù)據(jù)節(jié)點都進行了寫入動作,從而完成對數(shù)據(jù)a的更新。在執(zhí)行上述的讀操作、寫操作的過程中,所述數(shù)據(jù)節(jié)點還要對異常情況進行分析處理。對于數(shù)據(jù)的讀操作,所述數(shù)據(jù)節(jié)點發(fā)出所述讀操作消息后,在所述第一等待時間段中等待所述其中一個數(shù)據(jù)節(jié)點的響應。若在所述第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因管理狀態(tài)參數(shù)為中斷狀態(tài)而返回的管理狀態(tài)異常消息,則將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點;若所述第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因數(shù)據(jù)對象的狀態(tài)參數(shù)不是同步狀態(tài)而返回的更新狀態(tài)異常消息,則對所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中記錄的所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)進行更新;在完成所述狀態(tài)參數(shù)的更新后,將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點;若在 所述第一等待時間段內(nèi)未接收所述其中一個數(shù)據(jù)節(jié)點的響應,則在所述數(shù)據(jù)節(jié)點存儲的超時記錄表中將所述其中一個數(shù)據(jù)節(jié)點的超時次數(shù)增加一次。舉例來說,數(shù)據(jù)節(jié)點N向數(shù)據(jù)節(jié)點M發(fā)送了讀操作消息,以使數(shù)據(jù)節(jié)點M對數(shù)據(jù)η 進行讀操作。數(shù)據(jù)節(jié)點N在所述第一等待時間段內(nèi)等待數(shù)據(jù)節(jié)點M返回操作結(jié)果,包括以下幾種情況Si、數(shù)據(jù)節(jié)點M完成了讀操作,并返回了操作結(jié)果。S2、如果數(shù)據(jù)節(jié)點M的自身保存的管理狀態(tài)參數(shù)為中斷狀態(tài),則數(shù)據(jù)節(jié)點M向數(shù)據(jù)節(jié)點N發(fā)送管理狀態(tài)異常消息。數(shù)據(jù)節(jié)點N接收所述管理狀態(tài)異常消息后從自身的節(jié)點狀態(tài)表查找到另一個存有數(shù)據(jù)η且其狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)節(jié)點,并向該數(shù)據(jù)節(jié)點發(fā)送讀操作消息。S3、如果數(shù)據(jù)節(jié)點M接收所述讀操作消息后,從自身的節(jié)點狀態(tài)表查找到自身存儲的數(shù)據(jù)η不處于同步狀態(tài),則數(shù)據(jù)節(jié)點M向數(shù)據(jù)節(jié)點N返回更新狀態(tài)異常消息,所述更新狀態(tài)異常消息攜帶了數(shù)據(jù)節(jié)點M存儲的數(shù)據(jù)η的狀態(tài)參數(shù)。數(shù)據(jù)節(jié)點N接收所述更新狀態(tài)異常消息后,將對自身的節(jié)點狀態(tài)表記錄的數(shù)據(jù)節(jié)點M存儲的數(shù)據(jù)η的狀態(tài)參數(shù)進行更新動作。所述更新動作包括S301、數(shù)據(jù)節(jié)點N從所述更新狀態(tài)異常消息中獲取所述數(shù)據(jù)節(jié)點M存儲的數(shù)據(jù)η 的狀態(tài)參數(shù)。S302、將節(jié)點狀態(tài)表記錄的數(shù)據(jù)節(jié)點M的數(shù)據(jù)η的狀態(tài)參數(shù)更新為從所述更新狀態(tài)異常消息中獲取的狀態(tài)參數(shù)。數(shù)據(jù)節(jié)點N的節(jié)點狀態(tài)表中記錄的數(shù)據(jù)節(jié)點M的數(shù)據(jù)η的狀態(tài)參數(shù)原本為同步狀態(tài),在接收所述更新狀態(tài)異常消息并進行狀態(tài)參數(shù)的更新后,數(shù)據(jù)節(jié)點N的節(jié)點狀態(tài)表記錄的數(shù)據(jù)節(jié)點M的數(shù)據(jù)η的狀態(tài)參數(shù)將變更為半同步狀態(tài)或異步狀態(tài)。如果在所述第一等待時間段內(nèi),數(shù)據(jù)節(jié)點N沒有收到數(shù)據(jù)節(jié)點M的任何響應,則在數(shù)據(jù)節(jié)點N存儲的超時記錄表中將所述數(shù)據(jù)節(jié)點M的超時次數(shù)增加一次。對于數(shù)據(jù)的寫操作,所述數(shù)據(jù)節(jié)點發(fā)出所述第一寫操作消息后同樣將在所述第一等待時間段中等待接收了所述第一寫操作消息的數(shù)據(jù)節(jié)點的響應。對不同響應的處理可參照上述讀操作所舉的例子。對于發(fā)送所述第二寫操作消息的情況,所述數(shù)據(jù)節(jié)點發(fā)出所述第二寫操作消息后,將在另一個預設的時間段中等待響應。假設所述另一個預設的時間段為第二等待時間段。舉例來說,數(shù)據(jù)節(jié)點P完成對自身存儲的數(shù)據(jù)ρ的寫入操作后,向所有存儲由數(shù)據(jù)Ρ的數(shù)據(jù)節(jié)點發(fā)送第二寫操作消息。其中,對于保存數(shù)據(jù)P且其狀態(tài)參數(shù)為同步或半同步的數(shù)據(jù)節(jié)點,數(shù)據(jù)節(jié)點P將發(fā)送同步型第二寫操作消息;對于保存數(shù)據(jù)ρ且其狀態(tài)參數(shù)為異步的數(shù)據(jù)節(jié)點,數(shù)據(jù)節(jié)點P將發(fā)送異步型第二寫操作消息。不妨假設數(shù)據(jù)節(jié)點Q接收到所述同步型第二寫操作消息并且數(shù)據(jù)節(jié)點R接收到所述異步型第二寫操作消息。數(shù)據(jù)節(jié)點P在所述第二等待時間段中等待返回的操作結(jié)果,包括以下幾種情況S4、數(shù)據(jù)節(jié)點P接收到寫入成功的消息。S5、數(shù)據(jù)節(jié)點P接收到更新狀態(tài)異常消息。
以數(shù)據(jù)節(jié)點Q為例說明S5的情況。數(shù)據(jù)節(jié)點Q接收所述同步型第二寫操作消息后,在自身的節(jié)點狀態(tài)表中查詢存儲的數(shù)據(jù)P的狀態(tài)參數(shù)。如果查詢到所述數(shù)據(jù)P的狀態(tài)參數(shù)不是同步狀態(tài)或半同步狀態(tài),則向數(shù)據(jù)節(jié)點P返回更新狀態(tài)異常消息,所述更新狀態(tài)異常消息攜帶了數(shù)據(jù)節(jié)點Q存儲的數(shù)據(jù)P的狀態(tài)參數(shù)(所述更新狀態(tài)異常消息攜帶的狀態(tài)參數(shù)為異步狀態(tài))。數(shù)據(jù)節(jié)點P接收所述更新狀態(tài)異常消息后,將進行更新動作。所述更新動作包括數(shù)據(jù)節(jié)點P根據(jù)接收到的所述更新狀態(tài)異常消息中攜帶的數(shù)據(jù)P的狀態(tài)參數(shù), 將自身的節(jié)點狀態(tài)表記錄的數(shù)據(jù)P的狀態(tài)參數(shù)更新為異步狀態(tài)。更新完成后,向數(shù)據(jù)節(jié)點 Q發(fā)送異步型第二寫操作消息,并等待返回結(jié)果。如果在所述第二等待時間段內(nèi),數(shù)據(jù)節(jié)點P沒有收到數(shù)據(jù)節(jié)點Q的任何響應,則在數(shù)據(jù)節(jié)點P存儲的超時記錄表中將所述數(shù)據(jù)節(jié)點Q的超時次數(shù)增加一次。對于接受所述異步型第二寫操作消息的數(shù)據(jù)節(jié)點R的處理過程與上述對數(shù)據(jù)節(jié)點Q的處理過程類似。此外,為提升整個系統(tǒng)的處理性能,數(shù)據(jù)節(jié)點P可以在收到數(shù)據(jù)節(jié)點 Q返回的寫入成功的消息后結(jié)束在所述第二等待時間段中的等待。也就是說,數(shù)據(jù)節(jié)點P向所有存儲數(shù)據(jù)P的數(shù)據(jù)節(jié)點發(fā)送所述第二寫操作消息后,在接收到所有保存數(shù)據(jù)P且其狀態(tài)參數(shù)為同步或半同步狀態(tài)的數(shù)據(jù)節(jié)點返回的寫入成功的消息后就可以結(jié)束當前在所述第二等待時間段中的等待,并繼續(xù)進行其他操作,而不必等待保存數(shù)據(jù)P且狀態(tài)參數(shù)為異常狀態(tài)的數(shù)據(jù)節(jié)點返回的寫入結(jié)果。這樣,分布式數(shù)據(jù)存儲系統(tǒng)需要等待的數(shù)據(jù)節(jié)點越少, 可能出現(xiàn)的操作異常的情況也越少,從而有利于提升系統(tǒng)整體的處理效率。所述數(shù)據(jù)節(jié)點除了進行讀寫操作及異常處理,還需與所述管理節(jié)點進行連通和信息交互,如圖5所示,包括如下步驟501、所述數(shù)據(jù)節(jié)點以預設的時間段為周期,向管理節(jié)點發(fā)起管理連接請求。所述管理節(jié)點接收到所述管理連接請求后,將所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)設置為正常狀態(tài)。當所述管理連接請求的連續(xù)連接失敗的次數(shù)達到預設的連接失敗計數(shù)閾值時,所述數(shù)據(jù)節(jié)點將自身的管理狀態(tài)參數(shù)設置為中斷狀態(tài)。502、所述數(shù)據(jù)節(jié)點向所述管理節(jié)點發(fā)送所述數(shù)據(jù)節(jié)點的超時記錄表。在所述管理連接請求被所述管理節(jié)點接收后,所述數(shù)據(jù)節(jié)點向所述管理節(jié)點發(fā)送所述數(shù)據(jù)節(jié)點的超時記錄表。所述管理節(jié)點接收所述數(shù)據(jù)節(jié)點的超時記錄表,從所述超時記錄表獲取所述數(shù)據(jù)節(jié)點的超時次數(shù),并將達到超時閾值的數(shù)據(jù)節(jié)點的所有數(shù)據(jù)的狀態(tài)參數(shù)修改為異步狀態(tài)并記錄到管理節(jié)點狀態(tài)表。作為實際應用中的一種實現(xiàn)方式,所述數(shù)據(jù)節(jié)點發(fā)送的超時記錄表中可以還包括在預設的超時記錄時間段內(nèi)的超時比值,所述超時比值為是指在預設的超時記錄時間段內(nèi)所述數(shù)據(jù)節(jié)點的總超時次數(shù)與所述數(shù)據(jù)節(jié)點向其他數(shù)據(jù)節(jié)點進行連接請求的次數(shù)的比值。所述管理節(jié)點獲取到所述超時比值后,與所述超時閾值進行比對,對于所述超時比值大于等于所述超時閾值的數(shù)據(jù)節(jié)點,所述管理節(jié)點將其所有數(shù)據(jù)的狀態(tài)參數(shù)變更為異步狀態(tài)。此外,所述管理節(jié)點還根據(jù)預設的節(jié)點數(shù)閾值S對狀態(tài)參數(shù)進行動態(tài)調(diào)整。比如,如果存儲數(shù)據(jù)h且狀態(tài)參數(shù)為同步和半同步狀態(tài)的所有數(shù)據(jù)節(jié)點的數(shù)量不足所述節(jié)點數(shù)閾值S 時,所述管理節(jié)點從所有的存有數(shù)據(jù)h且狀態(tài)參數(shù)為異步狀態(tài)的數(shù)據(jù)節(jié)點中,獲取超時比值最小(即在預設的超時記錄時間段內(nèi)所述數(shù)據(jù)節(jié)點的總超時次數(shù)與所述數(shù)據(jù)節(jié)點向其他數(shù)據(jù)節(jié)點進行連接請求的次數(shù)的比值最小)的數(shù)據(jù)節(jié)點,并在所述管理節(jié)點狀態(tài)表將該數(shù)據(jù)節(jié)點存儲的數(shù)據(jù)h的狀態(tài)參數(shù)變更為半同步狀態(tài)。所述節(jié)點數(shù)閾值S預先設置在分布式數(shù)據(jù)存儲系統(tǒng)中。所述節(jié)點數(shù)閾值S —般小于所述副本閾值N。所述節(jié)點數(shù)閾值S的取值應考慮系統(tǒng)整體的操作性能和實時性,因而不應取值過大;同時還應考慮系統(tǒng)整體的容災能力,因此也不應取值過小。通常,對于不同的系統(tǒng),可通過實測或仿真實驗得到最優(yōu)的S取值。當存儲數(shù)據(jù)h且狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)節(jié)點數(shù)量達到所述節(jié)點數(shù)閾值S,則管理節(jié)點暫停生成新的同步狀態(tài)的操作,以維持所述節(jié)點數(shù)閾值S。503、所述數(shù)據(jù)節(jié)點接收所述管理節(jié)點發(fā)送的管理節(jié)點狀態(tài)表。504、從所述管理節(jié)點狀態(tài)表中獲取各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)。所述管理節(jié)點執(zhí)行如步驟502中描述的對數(shù)據(jù)節(jié)點存儲數(shù)據(jù)的狀態(tài)參數(shù)的變更后,將變更后的所述管理節(jié)點狀態(tài)表發(fā)送給所述數(shù)據(jù)節(jié)點。此時,所述數(shù)據(jù)節(jié)點從所述管理節(jié)點狀態(tài)表中獲取的狀態(tài)參數(shù)可能與所述數(shù)據(jù)節(jié)點自身的節(jié)點狀態(tài)表中記錄狀態(tài)參數(shù)不同,因此需要進行狀態(tài)參數(shù)的更新。505、將所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)更新為所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)。當從所述管理節(jié)點狀態(tài)表中獲取的各個數(shù)據(jù)節(jié)點的數(shù)據(jù)的狀態(tài)參數(shù)與所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的各個數(shù)據(jù)節(jié)點的數(shù)據(jù)的狀態(tài)參數(shù)不同時,將所述節(jié)點狀態(tài)表中的所述不同的狀態(tài)參數(shù)更新為從所述管理節(jié)點狀態(tài)表中獲取的各個數(shù)據(jù)節(jié)點的數(shù)據(jù)的狀態(tài)參數(shù)。506、在更新所述不同的狀態(tài)參數(shù)后,若所述數(shù)據(jù)節(jié)點的部分數(shù)據(jù)的狀態(tài)參數(shù)變更為半同步狀態(tài),則從存儲所述部分數(shù)據(jù)且所述部分數(shù)據(jù)的狀態(tài)參數(shù)為同步狀態(tài)的另一個數(shù)據(jù)節(jié)點復制所述部分數(shù)據(jù)。所述數(shù)據(jù)節(jié)點從所述另一個數(shù)據(jù)節(jié)點復制所述部分數(shù)據(jù),以使所述數(shù)據(jù)節(jié)點保存的部分數(shù)據(jù)能夠從半同步狀態(tài)恢復為同步狀態(tài)。實際情況中,如果不存在所述存儲所述部分數(shù)據(jù)且所述部分數(shù)據(jù)的狀態(tài)參數(shù)為同步狀態(tài)的另一個數(shù)據(jù)節(jié)點,則向所有存儲有所述部分數(shù)據(jù)的數(shù)據(jù)節(jié)點進行連接,以獲取版本最新的所述部分數(shù)據(jù)進行復制。507、所述數(shù)據(jù)節(jié)點完成所述復制后,向所述管理節(jié)點發(fā)送同步完成消息。 所述管理節(jié)點收到所述同步完成消息后,判斷是否將所述數(shù)據(jù)節(jié)點的所述部分數(shù)據(jù)的狀態(tài)參數(shù)變更為同步狀態(tài)。比如,數(shù)據(jù)節(jié)點H完成對數(shù)據(jù)h的復制后,向所述管理節(jié)點發(fā)送同步完成消息。所述管理節(jié)點根據(jù)自身的管理節(jié)點狀態(tài)表,判斷存儲數(shù)據(jù)h且其狀態(tài)參數(shù)為同步狀態(tài)和半同步狀態(tài)的所有數(shù)據(jù)節(jié)點的總數(shù)是否達到所述節(jié)點數(shù)閾值S。如果沒有達到所述節(jié)點數(shù)閾值 S,則向所述數(shù)據(jù)節(jié)點H發(fā)送同步確認消息,以使數(shù)據(jù)節(jié)點H將自身存儲的數(shù)據(jù)h的狀態(tài)參數(shù)變更為同步狀態(tài);如果達到所述節(jié)點數(shù)閾值S,則向所述數(shù)據(jù)節(jié)點H發(fā)送同步終止消息, 使數(shù)據(jù)節(jié)點H將自身存儲的數(shù)據(jù)h的狀態(tài)參數(shù)維持為半同步狀態(tài)。另外,在所述數(shù)據(jù)節(jié)點復制所述部分數(shù)據(jù)時,如此時所述數(shù)據(jù)節(jié)點保存的所述部分數(shù)據(jù)的狀態(tài)參數(shù)狀態(tài)變?yōu)楫惒綘顟B(tài),或所述數(shù)據(jù)節(jié)點的管理狀態(tài)變?yōu)橹袛酄顟B(tài),則終止當前的復制動作。本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)的操作方法,對數(shù)據(jù)節(jié)點中保存的數(shù)據(jù)分配了狀態(tài)參數(shù),并將狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)作為最新的數(shù)據(jù)讀取出來,避免了現(xiàn)有技術(shù)分別從R個節(jié)點讀取數(shù)據(jù)的操作,提高了讀操作的效率;同時,根據(jù)狀態(tài)參數(shù)能確定最新版本的數(shù)據(jù),不必對同一數(shù)據(jù)在不同數(shù)據(jù)節(jié)點中的副本進行遍歷,使復雜條件查詢的實現(xiàn)更為簡便。此外,通過引入管理節(jié)點對分布式數(shù)據(jù)存儲系統(tǒng)中的連接超時等異常情況進行處理, 提高了系統(tǒng)整體的可用性。
實施例3:本發(fā)明實施例提供了一種數(shù)據(jù)存儲系統(tǒng)的操作裝置,如圖6所示,所述裝置包括 操作消息接收單元61、狀態(tài)參數(shù)查詢單元62、數(shù)據(jù)讀取單元63、第一節(jié)點查詢單元64、讀操作消息發(fā)送單元65、數(shù)據(jù)寫入單元66、第二節(jié)點查詢單元67、第一寫操作發(fā)送單元68、第二寫操作發(fā)送單元69、第二讀操作發(fā)送單元610、狀態(tài)參數(shù)更新單元611、超時狀態(tài)更新單元 612、管理連接請求單元613、超時記錄發(fā)送單元614、管理狀態(tài)接收單元615、節(jié)點狀態(tài)表更新單元616、同步數(shù)據(jù)復制單元617、同步完成消息發(fā)送單元618、中斷狀態(tài)設置單元619。此外,所述節(jié)點狀態(tài)表更新單元616還包括第一狀態(tài)參數(shù)獲取模塊6161、第一狀態(tài)參數(shù)更新模塊6162、第二狀態(tài)參數(shù)獲取模塊6163、第二狀態(tài)參數(shù)更新模塊6164,如圖7所
7J\ ο操作消息接收單元61用于接收攜帶有數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象的數(shù)據(jù)操作消息。狀態(tài)參數(shù)查詢單元62用于查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài)。所述狀態(tài)參數(shù)查詢單元62還用于在所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為正常狀態(tài)時查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)。數(shù)據(jù)讀取單元63用于在所述狀態(tài)參數(shù)為同步狀態(tài)并且所述操作類型為讀操作時,讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。第一節(jié)點查詢單元64用于在所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)并且所述操作類型為讀操作時,查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點。讀操作消息發(fā)送單元65用于向所述其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送讀操作消息,所述讀操作消息中包括所述數(shù)據(jù)對象,以便所述其他數(shù)據(jù)節(jié)點接收所述讀操作消息后讀取所述數(shù)據(jù)對象。數(shù)據(jù)寫入單元66用于在所述狀態(tài)參數(shù)是同步狀態(tài)并且所述操作類型為寫操作時,對所述數(shù)據(jù)節(jié)點存儲的所述對象數(shù)據(jù)進行寫入。第二節(jié)點查詢單元67用于在所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)并且所述操作類型為寫操作時,查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點。第一寫操作發(fā)送單元68用于在獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點后向所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送第一寫操作消息,以便所述其他數(shù)據(jù)節(jié)點接收所述第一寫操作消息后對所述數(shù)據(jù)對象進行寫入。第二寫操作發(fā)送單元69用于在所述數(shù)據(jù)節(jié)點或所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點完成對所述數(shù)據(jù)對象的寫入后,向保存所述數(shù)據(jù)對象且所述數(shù)據(jù)對象的狀態(tài)參數(shù)為同步、半同步或異步狀態(tài)的所有其他數(shù)據(jù)節(jié)點發(fā)送第二寫操作消息,以便所述所有其他數(shù)據(jù)節(jié)點進行對所述數(shù)據(jù)對象的寫入。第二讀操作發(fā)送單元610用于在預設的第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因管理狀態(tài)參數(shù)為中斷狀態(tài)而返回的管理狀態(tài)異常消息后,將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點。狀態(tài)參數(shù)更新單元611用于在預設的第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因數(shù)據(jù)對象的狀態(tài)參數(shù)不是同步狀態(tài)而返回的更新狀態(tài)異常消息時,對所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中記錄的所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)進行更新;在完成所述狀態(tài)參數(shù)的更新后,將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點。超時狀態(tài)更新單元612用于在所述第一等待時間段內(nèi)未接收所述其中一個數(shù)據(jù)節(jié)點的響應時,在所述數(shù)據(jù)節(jié)點存儲的超時記錄表中將所述其中一個數(shù)據(jù)節(jié)點的超時次數(shù)增加一次。在與所述管理節(jié)點進行互連時,管理連接請求單元613用于以預設的時間段為周期,向管理節(jié)點發(fā)起管理連接請求。超時記錄發(fā)送單元614用于在所述管理連接請求被所述管理節(jié)點接收后,向所述管理節(jié)點發(fā)送所述數(shù)據(jù)節(jié)點的超時記錄表。管理狀態(tài)接收單元 615用于在所述管理連接請求被所述管理節(jié)點接收后,接收所述管理節(jié)點發(fā)送的管理節(jié)點狀態(tài)表。節(jié)點狀態(tài)表更新單元616用于依照所述管理節(jié)點狀態(tài)表更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表。
所述節(jié)點狀態(tài)表更新單元616中的第一狀態(tài)參數(shù)獲取模塊6161用于從更新狀態(tài)異常消息中獲取所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)。第一狀態(tài)參數(shù)更新模塊 6162將所述節(jié)點狀態(tài)表中記錄的數(shù)據(jù)對象的狀態(tài)參數(shù)變更為所述從更新狀態(tài)異常消息中獲取的數(shù)據(jù)對象的狀態(tài)參數(shù)。所述節(jié)點狀態(tài)表更新單元616中的第二狀態(tài)參數(shù)獲取模塊6163用于從所述管理節(jié)點狀態(tài)表中獲取各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)。第二狀態(tài)參數(shù)更新模塊6164用于當所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)與所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)不同時,將所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)更新為所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)。此外,同步數(shù)據(jù)復制單元617用于在節(jié)點狀態(tài)表更新單元616更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表后、并且當所述數(shù)據(jù)節(jié)點的部分數(shù)據(jù)的狀態(tài)參數(shù)變更為半同步狀態(tài)時,從存儲所述部分數(shù)據(jù)且所述部分數(shù)據(jù)的狀態(tài)參數(shù)為同步狀態(tài)的另一個數(shù)據(jù)節(jié)點復制所述部分數(shù)據(jù)。同步完成消息發(fā)送單元618用于在完成對所述部分數(shù)據(jù)的復制后,向所述管理節(jié)點發(fā)送同步完成消息。中斷狀態(tài)設置單元619用于當所述數(shù)據(jù)節(jié)點向所述管理節(jié)點發(fā)起的管理連接請求連續(xù)連接失敗的次數(shù)達到預設的連接失敗計數(shù)閾值時,所述數(shù)據(jù)節(jié)點將自身的管理狀態(tài)參數(shù)設置為中斷狀態(tài)。對于本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)的操作裝置的其他相關功能情況,可以參照前述的實施例1和實施例2的描述,本實施例不再贅述。本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)的操作裝置,對數(shù)據(jù)節(jié)點中保存的數(shù)據(jù)分配了狀態(tài)參數(shù),并將狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)作為最新的數(shù)據(jù)讀取出來,避免了現(xiàn)有技術(shù)分別從R個節(jié)點讀取數(shù)據(jù)的操作,提高了讀操作的效率,也使復雜條件查詢的實現(xiàn)更為簡便。 此外,本發(fā)明實施例引入了管理節(jié)點,可以對分布式數(shù)據(jù)存儲系統(tǒng)中的連接超時等異常情況進行處理,提高了系統(tǒng)整體的可用性。通過以上的實施方式的描述,所屬領域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機, 服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應所述以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種數(shù)據(jù)存儲系統(tǒng)的操作方法,其特征在于,包括數(shù)據(jù)節(jié)點接收數(shù)據(jù)操作消息,所述數(shù)據(jù)操作消息攜帶數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象;查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示數(shù)據(jù)對象的更新狀態(tài),所述狀態(tài)參數(shù)包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài);若所述狀態(tài)參數(shù)為同步狀態(tài),并且所述操作類型為讀操作,則讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括若所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài),并且所述操作類型為讀操作,則查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點;所述節(jié)點狀態(tài)表記錄各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)以及所述保存的數(shù)據(jù)對應的狀態(tài)參數(shù);向所述其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送讀操作消息,所述讀操作消息中包括所述數(shù)據(jù)對象,以便所述其他數(shù)據(jù)節(jié)點接收所述讀操作消息后所述數(shù)據(jù)對象讀取所述數(shù)據(jù)對象。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù)包括 在所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為正常狀態(tài)時,查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);當所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為中斷狀態(tài)時,終止當前的數(shù)據(jù)操作。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述數(shù)據(jù)節(jié)點向所述其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)出所述讀操作消息后,還包括若在預設的第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因管理狀態(tài)參數(shù)為中斷狀態(tài)而返回的管理狀態(tài)異常消息,則將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點;或者,若在預設的第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因數(shù)據(jù)對象的狀態(tài)參數(shù)不是同步狀態(tài)而返回的更新狀態(tài)異常消息,則對所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中記錄的所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)進行更新;在完成所述狀態(tài)參數(shù)的更新后,將所述操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點;或者,若在所述第一等待時間段內(nèi)未接收所述其中一個數(shù)據(jù)節(jié)點的響應,則在所述數(shù)據(jù)節(jié)點存儲的超時記錄表中將所述其中一個數(shù)據(jù)節(jié)點的超時次數(shù)增加一次。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中記錄的所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)進行更新包括從更新狀態(tài)異常消息中獲取所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù); 將所述節(jié)點狀態(tài)表中記錄的所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)變更為所述從更新狀態(tài)異常消息中獲取的數(shù)據(jù)對象的狀態(tài)參數(shù)。
6.根據(jù)權(quán)利要求2或4所述的方法,其特征在于,還包括所述數(shù)據(jù)節(jié)點向所述管理節(jié)點周期性發(fā)送所述數(shù)據(jù)節(jié)點的超時記錄表,以便所述管理節(jié)點根據(jù)所述超時記錄表將達到超時閾值的數(shù)據(jù)節(jié)點的所有數(shù)據(jù)的狀態(tài)參數(shù)修改為異步狀態(tài)并記錄到管理節(jié)點狀態(tài)表;所述數(shù)據(jù)節(jié)點接收所述管理節(jié)點發(fā)送的管理節(jié)點狀態(tài)表; 依照所述管理節(jié)點狀態(tài)表更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,若保存數(shù)據(jù)且狀態(tài)參數(shù)為同步狀態(tài)和半同步狀態(tài)的數(shù)據(jù)節(jié)點的數(shù)量之和低于預設的節(jié)點數(shù)閾值,則所述管理節(jié)點從所述保存數(shù)據(jù)并且狀態(tài)參數(shù)為異步狀態(tài)的數(shù)據(jù)節(jié)點中選擇超時記錄最少的數(shù)據(jù)節(jié)點,并將所述超時記錄最少的數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)變更為半同步狀態(tài)。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述數(shù)據(jù)節(jié)點依照所述管理節(jié)點狀態(tài)表更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表包括從所述管理節(jié)點狀態(tài)表中獲取各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù);當所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)與所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)不同時,將所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)更新為所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,依照所述管理節(jié)點狀態(tài)表更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表后,還包括若更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表后,所述數(shù)據(jù)節(jié)點的部分數(shù)據(jù)的狀態(tài)參數(shù)變更為半同步狀態(tài),則從存儲所述部分數(shù)據(jù)且所述部分數(shù)據(jù)的狀態(tài)參數(shù)為同步狀態(tài)的另一個數(shù)據(jù)節(jié)點復制所述部分數(shù)據(jù);完成對所述部分數(shù)據(jù)的復制后,向所述管理節(jié)點發(fā)送同步完成消息,以便所述管理節(jié)點在收到所述同步完成消息后在所述管理節(jié)點狀態(tài)表中將所述數(shù)據(jù)節(jié)點的所述部分數(shù)據(jù)的狀態(tài)參數(shù)變更為同步狀態(tài);所述管理節(jié)點對所述管理狀態(tài)表中的數(shù)據(jù)的狀態(tài)參數(shù)進行動態(tài)調(diào)整,以使存儲任何一種數(shù)據(jù)且狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)節(jié)點與存儲所述任何一種數(shù)據(jù)且狀態(tài)參數(shù)為半同步狀態(tài)的數(shù)據(jù)節(jié)點的總數(shù)不超過所述節(jié)點數(shù)閾值。
10.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括當所述數(shù)據(jù)節(jié)點向所述管理節(jié)點發(fā)起的管理連接請求的連續(xù)連接失敗的次數(shù)達到預設的連接失敗計數(shù)閾值時,所述數(shù)據(jù)節(jié)點將自身的管理狀態(tài)參數(shù)設置為中斷狀態(tài)。
11.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括若所述狀態(tài)參數(shù)是同步狀態(tài),并且所述操作類型為寫操作,則對所述數(shù)據(jù)節(jié)點存儲的所述對象數(shù)據(jù)進行寫入;若所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài),并且所述操作類型為寫操作,則查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點;在獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點后,向所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送第一寫操作消息,所述第一寫操作消息中包括所述數(shù)據(jù)對象,以便所述其他數(shù)據(jù)節(jié)點接收所述第一寫操作消息后對所述數(shù)據(jù)對象進行寫入;在所述數(shù)據(jù)節(jié)點或所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點完成對所述數(shù)據(jù)對象的寫入后,向保存所述數(shù)據(jù)對象且所述數(shù)據(jù)對象的狀態(tài)參數(shù)為同步、 半同步或異步狀態(tài)的所有其他數(shù)據(jù)節(jié)點發(fā)送第二寫操作消息,以便所述所有其他數(shù)據(jù)節(jié)點進行對所述數(shù)據(jù)對象的寫入。
12.—種數(shù)據(jù)存儲系統(tǒng)的操作裝置,其特征在于,包括操作消息接收單元,用于接收數(shù)據(jù)操作消息,所述數(shù)據(jù)操作消息攜帶數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象;狀態(tài)參數(shù)查詢單元,用于查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示 數(shù)據(jù)對象的更新狀態(tài),所述狀態(tài)參數(shù)包括同步狀態(tài)、半同步狀態(tài)、 異步狀態(tài);數(shù)據(jù)讀取單元,用于在所述狀態(tài)參數(shù)為同步狀態(tài)并且所述操作類型為讀操作時,讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,還包括第一節(jié)點查詢單元,用于在所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)并且所述操作類型為讀操作時,查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點;所述節(jié)點狀態(tài)表記錄各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)以及所述保存的數(shù)據(jù)對應的狀態(tài)參數(shù);讀操作消息發(fā)送單元,用于向所述其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送讀操作消息,所述讀操作消息中包括所述數(shù)據(jù)對象,以便所述其他數(shù)據(jù)節(jié)點接收所述讀操作消息后讀取所述數(shù)據(jù)對象。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述狀態(tài)參數(shù)查詢單元還用于在所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為正常狀態(tài)時查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);當所述數(shù)據(jù)節(jié)點的管理狀態(tài)參數(shù)為中斷狀態(tài)時,終止當前的數(shù)據(jù)操作。
15.根據(jù)權(quán)利要求13所述的裝置,其特征在于,在所述數(shù)據(jù)節(jié)點向所述其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)出所述讀操作消息后,還包括第二讀操作發(fā)送單元,用于在預設的第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因管理狀態(tài)參數(shù)為中斷狀態(tài)而返回的管理狀態(tài)異常消息后,將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點;狀態(tài)參數(shù)更新單元,用于在預設的第一等待時間段內(nèi)收到所述其中一個數(shù)據(jù)節(jié)點因數(shù)據(jù)對象的狀態(tài)參數(shù)不是同步狀態(tài)而返回的更新狀態(tài)異常消息時,對所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中記錄的所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù)進行更新;在完成所述狀態(tài)參數(shù)的更新后,將所述讀操作消息發(fā)送到所述其他數(shù)據(jù)節(jié)點中的另一個數(shù)據(jù)節(jié)點;超時狀態(tài)更新單元,用于在所述第一等待時間段內(nèi)未接收所述其中一個數(shù)據(jù)節(jié)點的響應時,在所述數(shù)據(jù)節(jié)點存儲的超時記錄表中將所述其中一個數(shù)據(jù)節(jié)點的超時次數(shù)增加一次。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述節(jié)點狀態(tài)更新單元包括第一狀態(tài)參數(shù)獲取模塊,用于從更新狀態(tài)異常消息中獲取所述其中一個數(shù)據(jù)節(jié)點的數(shù)據(jù)對象的狀態(tài)參數(shù);第一狀態(tài)參數(shù)更新模塊,將所述節(jié)點狀態(tài)表中記錄的數(shù)據(jù)對象的狀態(tài)參數(shù)變更為所述從更新狀態(tài)異常消息中獲取的數(shù)據(jù)對象的狀態(tài)參數(shù)。
17.根據(jù)權(quán)利要求13或15所述的裝置,其特征在于,還包括管理連接請求單元,用于以預設的時間段為周期,向管理節(jié)點發(fā)起管理連接請求;超時記錄發(fā)送單元,用于在所述管理連接請求被所述管理節(jié)點接收后,向所述管理節(jié)點發(fā)送所述數(shù)據(jù)節(jié)點的超時記錄表,以便所述管理節(jié)點根據(jù)所述超時記錄表將達到超時閾值的數(shù)據(jù)節(jié)點的所有數(shù)據(jù)的狀態(tài)參數(shù)修改為異步狀態(tài)并記錄到管理節(jié)點狀態(tài)表;管理狀態(tài)接收單元,用于接收所述管理節(jié)點發(fā)送的管理節(jié)點狀態(tài)表;節(jié)點狀態(tài)表更新單元,用于依照所述管理節(jié)點狀態(tài)表更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述節(jié)點狀態(tài)表更新單元還包括第二狀態(tài)參數(shù)獲取模塊,用于從所述管理節(jié)點狀態(tài)表中獲取各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù);第二狀態(tài)參數(shù)更新模塊,用于當所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù)與所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)不同時,將所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表中的狀態(tài)參數(shù)更新為所述獲取的各個數(shù)據(jù)節(jié)點保存的數(shù)據(jù)的狀態(tài)參數(shù);
19.根據(jù)權(quán)利要求17所述的裝置,其特征在于,依照所述管理節(jié)點狀態(tài)表更新所述數(shù)據(jù)節(jié)點的節(jié)點狀態(tài)表后,還包括同步數(shù)據(jù)復制單元,用于當所述數(shù)據(jù)節(jié)點的部分數(shù)據(jù)的狀態(tài)參數(shù)變更為半同步狀態(tài)時,從存儲所述部分數(shù)據(jù)且所述部分數(shù)據(jù)的狀態(tài)參數(shù)為同步狀態(tài)的另一個數(shù)據(jù)節(jié)點復制所述部分數(shù)據(jù);同步完成消息發(fā)送單元,用于在完成對所述部分數(shù)據(jù)的復制后,向所述管理節(jié)點發(fā)送同步完成消息,以便所述管理節(jié)點在收到所述同步完成消息后在所述管理節(jié)點狀態(tài)表中將所述數(shù)據(jù)節(jié)點的所述部分數(shù)據(jù)的狀態(tài)參數(shù)變更為同步狀態(tài);所述管理節(jié)點對所述管理狀態(tài)表中的數(shù)據(jù)的狀態(tài)參數(shù)進行動態(tài)調(diào)整,以使存儲任何一種數(shù)據(jù)且狀態(tài)參數(shù)為同步狀態(tài)的數(shù)據(jù)節(jié)點與存儲所述任何一種數(shù)據(jù)且狀態(tài)參數(shù)為半同步狀態(tài)的數(shù)據(jù)節(jié)點的總數(shù)不超過預設的節(jié)點數(shù)閾值。
20.根據(jù)權(quán)利要求17所述的裝置,其特征在于,還包括中斷狀態(tài)設置單元,用于當所述數(shù)據(jù)節(jié)點與所述管理節(jié)點發(fā)起的管理連接請求的連續(xù)連接失敗的次數(shù)達到預設的連接失敗計數(shù)閾值時,所述數(shù)據(jù)節(jié)點將自身的管理狀態(tài)參數(shù)設置為中斷狀態(tài)。
21.根據(jù)權(quán)利要求12所述的裝置,其特征在于,還包括數(shù)據(jù)寫入單元,用于在所述狀態(tài)參數(shù)是同步狀態(tài)并且所述操作類型為寫操作時,對所述數(shù)據(jù)節(jié)點存儲的所述對象數(shù)據(jù)進行寫入;第二節(jié)點查詢單元,用于在所述狀態(tài)參數(shù)為半同步狀態(tài)或異步狀態(tài)并且所述操作類型為寫操作時,查詢所述數(shù)據(jù)節(jié)點保存的節(jié)點狀態(tài)表并獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點;第一寫操作發(fā)送單元,用于在獲取所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點后向所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點發(fā)送第一寫操作消息,所述第一寫操作消息中包括所述數(shù)據(jù)對象,以便所述其他數(shù)據(jù)節(jié)點接收所述第一寫操作消息后對所述數(shù)據(jù)對象進行寫入;第二寫操作發(fā)送單元,用于在所述數(shù)據(jù)節(jié)點或所述狀態(tài)參數(shù)為同步狀態(tài)的其他數(shù)據(jù)節(jié)點中的其中一個數(shù)據(jù)節(jié)點完成對所述數(shù)據(jù)對象的寫入后,向保存所述數(shù)據(jù)對象且所述數(shù)據(jù)對象的狀態(tài)參數(shù)為同步、半同步或異步狀態(tài)的所有其他數(shù)據(jù)節(jié)點發(fā)送第二寫操作消息,以便所述所有其他數(shù)據(jù)節(jié)點進行對所述數(shù)據(jù)對象的寫入。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)存儲系統(tǒng)的操作方法和裝置,涉及數(shù)據(jù)存儲領域,提高了對分布式存儲的數(shù)據(jù)的讀操作效率。一種數(shù)據(jù)存儲系統(tǒng)的操作方法,包括數(shù)據(jù)節(jié)點接收數(shù)據(jù)操作消息,所述數(shù)據(jù)操作消息攜帶數(shù)據(jù)操作類型以及操作的數(shù)據(jù)對象;查詢所述數(shù)據(jù)對象的狀態(tài)參數(shù);所述狀態(tài)參數(shù)由管理節(jié)點為數(shù)據(jù)節(jié)點分配,用于表示數(shù)據(jù)對象的更新狀態(tài),所述更新狀態(tài)包括同步狀態(tài)、半同步狀態(tài)、異步狀態(tài);若所述狀態(tài)參數(shù)為同步狀態(tài),并且所述操作類型為讀操作,則讀取所述數(shù)據(jù)節(jié)點存儲的所述數(shù)據(jù)對象。本發(fā)明實施例用于對分布式數(shù)據(jù)存儲系統(tǒng)中的數(shù)據(jù)進行操作。
文檔編號G06F17/30GK102265277SQ201180001011
公開日2011年11月30日 申請日期2011年6月1日 優(yōu)先權(quán)日2011年6月1日
發(fā)明者程實 申請人:華為技術(shù)有限公司