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