br>[0044]所述第一節(jié)點接收并統(tǒng)計所述其它節(jié)點發(fā)送的所述確認消息,所述確認消息是所述其它節(jié)點將所述待寫入數(shù)據(jù)寫入各自的內(nèi)存后向所述第一節(jié)點發(fā)送的;
[0045]當接收到的所述確認消息的個數(shù)大于或等于W時,所述第一節(jié)點向所述第二客戶端發(fā)送所述響應(yīng)消息。
[0046]第四方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)的裝置,所述裝置包括用于實現(xiàn)上述第一方面所述的方法的模塊,例如讀取請求發(fā)送模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)選擇模塊。
[0047]第五方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)的裝置,所述裝置用于實現(xiàn)上述第二方面所述的方法的模塊,例如讀取請求接收模塊、數(shù)據(jù)發(fā)送模塊。
[0048]第六方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)的裝置,所述裝置用于實現(xiàn)上述第三方面所述的方法的模塊,例如寫入請求接收模塊、數(shù)據(jù)寫入模塊、寫入響應(yīng)發(fā)送模塊。
[0049]第七方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括:
[0050]第一客戶端,用于向分布式存儲系統(tǒng)發(fā)送讀取請求,所述分布式存儲系統(tǒng)包括N個節(jié)點,N 2 2且N為整數(shù);
[0051]所述分布式存儲系統(tǒng),用于根據(jù)所述讀取請求向所述第一客戶端發(fā)送分布式存儲系統(tǒng)中的R個節(jié)點的數(shù)據(jù),所述R個節(jié)點的數(shù)據(jù)均寫入過所述N個節(jié)點中的至少W個節(jié)點的內(nèi)存中,胃為判斷數(shù)據(jù)是否成功寫入所述分布式存儲系統(tǒng)的節(jié)點數(shù)量閾值,N-W<R < N、W < N且R、W均為整數(shù);
[0052]所述第一客戶端還用于,選擇所述R個節(jié)點發(fā)送的數(shù)據(jù)中版本號最新的數(shù)據(jù)。
[0053]第八方面,本發(fā)明實施例提供了一種處理數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括:
[0054]第二客戶端,用于向分布式存儲系統(tǒng)發(fā)送寫入請求,所述分布式存儲系統(tǒng)包括N個節(jié)點,N2 2且N為整數(shù),所述寫入請求包括待寫入數(shù)據(jù);
[0055]所述分布式存儲系統(tǒng),用于根據(jù)所述寫入請求將所述待寫入數(shù)據(jù)寫入所述分布式存儲系統(tǒng)中的各個節(jié)點的內(nèi)存中;當內(nèi)存中寫入所述待寫入數(shù)據(jù)的節(jié)點數(shù)量大于或等于W時,向所述第二客戶端發(fā)送響應(yīng)消息,w < N且W為整數(shù),所述響應(yīng)消息用于表示所述待寫入數(shù)據(jù)成功寫入所述分布式存儲系統(tǒng)。
[0056]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0057]通過R個節(jié)點的數(shù)據(jù)均寫入過N個節(jié)點中的至少W個節(jié)點的內(nèi)存中,W為用于判斷數(shù)據(jù)是否成功寫入分布式存儲系統(tǒng)的節(jié)點數(shù)量閾值,從而避免了由于讀取的數(shù)據(jù)未成功寫入分布式存儲系統(tǒng)而造成客戶端讀取的數(shù)據(jù)錯誤的情況。而且通過獲取分布式存儲系統(tǒng)中的R個節(jié)點的數(shù)據(jù),并選擇R個節(jié)點的數(shù)據(jù)中版本號最新的數(shù)據(jù),N-W<R<N,N為分布式存儲系統(tǒng)的節(jié)點數(shù)量,從而保證讀取的數(shù)據(jù)是最新的,實現(xiàn)了數(shù)據(jù)的強一致性,為用戶使用提供了方便。
【附圖說明】
[0058]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0059]圖1是本發(fā)明實施例提供的處理數(shù)據(jù)的方法的應(yīng)用場景圖;
[0060]圖2是本發(fā)明實施例提供的客戶端的結(jié)構(gòu)示意圖;
[0061]圖3是本發(fā)明實施例提供的分布式存儲系統(tǒng)中的節(jié)點的結(jié)構(gòu)示意圖;
[0062]圖4是本發(fā)明實施例提供的一種處理數(shù)據(jù)的方法的流程圖;
[0063]圖5是本發(fā)明實施例提供的一種處理數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0064]圖6是本發(fā)明實施例提供的一種處理數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0065]圖7是本發(fā)明實施例提供的一種處理數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0066]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0067]下面先結(jié)合圖1簡單介紹一下本發(fā)明實施例提供的處理數(shù)據(jù)的方法的應(yīng)用場景。如圖1所示,分布式存儲系統(tǒng)10包括多個存儲數(shù)據(jù)的節(jié)點11,各個節(jié)點11之間相互連接。至少一個客戶端20與分布式存儲系統(tǒng)10連接,客戶端20可以向分布式存儲系統(tǒng)10中寫入數(shù)據(jù),也可以從分布式存儲系統(tǒng)10中讀取數(shù)據(jù)。
[0068]在實際應(yīng)用中,分布式存儲系統(tǒng)10和客戶端20可以應(yīng)用于銀行交易系統(tǒng)、郵件系統(tǒng)、廣告服務(wù)系統(tǒng)、業(yè)務(wù)查詢系統(tǒng)等。
[0069]例如,在銀行交易系統(tǒng)中將賬戶A中的資金轉(zhuǎn)移到賬戶B中,賬戶A的用戶通過客戶端a登錄賬戶A進行資金轉(zhuǎn)移,分布式存儲系統(tǒng)根據(jù)客戶端a的寫入請求,將更新后的資金數(shù)據(jù)分別寫入賬戶A和賬戶B,并將賬戶A更新后的資金數(shù)據(jù)反饋到客戶端a,賬戶A的用戶通過客戶端a可以獲知資金成功轉(zhuǎn)移,此為數(shù)據(jù)寫入過程。此時賬戶B的用戶通過客戶端b登錄賬戶B進行查詢,分布式存儲系統(tǒng)又根據(jù)客戶端b的查詢請求,將賬戶B之前由于轉(zhuǎn)移資金而更新的資金數(shù)據(jù)反饋到客戶端b,賬戶B的用戶通過客戶端b也可以獲知資金成功轉(zhuǎn)移,此為數(shù)據(jù)讀取過程。
[0070]又如,在業(yè)務(wù)查詢系統(tǒng)中,某個用戶通過客戶端c查詢分布式存儲系統(tǒng)b存儲的業(yè)務(wù)信息,分布式存儲系統(tǒng)b根據(jù)客戶端c的讀取請求,將相應(yīng)的業(yè)務(wù)信息反饋給客戶端c,此為數(shù)據(jù)讀取過程。
[0071]具體地,分布式存儲系統(tǒng)10可以為分布式數(shù)據(jù)庫系統(tǒng)、集群配置數(shù)據(jù)庫(ClusterConf ig Database,簡稱CCDB)、Zookeeper (分布式的、開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù))等。客戶端20可以為移動終端、平板電腦、筆記本電腦、臺式電腦等。
[0072]在具體實現(xiàn)中,客戶端20可以采用圖2所示的結(jié)構(gòu),客戶端20可以為手機、平板電腦、筆記本電腦、臺式計算機等,如圖2所示,客戶端20包括存儲器210、處理器220、發(fā)送器230和接收器240。本領(lǐng)域技術(shù)人員可以理解,圖2中示出的客戶端結(jié)構(gòu)并不構(gòu)成對客戶端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
[0073]處理器220是客戶端20的控制中心,利用各種接口和線路連接整個客戶端20的各個部分,通過運行或執(zhí)行存儲在存儲器210內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器210內(nèi)的數(shù)據(jù),執(zhí)行客戶端20的各種功能和處理數(shù)據(jù),從而對客戶端20進行整體控制??蛇x的,處理器220可包括一個或多個處理核心。
[0074]存儲器210可用于存儲各種數(shù)據(jù),例如各種配置參數(shù),以及存儲軟件程序以及模塊。處理器220通過運行存儲在存儲器210的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器210可主要包括程序存儲區(qū)和數(shù)據(jù)存儲區(qū),其中,程序存儲區(qū)可存儲操作系統(tǒng)211、讀取請求發(fā)送模塊212、數(shù)據(jù)接收模塊213和數(shù)據(jù)選擇模塊214,還可存儲寫入請求發(fā)送模塊215、寫入響應(yīng)接收模塊216等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)客戶端20的使用所創(chuàng)建的數(shù)據(jù),例如根據(jù)讀取請求讀取的數(shù)據(jù)等。此外,存儲器210可以由任何類型的易失性或非易失性存儲設(shè)備或者它們的組合實現(xiàn),如靜態(tài)隨機存取存儲器(Static Random AccessMemory,簡稱SRAM),電可擦除可編程只讀存儲器(Electrically Erasable ProgrammableRead-Only Memory,簡稱EEPROM),可擦除可編程只讀存儲器(Erasable ProgrammableRead Only Memory,簡稱EPROM),可編程只讀存儲器(Programmable Read-Only Memory,簡稱PROM),只讀存儲器(Read Only Memory,簡稱ROM),磁存儲器,快閃存儲器,磁盤或光盤。相應(yīng)地,存儲器210還可以包括存儲器控制器,以提供處理器220對存儲器210的訪問。
[0075]發(fā)送器230,用于發(fā)送根據(jù)處理器220的指示,將讀取請求告知分布式存儲系統(tǒng)10,從而使分布式存儲系統(tǒng)10根據(jù)讀取請求讀取數(shù)據(jù),并將讀取的數(shù)據(jù)發(fā)送給客戶端20??蛇x地,發(fā)送器230還用于向分布式存儲系統(tǒng)10發(fā)送寫入請求。
[0076]接收器240,用于接收分布式存儲系統(tǒng)10發(fā)送的根據(jù)讀取請求讀取的數(shù)據(jù)??蛇x地,接收器240還用于接收數(shù)據(jù)寫入分布式存儲系統(tǒng)10中至少W個節(jié)點的內(nèi)存后發(fā)送的響應(yīng)消息。
[0077]分布式存儲系統(tǒng)中的節(jié)點10可以采用圖3所示的結(jié)構(gòu),如圖3所示,分布式存儲系統(tǒng)中的節(jié)點10包括存儲器110、處理器120、發(fā)送器130和接收器140。圖3中示出的分布式存儲系統(tǒng)10中的節(jié)點結(jié)構(gòu)并不構(gòu)成對分布式存儲系統(tǒng)中的節(jié)點的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
[0078]處理器120是分布式存儲系統(tǒng)10中的節(jié)點的控制中心,利用各種接口和線路連接整個分布式存儲系統(tǒng)10中的節(jié)點的各個部分,通過運行或執(zhí)行存儲在存儲器110內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器110內(nèi)的數(shù)據(jù),執(zhí)行分布式存儲系統(tǒng)10中的節(jié)點的各種功能和處理數(shù)據(jù),從而對分布式存儲系統(tǒng)10中的節(jié)點進行整體控制??蛇x的,處理器120可包括一個或多個處理核心。
[0079]存儲器110可用于存儲各種數(shù)據(jù),例如各種配置參數(shù),以及存儲軟件程序以及模塊。處理器120通過運行存儲在存儲器11