本發(fā)明涉及數(shù)據(jù)請求處理技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)請求方法及裝置和數(shù)據(jù)存儲系統(tǒng)。
背景技術(shù):
因鍵值對數(shù)量龐大,故在數(shù)據(jù)存儲系統(tǒng)中具有不同主鍵的鍵值對可能會存放在數(shù)據(jù)存儲系統(tǒng)中的不同服務(wù)器。其中,數(shù)據(jù)存儲系統(tǒng)例如分布式存儲系統(tǒng),所述分布式存儲系統(tǒng)由多個服務(wù)器組成;鍵值對是主鍵和與主鍵關(guān)聯(lián)的值的組合,值可以表示內(nèi)容信息,如昵稱、性別等。
因鍵值對在數(shù)據(jù)存儲系統(tǒng)中的各個服務(wù)器上分布存儲,所以當(dāng)客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對的時候,通常需要根據(jù)請求鍵值對的分布來訪問數(shù)據(jù)存儲系統(tǒng)中的多個服務(wù)器,以保證從數(shù)據(jù)存儲系統(tǒng)拉取所有請求的鍵值對。
客戶端與數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器進(jìn)行多次交互以實現(xiàn)對請求的多個鍵值對的拉取的方式,通常會存在客戶端吞吐量低、進(jìn)而導(dǎo)致影響客戶端接口性能的問題。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供一種數(shù)據(jù)請求方法及裝置和數(shù)據(jù)存儲系統(tǒng),以在提高客戶端接口性能的基礎(chǔ)上,實現(xiàn)在數(shù)據(jù)存儲系統(tǒng)中請求數(shù)據(jù)的目的。
為實現(xiàn)上述目的,本發(fā)明實施例提供如下技術(shù)方案:
一種數(shù)據(jù)請求方法,應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器,所述方法包括:
接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
一種數(shù)據(jù)請求裝置,應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器,所述裝置包括:
數(shù)據(jù)請求接收單元,用于接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
本地查找單元,用于本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
數(shù)據(jù)請求轉(zhuǎn)發(fā)單元,用于如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
結(jié)果返回單元,用于如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
一種數(shù)據(jù)存儲系統(tǒng),包括至少一個服務(wù)器,各所述服務(wù)器包括:
存儲器,預(yù)先存儲有至少一個鍵值對;
處理器,接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
在所述存儲器中查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
本申請實施例提供一種數(shù)據(jù)請求方法及裝置和數(shù)據(jù)存儲系統(tǒng),應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器,通過接收攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵的數(shù)據(jù)請求;本地查找與目標(biāo)主鍵關(guān)聯(lián)的值;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果并發(fā)送給請求數(shù)據(jù)的客戶端的方式,使得當(dāng)客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對時,不需與數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器進(jìn)行多次交互,在提高客戶端接口性能的基礎(chǔ)上,實現(xiàn)了在數(shù)據(jù)存儲系統(tǒng)中請求數(shù)據(jù)的目的。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實施例提供的一種數(shù)據(jù)請求方法應(yīng)用場景示意圖;
圖2為本申請實施例提供的一種數(shù)據(jù)請求方法流程圖;
圖3為本申請實施例提供的一種將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法流程圖;
圖4為本申請實施例提供的另一種數(shù)據(jù)請求方法流程圖;
圖5為本申請實施例提供的一種將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法流程圖;
圖6為本申請實施例提供的一種從所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器的方法流程圖;
圖7為本申請實施例提供的另一種將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法流程圖;
圖8為本申請實施例提供的一種從所確定的服務(wù)器中,確定與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)相匹配的服務(wù)器的方法流程圖;
圖9為本申請實施例提供的一種數(shù)據(jù)請求裝置的結(jié)構(gòu)示意圖;
圖10為本申請實施例提供的一種數(shù)據(jù)請求轉(zhuǎn)發(fā)單元的詳細(xì)結(jié)構(gòu)示意圖;
圖11為本申請實施例提供的另一種數(shù)據(jù)請求轉(zhuǎn)發(fā)單元的詳細(xì)結(jié)構(gòu)示意圖;
圖12為本申請實施例提供的一種第二確定單元的詳細(xì)結(jié)構(gòu)示意圖;
圖13為本申請實施例提供的又一種數(shù)據(jù)請求轉(zhuǎn)發(fā)單元的詳細(xì)結(jié)構(gòu)示意圖;
圖14為本申請實施例提供的一種第五確定單元的詳細(xì)結(jié)構(gòu)示意圖;
圖15為本申請實施例提供的一種數(shù)據(jù)請求裝置的硬件結(jié)構(gòu)框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
實施例:
圖1為本申請實施例提供的一種數(shù)據(jù)請求方法應(yīng)用場景示意圖。
本申請實施例提供的一種數(shù)據(jù)請求方法應(yīng)用于數(shù)據(jù)存儲系統(tǒng),所述數(shù)據(jù)存儲系統(tǒng)中包括至少一個服務(wù)器。具體的,如圖1所示的數(shù)據(jù)存儲系統(tǒng)中僅僅體現(xiàn)了三個服務(wù)器,且分別以服務(wù)器1、服務(wù)器2和服務(wù)器3命名??蛇x的,發(fā)明人可根據(jù)自己的需求任意設(shè)置數(shù)據(jù)存儲系統(tǒng)中包括的服務(wù)器的個數(shù),在此不做限定。并且,此處將數(shù)據(jù)存儲系統(tǒng)中的三個服務(wù)器分別用服務(wù)器1、服務(wù)器2和服務(wù)器3命名,只是為了描述方便,在此不做限定。
可選的,客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對時,只需向數(shù)據(jù)存儲系統(tǒng)中的任意一個服務(wù)器發(fā)送數(shù)據(jù)請求即可。這里并不限定如圖1所示客戶端只能將數(shù)據(jù)請求發(fā)送給服務(wù)器1,可選的,客戶端可將數(shù)據(jù)請求發(fā)送至服務(wù)器1、服務(wù)器2或服務(wù)器3中的任意一個。
以圖1為例進(jìn)行說明:客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對時,只需向數(shù)據(jù)存儲系統(tǒng)中的任意一個服務(wù)器(例如服務(wù)器1)發(fā)送數(shù)據(jù)請求,進(jìn)而在數(shù)據(jù)存儲系統(tǒng)中的各個服務(wù)器之間實現(xiàn)數(shù)據(jù)請求的轉(zhuǎn)發(fā),以得到返回結(jié)果。如圖1所示的數(shù)據(jù)請求在數(shù)據(jù)存儲系統(tǒng)的各個服務(wù)器之間的轉(zhuǎn)發(fā)方式是本申請實施例提供的優(yōu)選方案,有關(guān)數(shù)據(jù)請求在數(shù)據(jù)存儲系統(tǒng)中的各個服務(wù)器之間的轉(zhuǎn)發(fā)方式在此不做限定。例如,客戶端將數(shù)據(jù)請求發(fā)送至數(shù)據(jù)存儲系統(tǒng)后,數(shù)據(jù)請求可能只需在數(shù)據(jù)存儲系統(tǒng)中的部分服務(wù)器之間進(jìn)行轉(zhuǎn)發(fā)即可得到返回結(jié)果。
需要說明的是:針對位于數(shù)據(jù)存儲系統(tǒng)中的每個服務(wù)器而言,只要接收到數(shù)據(jù)請求,即需按照如下圖2所示的數(shù)據(jù)請求方法流程圖執(zhí)行相應(yīng)的數(shù)據(jù)請求方法。
如圖2所示,該方法包括:
S101、接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
可選的,接收數(shù)據(jù)請求的方式包括:接收客戶端發(fā)送的數(shù)據(jù)請求,或者,接收上一接收數(shù)據(jù)請求的服務(wù)器轉(zhuǎn)發(fā)的數(shù)據(jù)請求(例如,客戶端將數(shù)據(jù)請求發(fā)送給服務(wù)器1、服務(wù)器1將數(shù)據(jù)請求轉(zhuǎn)發(fā)給服務(wù)器2時,可認(rèn)為服務(wù)器2是接收的上一接收數(shù)據(jù)請求的服務(wù)器(服務(wù)器1)轉(zhuǎn)發(fā)的數(shù)據(jù)請求。
需要說明的是:接收到的數(shù)據(jù)請求中攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵。即,接收到的數(shù)據(jù)請求中攜帶至少一個目標(biāo)主鍵,所述目標(biāo)主鍵未關(guān)聯(lián)有值。數(shù)據(jù)請求的目的是:獲取數(shù)據(jù)請求攜帶的各目標(biāo)主鍵關(guān)聯(lián)的值。
S102、本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
可選的,服務(wù)器接收到數(shù)據(jù)請求后,本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值的方式,包括:服務(wù)器在與其相連的數(shù)據(jù)庫中查找與所述目標(biāo)主鍵關(guān)聯(lián)的值。即,將與服務(wù)器相連的數(shù)據(jù)庫確定為所述服務(wù)器的本地。
可選的,與服務(wù)器相連的數(shù)據(jù)庫可設(shè)置于所述服務(wù)器上,或者獨立于所述服務(wù)器與所述服務(wù)器相連,在此不做限定。
可選的,與服務(wù)器相連的數(shù)據(jù)庫可以是由多個數(shù)據(jù)庫組成的服務(wù)器集群,也可是單獨的一個數(shù)據(jù)庫,有關(guān)與服務(wù)器相連的數(shù)據(jù)庫的具體形式,在此不做限定。
S103、判斷是否存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,執(zhí)行步驟S104;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,執(zhí)行步驟S105;
可選的,從步驟S101中確定的目標(biāo)主鍵中,確定是否存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,執(zhí)行步驟S104;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,執(zhí)行步驟S105。
S104、將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
可選的,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵的方式包括:針對每個查找到的值,確定與所述查找到的值關(guān)聯(lián)的目標(biāo)主鍵,并將所述查找到的值關(guān)聯(lián)到所確定的目標(biāo)主鍵。
S105、將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
可選的,所述返回結(jié)果包括“如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到的關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求”。
以上僅僅是本申請實施例的優(yōu)選方式,發(fā)明人可根據(jù)自己的需求任意設(shè)置返回結(jié)果中包括的具體內(nèi)容,在此不做限定。
為了更加全面的對本申請實施例提供的一種數(shù)據(jù)請求方法進(jìn)行闡述,現(xiàn)對本申請實施例提供的一種數(shù)據(jù)請求中的“將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器”過程進(jìn)行詳細(xì)介紹,具體請參見圖3。
圖3為本申請實施例提供的一種將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法流程圖。
如圖3所示,該方法包括:
S201、在所接收的數(shù)據(jù)請求中,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求;
可選的,服務(wù)器接收到數(shù)據(jù)請求(所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵);本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,在所接收的數(shù)據(jù)請求中,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求。
S202、轉(zhuǎn)發(fā)所得到的數(shù)據(jù)請求至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器。
可選的,將上述步驟S201所得到的數(shù)據(jù)請求(關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求)轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中另一未接收過數(shù)據(jù)請求的服務(wù)器。
可選的,轉(zhuǎn)發(fā)所得到的數(shù)據(jù)請求至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器,包括:轉(zhuǎn)發(fā)所得到的數(shù)據(jù)請求至所述數(shù)據(jù)存儲系統(tǒng)中的任何一個未接收過數(shù)據(jù)請求的服務(wù)器。
通過上述對本申請實施例提供的一種將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法的進(jìn)一步介紹,使得本申請實施例提供的數(shù)據(jù)請求方法更加清晰、完整,便于本領(lǐng)域技術(shù)人員理解。
可選的,本申請實施例中,將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器后,調(diào)整轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)請求的已轉(zhuǎn)發(fā)次數(shù)相應(yīng)。
在本申請實施例中,優(yōu)選的,每當(dāng)將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收到數(shù)據(jù)請求的服務(wù)器后,均調(diào)整轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)請求的已轉(zhuǎn)發(fā)次數(shù)相應(yīng)。
可選的,轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)請求的已轉(zhuǎn)發(fā)次數(shù)相應(yīng),包括:轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)請求已轉(zhuǎn)發(fā)次數(shù)相同。
以上僅僅是本申請實施例的優(yōu)選方式,發(fā)明人可根據(jù)自己的需求任意設(shè)置轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)請求的已轉(zhuǎn)發(fā)次數(shù)相應(yīng)的具體方式,在此不做限定。
進(jìn)一步,為了更加全面的對本申請實施例提供的一種數(shù)據(jù)請求方法進(jìn)行闡述,現(xiàn)對本申請實施例提供的另一種數(shù)據(jù)請求方法進(jìn)行詳細(xì)介紹,具體請參見圖4。
圖4為本申請實施例提供的另一種數(shù)據(jù)請求方法流程圖。
如圖4所示,該方法包括:
S301、接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
S302、本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
S303、判斷是否存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,執(zhí)行步驟S304;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,執(zhí)行步驟S307;
S304、將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵;
S305、判斷當(dāng)前轉(zhuǎn)發(fā)次數(shù)是否與所述數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量匹配;如果當(dāng)前轉(zhuǎn)發(fā)次數(shù)與所述數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量不匹配,執(zhí)行步驟S306;
可選的,當(dāng)前轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量不匹配時,說明所述數(shù)據(jù)存儲系統(tǒng)中還存在未接收到數(shù)據(jù)請求的服務(wù)器,因此,執(zhí)行步驟S306,將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器(即,將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的任何一個未接收過數(shù)據(jù)請求的服務(wù)器)。
S306、將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
S307、如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
參見圖4可知,本申請實施例提供的一種數(shù)據(jù)請求方法,在如果當(dāng)前轉(zhuǎn)發(fā)次數(shù)與所述數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量匹配時,進(jìn)一步包括步驟S308、根據(jù)所述關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求確定返回結(jié)果,將所確定的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
可選的,當(dāng)前轉(zhuǎn)發(fā)次數(shù)與所述數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量匹配時,說明所述數(shù)據(jù)存儲系統(tǒng)中已不存在未接收過數(shù)據(jù)請求的服務(wù)器,因此,所述關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求確定返回結(jié)果,將所確定的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端即可。
通過上述對本申請實施例提供的另一種數(shù)據(jù)請求方法的進(jìn)一步介紹,使得本申請實施例提供的數(shù)據(jù)請求方法更加清晰、完整,便于本領(lǐng)域技術(shù)人員理解。
進(jìn)一步,為了更加全面的對本申請實施例提供的一種數(shù)據(jù)請求方法進(jìn)行闡述,現(xiàn)對本申請實施例提供的一種數(shù)據(jù)請求方法中的“將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器”過程進(jìn)行詳細(xì)介紹,具體請參見圖5。
圖5為本申請實施例提供的一種將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法流程圖。
如圖5所示,該方法包括:
S401、從關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中,確定未關(guān)聯(lián)有值的目標(biāo)主鍵;
可選的,從關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中,確定未關(guān)聯(lián)有值的目標(biāo)主鍵,包括:確定關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中存在的未關(guān)聯(lián)有值的目標(biāo)主鍵。
S402、從所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器;
可選的,當(dāng)從關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中,確定未關(guān)聯(lián)有值的目標(biāo)主鍵后,需從所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的各個服務(wù)器。
S403、將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所確定的任意一個本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器。
所述將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所確定的任意一個本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器,包括:將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至步驟S402所確定的任意一個服務(wù)器中。
進(jìn)一步的,圖6為本申請實施例提供的一種從所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器的方法流程圖。
如圖6所示,該方法包括:
S501、確定所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器;
S502、分別獲取所確定的每個所述服務(wù)器本地存儲的鍵值對的主鍵;
可選的,數(shù)據(jù)存儲系統(tǒng)中的每個服務(wù)器中均存儲有所述數(shù)據(jù)存儲系統(tǒng)中的其他每個服務(wù)器的鍵值對列表;當(dāng)接收數(shù)據(jù)請求的服務(wù)器確定所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器后,獲取所確定的每個服務(wù)器的鍵值對列表,所述鍵值對列表中包括至少一個鍵值對;進(jìn)而分別獲取每個鍵值對列表中包括的各個主鍵,作為與所述鍵值對列表對應(yīng)的服務(wù)器本地存儲的主鍵。
S503、從所確定的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵相同的主鍵的服務(wù)器。
可選的,從所確定的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵相同的主鍵的服務(wù)器作為從所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器中,確定的本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器。
通過上述對本申請實施例提供的一種將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器方法的進(jìn)一步介紹,使得本申請實施例提供的數(shù)據(jù)請求方法更加清晰、完整,便于本領(lǐng)域技術(shù)人員理解。
進(jìn)一步,為了更加全面的對本申請實施例提供的一種數(shù)據(jù)請求方法進(jìn)行闡述,現(xiàn)對本申請實施例提供的一種數(shù)據(jù)請求方法中的“將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器”過程進(jìn)行詳細(xì)介紹,具體請參見圖7。
圖7為本申請實施例提供的另一種將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器的方法流程圖。
如圖7所示,該方法包括:
S601、從關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中,確定未關(guān)聯(lián)有值的目標(biāo)主鍵;
S602、確定所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器;
S603、獲取所述數(shù)據(jù)存儲系統(tǒng)的取模算法以及所確定的每個所述服務(wù)器的本地取模余數(shù);
可選的,當(dāng)數(shù)據(jù)存儲系統(tǒng)中的各個服務(wù)器利用取模方式存儲鍵值對時,所述數(shù)據(jù)存儲系統(tǒng)中各個服務(wù)器采用的取模算法相同,這時不僅需要獲取數(shù)據(jù)存儲系統(tǒng)的取模算法,所述取模算法包括:用于被取模的數(shù)值(如對3進(jìn)行取模中的數(shù)值3);還需要獲取所述數(shù)據(jù)存儲系統(tǒng)中的每個服務(wù)器的本地取模余數(shù)(本地取模余數(shù)是相對于服務(wù)器存儲的鍵值對中的主鍵而言的,本地取模余數(shù)是服務(wù)器本地存儲的鍵值對的主鍵按照取模算法進(jìn)行取模時的余數(shù))。例如,當(dāng)數(shù)據(jù)存儲系統(tǒng)包括兩個服務(wù)器(服務(wù)器1和服務(wù)器2),所述數(shù)據(jù)存儲系統(tǒng)的取模算法指示對3取模,服務(wù)器1的取模余數(shù)為1(表示服務(wù)器1中存儲的各鍵值對的主鍵對3進(jìn)行取模的余數(shù)均是1),服務(wù)器2的取模余數(shù)為2(表示服務(wù)器2中存儲的各鍵值對的主鍵對3進(jìn)行取模的余數(shù)均是2)。
S604、從所確定的服務(wù)器中,確定與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)相匹配的服務(wù)器;
可選的,服務(wù)器與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)匹配的方式包括:服務(wù)器的本地取模余數(shù)與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)相同。
S605、將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所確定的任意一個與所確定的目標(biāo)主鍵利用所述取模算法計算得到取模余數(shù)相匹配的服務(wù)器。
可選的,將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所確定的任意一個與所確定的目標(biāo)主鍵利用所述取模算法計算得到取模余數(shù)相匹配的服務(wù)器,包括:將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至上述步驟S604中所確定的服務(wù)器中的任意一個。
進(jìn)一步的,圖8為本申請實施例提供的一種從所確定的服務(wù)器中,確定與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)相匹配的服務(wù)器的方法流程圖。
如圖8所示,該方法包括:
S701、利用所述取模算法分別計算所確定的每個目標(biāo)主鍵的取模余數(shù);
可選的,利用所述取模算法分別計算所確定的每個目標(biāo)主鍵的取模余數(shù),包括:針對所確定的每個目標(biāo)主鍵,利用所述取模算法計算所述目標(biāo)主鍵的取模余數(shù)。例如,當(dāng)目標(biāo)主鍵的數(shù)值為5時,若取模算法指示對3進(jìn)行取模計算,則針對數(shù)值為5的目標(biāo)主鍵,對3進(jìn)行取模計算,所述目標(biāo)主鍵的數(shù)值為5的取模余數(shù)為2。
S702、從所確定的服務(wù)器中,確定具有與計算得到的取模余數(shù)中的任意一個取模余數(shù)相同的本地取模余數(shù)的服務(wù)器。
可選的,從所確定的服務(wù)器中,確定的具有與計算得到的取模余數(shù)中的任意一個取模余數(shù)相同的本地取模余數(shù)的服務(wù)器,作為從所確定的服務(wù)器中,確定的與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)相匹配的服務(wù)器。
通過上述對本申請實施例提供的一種將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器方法的進(jìn)一步介紹,使得本申請實施例提供的數(shù)據(jù)請求方法更加清晰、完整,便于本領(lǐng)域技術(shù)人員理解。
上述本發(fā)明公開的實施例中詳細(xì)描述了方法,對于本發(fā)明的方法可采用多種形式的裝置實現(xiàn),因此本發(fā)明還公開了一種數(shù)據(jù)請求裝置,下面給出具體的實施例進(jìn)行詳細(xì)說明。
圖9為本申請實施例提供的一種數(shù)據(jù)請求裝置的結(jié)構(gòu)示意圖。
在本申請實施例中,優(yōu)選的,如圖9所示的裝置應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器。
如圖9所示,該裝置包括:
數(shù)據(jù)請求接收單元81,用于接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
本地查找單元82,用于本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83,用于如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
結(jié)果返回單元84,用于如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
本發(fā)明實施例提供的數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83的一種可選結(jié)構(gòu)參見圖10,數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83包括:
關(guān)聯(lián)單元91,用于如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,在所接收的數(shù)據(jù)請求中,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求;
第一數(shù)據(jù)請求轉(zhuǎn)發(fā)子單元92,用于轉(zhuǎn)發(fā)所得到的數(shù)據(jù)請求至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器。
在本申請實施例中,優(yōu)選的,將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器后,調(diào)整轉(zhuǎn)發(fā)次數(shù)與數(shù)據(jù)請求的已轉(zhuǎn)發(fā)次數(shù)相應(yīng)。
本發(fā)明實施例提供的數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83的一種可選結(jié)構(gòu),數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83包括:第一轉(zhuǎn)發(fā)單元,用于如果當(dāng)前轉(zhuǎn)發(fā)次數(shù)與所述數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量不匹配,將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器。
進(jìn)一步的,本申請實施例提供的一種數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83還包括:第二轉(zhuǎn)發(fā)單元,用于如果當(dāng)前轉(zhuǎn)發(fā)次數(shù)與所述數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器的數(shù)量匹配,根據(jù)所述關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求確定返回結(jié)果,將所確定的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
本發(fā)明實施例提供的數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83的另一種可選結(jié)構(gòu)參見圖11,數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83包括:
第一確定單元101,用于從關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中,確定未關(guān)聯(lián)有值的目標(biāo)主鍵;
第二確定單元102,用于從所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器;
第二數(shù)據(jù)請求轉(zhuǎn)發(fā)子單元103,用于將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所確定的任意一個本地存儲有與所確定的目標(biāo)主鍵關(guān)聯(lián)的值的服務(wù)器。
本發(fā)明實施例提供的第二確定單元102的一種可選結(jié)構(gòu)參見圖12,第二確定單元102包括:
第一服務(wù)器確定單元111,用于確定所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器;
主鍵獲取單元112,用于分別獲取所確定的每個所述服務(wù)器本地存儲的鍵值對的主鍵;
第二服務(wù)器確定單元113,用于從所確定的服務(wù)器中,確定本地存儲有與所確定的目標(biāo)主鍵相同的主鍵的服務(wù)器。
本發(fā)明實施例提供的數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83的又一種可選結(jié)構(gòu)參見圖13數(shù)據(jù)請求轉(zhuǎn)發(fā)單元83包括:
第三確定單元121,用于從關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求中,確定未關(guān)聯(lián)有值的目標(biāo)主鍵;
第四確定單元122,用于確定所述數(shù)據(jù)存儲系統(tǒng)中未接收過數(shù)據(jù)請求的服務(wù)器;
取模余數(shù)獲取單元123,用于獲取所述數(shù)據(jù)存儲系統(tǒng)的取模算法以及所確定的每個所述服務(wù)器的本地取模余數(shù);
第五確定單元124,用于從所確定的服務(wù)器中,確定與所確定的目標(biāo)主鍵利用所述取模算法計算得到的取模余數(shù)相匹配的服務(wù)器;
計算單元125,用于將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所確定的任意一個與所確定的目標(biāo)主鍵利用所述取模算法計算得到取模余數(shù)相匹配的服務(wù)器。
本發(fā)明實施例提供的第五確定單元124的一種可選結(jié)構(gòu)參見圖14,第五確定單元124包括:
取模余數(shù)計算單元131,用于利用所述取模算法分別計算所確定的每個目標(biāo)主鍵的取模余數(shù);
第三服務(wù)器確定單元132,用于從所確定的服務(wù)器中,確定具有與計算得到的取模余數(shù)中的任意一個取模余數(shù)相同的本地取模余數(shù)的服務(wù)器。
可選的,數(shù)據(jù)請求裝置可以為硬件設(shè)備,上文描述的模塊、單元可以為設(shè)置于數(shù)據(jù)請求裝置內(nèi)的功能模塊。圖15示出了數(shù)據(jù)請求裝置的硬件結(jié)構(gòu)框圖,參照圖15,數(shù)據(jù)請求裝置可以包括:處理器141,通信接口142,存儲器143和通信總線144;其中處理器141、通信接口142、存儲器143通過通信總線144完成相互間的通信;可選的,通信接口142可以為通信模塊的接口,如GSM模塊的接口;
處理器141,用于執(zhí)行程序;存儲器143,用于存放程序;程序可以包括程序代碼,程序代碼包括計算機操作指令;
處理器141可能是一個中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路;存儲器143可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
其中,程序可具體用于:
接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
本地查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
本申請實施例提供一種數(shù)據(jù)請求裝置,應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器,通過接收攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵的數(shù)據(jù)請求;本地查找與目標(biāo)主鍵關(guān)聯(lián)的值;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果并發(fā)送給請求數(shù)據(jù)的客戶端的方式,使得當(dāng)客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對時,不需與數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器進(jìn)行多次交互,在提高客戶端接口性能的基礎(chǔ)上,實現(xiàn)了在數(shù)據(jù)存儲系統(tǒng)中請求數(shù)據(jù)的目的。
本發(fā)明實施例還公開一種數(shù)據(jù)存儲系統(tǒng),所述數(shù)據(jù)存儲系統(tǒng)包括至少一個服務(wù)器,各所述服務(wù)器包括:
存儲器,預(yù)先存儲有至少一個鍵值對;
處理器,接收數(shù)據(jù)請求,所述數(shù)據(jù)請求攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵;
在所述存儲器中查找與所述目標(biāo)主鍵關(guān)聯(lián)的值;
如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至所述數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;
如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果,將所得到的返回結(jié)果發(fā)送給請求數(shù)據(jù)的客戶端。
本申請實施例提供一種數(shù)據(jù)存儲系統(tǒng),應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器,通過接收攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵的數(shù)據(jù)請求;本地查找與目標(biāo)主鍵關(guān)聯(lián)的值;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果并發(fā)送給請求數(shù)據(jù)的客戶端的方式,使得當(dāng)客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對時,不需與數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器進(jìn)行多次交互,在提高客戶端接口性能的基礎(chǔ)上,實現(xiàn)了在數(shù)據(jù)存儲系統(tǒng)中請求數(shù)據(jù)的目的。
綜上:
本申請實施例提供一種數(shù)據(jù)請求方法及裝置和數(shù)據(jù)存儲系統(tǒng),應(yīng)用于數(shù)據(jù)存儲系統(tǒng)中的任一服務(wù)器,通過接收攜帶至少一個未關(guān)聯(lián)有值的目標(biāo)主鍵的數(shù)據(jù)請求;本地查找與目標(biāo)主鍵關(guān)聯(lián)的值;如果存在未查找到關(guān)聯(lián)的值的目標(biāo)主鍵,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,并將關(guān)聯(lián)有查找到的值的目標(biāo)主鍵的數(shù)據(jù)請求轉(zhuǎn)發(fā)至數(shù)據(jù)存儲系統(tǒng)中的另一未接收過數(shù)據(jù)請求的服務(wù)器;如果所有目標(biāo)主鍵均查找到關(guān)聯(lián)的值,將查找到的值關(guān)聯(lián)到相應(yīng)的目標(biāo)主鍵,得到返回結(jié)果并發(fā)送給請求數(shù)據(jù)的客戶端的方式,使得當(dāng)客戶端向數(shù)據(jù)存儲系統(tǒng)請求多個鍵值對時,不需與數(shù)據(jù)存儲系統(tǒng)中的服務(wù)器進(jìn)行多次交互,在提高客戶端接口性能的基礎(chǔ)上,實現(xiàn)了在數(shù)據(jù)存儲系統(tǒng)中請求數(shù)據(jù)的目的。
本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。