成人打一炮免费视频,亚洲天堂视频在线观看,97视频久久久,日本japanese护士色高清,五月婷婷丁香,日韩精品一级无码毛片免费,国产欧美日韩精品网红剧情演绎

一種數(shù)據(jù)同步方法及裝置與流程

文檔序號(hào):11234068閱讀:460來(lái)源:國(guó)知局
一種數(shù)據(jù)同步方法及裝置與流程

本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)同步方法及裝置。



背景技術(shù):

隨著信息技術(shù)的發(fā)展,在線系統(tǒng)(如:網(wǎng)站)的訪問(wèn)量不斷增加,用戶規(guī)模不斷擴(kuò)大,為了保證用戶獲得在線系統(tǒng)所提供的業(yè)務(wù)服務(wù)的穩(wěn)定性和效率,在線系統(tǒng)后臺(tái)的服務(wù)器和相應(yīng)的數(shù)據(jù)庫(kù)通常會(huì)部署在異地,其中,部署于異地的數(shù)據(jù)庫(kù)往往是讀寫(xiě)分離的兩類(lèi)數(shù)據(jù)庫(kù),即,讀數(shù)據(jù)庫(kù)和寫(xiě)數(shù)據(jù)庫(kù)。

現(xiàn)有技術(shù)中,為了減緩大量訪問(wèn)請(qǐng)求的壓力,并提升對(duì)業(yè)務(wù)處理的效率,服務(wù)器會(huì)針對(duì)相應(yīng)的業(yè)務(wù)設(shè)置緩存,即,將該業(yè)務(wù)對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)于緩存中(緩存中的數(shù)據(jù)與數(shù)據(jù)庫(kù)中的該業(yè)務(wù)對(duì)應(yīng)的數(shù)據(jù)一致),從而,服務(wù)器可以通過(guò)緩存中的數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)執(zhí)行讀/寫(xiě)操作,最終完成對(duì)業(yè)務(wù)的處理。

具體地,如圖1所示,第一服務(wù)器和第一數(shù)據(jù)庫(kù)位于a地,相應(yīng)地,第二服務(wù)器和第二數(shù)據(jù)庫(kù)位于b地,第一服務(wù)器和第二服務(wù)器分別具有相應(yīng)的緩存,緩存中的數(shù)據(jù)分別與第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù)中的數(shù)據(jù)一致,此時(shí),位于a地的第一服務(wù)器處理業(yè)務(wù)后將相應(yīng)的數(shù)據(jù)寫(xiě)入第一數(shù)據(jù)庫(kù)中,第一數(shù)據(jù)庫(kù)和位于b地的第二數(shù)據(jù)庫(kù)之間保持?jǐn)?shù)據(jù)傳輸,也即,第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù)中的數(shù)據(jù)可保持同步。

但是,當(dāng)?shù)谝环?wù)器通過(guò)緩存修改了第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)后,對(duì)于b地的第二服務(wù)器而言,其中的緩存內(nèi)的數(shù)據(jù)就會(huì)失效(也即,當(dāng)前第二服務(wù)器的緩存內(nèi)的數(shù)據(jù)與第二數(shù)據(jù)庫(kù)中的數(shù)據(jù)并不一致),這就會(huì)導(dǎo)致查詢業(yè)務(wù)所查詢到的數(shù)據(jù)不準(zhǔn)確。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)同步方法及裝置,用以解決現(xiàn)有技術(shù)中異地服務(wù)器中緩存數(shù)據(jù)同步的問(wèn)題。

本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)同步方法,包括:

第一服務(wù)器接收寫(xiě)請(qǐng)求,其中,所述第一服務(wù)器與第一數(shù)據(jù)庫(kù)相匹配;

根據(jù)所述寫(xiě)請(qǐng)求,將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù);

將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至該第一服務(wù)器的第一緩存中;

根據(jù)第一緩存中加載的待同步數(shù)據(jù),生成緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器,使得所述第二服務(wù)器根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

本申請(qǐng)實(shí)施例還提供的一種數(shù)據(jù)同步方法,包括:

第二服務(wù)器接收由第一服務(wù)器發(fā)送的緩存同步數(shù)據(jù);其中,所述緩存同步數(shù)據(jù)是第一服務(wù)器將數(shù)據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至第一數(shù)據(jù)庫(kù)中,并將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至第一緩存中的;

根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)同步裝置,包括:

接收模塊,用于接收寫(xiě)請(qǐng)求,其中,所述第一服務(wù)器與第一數(shù)據(jù)庫(kù)相匹配;

寫(xiě)入模塊,用于根據(jù)所述寫(xiě)請(qǐng)求,將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù);

加載模塊,用于將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至該第一服務(wù)器的第一緩存中;

數(shù)據(jù)同步模塊,用于根據(jù)第一緩存中加載的待同步數(shù)據(jù),生成緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器,使得所述第二服務(wù)器根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

本申請(qǐng)實(shí)施例還提供的一種數(shù)據(jù)同步裝置,包括:

接收模塊,用于接收由第一服務(wù)器發(fā)送的緩存同步數(shù)據(jù);其中,所述緩存 同步數(shù)據(jù)是第一服務(wù)器將數(shù)據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至第一數(shù)據(jù)庫(kù)中,并將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至第一緩存中的;

數(shù)據(jù)同步模塊,用于根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)同步方法及裝置,通過(guò)該方法,當(dāng)?shù)谝环?wù)器根據(jù)寫(xiě)請(qǐng)求將相應(yīng)的數(shù)據(jù)寫(xiě)入至第一數(shù)據(jù)庫(kù),并將寫(xiě)入的數(shù)據(jù)加載至第一緩存后,會(huì)向位于異地的第二服務(wù)器發(fā)送緩存同步數(shù)據(jù),以使得第二服務(wù)器根據(jù)緩存同步數(shù)據(jù),將待同步的數(shù)據(jù)寫(xiě)入第二緩存中,從而完成緩存中數(shù)據(jù)的同步操作。這樣的方式可以有效保證第二緩存中的數(shù)據(jù)實(shí)時(shí)獲取同步更新,不會(huì)因長(zhǎng)時(shí)間不更新導(dǎo)致第二緩存中的數(shù)據(jù)失效。

附圖說(shuō)明

此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:

圖1為異地服務(wù)器與數(shù)據(jù)庫(kù)的架構(gòu)示意圖;

圖2為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)同步過(guò)程;

圖3為本申請(qǐng)實(shí)施例提供的另一種數(shù)據(jù)同步過(guò)程;

圖4為本申請(qǐng)實(shí)施例提供的基于圖1所示的架構(gòu)下在實(shí)際應(yīng)用時(shí)的數(shù)據(jù)同步過(guò)程;

圖5為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)同步裝置結(jié)構(gòu)示意圖;

圖6為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)同步裝置結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的 實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。

在本申請(qǐng)實(shí)施中,異地的服務(wù)器和數(shù)據(jù)庫(kù)的結(jié)構(gòu)關(guān)系仍可以參考圖1,在圖1所示的結(jié)構(gòu)關(guān)系的基礎(chǔ)上,本申請(qǐng)實(shí)施例中提供一種數(shù)據(jù)同步方法,如圖2所示,具體包括以下步驟:

s201:第一服務(wù)器接收寫(xiě)請(qǐng)求。

其中,第一服務(wù)器與第一數(shù)據(jù)庫(kù)相匹配。

所述的第一服務(wù)器,是在線系統(tǒng)后臺(tái)用于處理業(yè)務(wù)的服務(wù)器,可以認(rèn)為,第一服務(wù)器在對(duì)業(yè)務(wù)進(jìn)行處理時(shí),用于向第一數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù),這里的寫(xiě)入數(shù)據(jù)包括對(duì)數(shù)據(jù)的修改、刪除、增加等操作。也就是說(shuō),在本申請(qǐng)實(shí)施例中,第一服務(wù)器用于執(zhí)行寫(xiě)操作。當(dāng)然,在實(shí)際應(yīng)用中,第一服務(wù)器可以具備對(duì)第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢、讀取的操作,在本申請(qǐng)中將針對(duì)第一服務(wù)器執(zhí)行寫(xiě)操作的場(chǎng)景進(jìn)行說(shuō)明,這并不構(gòu)成對(duì)本申請(qǐng)的限定。

所述的第一數(shù)據(jù)庫(kù),具體是一種寫(xiě)數(shù)據(jù)庫(kù),也即,第一數(shù)據(jù)庫(kù)可接收第一服務(wù)器寫(xiě)入數(shù)據(jù)。在實(shí)際應(yīng)用中,第一數(shù)據(jù)庫(kù)和第一服務(wù)器處于同一位置(即如圖1所示)。

正如前述,第一服務(wù)器可以執(zhí)行寫(xiě)操作,所以,第一服務(wù)器可對(duì)相應(yīng)業(yè)務(wù)的寫(xiě)請(qǐng)求進(jìn)行處理。本申請(qǐng)實(shí)施中,寫(xiě)請(qǐng)求由相應(yīng)的業(yè)務(wù)發(fā)出。這里并不作具體限定。

s202:根據(jù)所述寫(xiě)請(qǐng)求,將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù)。

上述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)就是需要進(jìn)行增加、刪除或修改等操作的數(shù)據(jù),那么,第一服務(wù)器在接收到寫(xiě)請(qǐng)求后,就會(huì)將相應(yīng)的數(shù)據(jù)寫(xiě)入至與第一服務(wù)器相匹配的第一數(shù)據(jù)庫(kù)中。

s203:將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至該第一服務(wù)器的第一緩存中。

作為在本申請(qǐng)實(shí)施例中的一種方式,所述的第一緩存可以是第一服務(wù)器在其內(nèi)存中創(chuàng)建的緩存,而在本申請(qǐng)實(shí)施例中的另一種方式下,若在a地有多臺(tái)服務(wù)器,那么,第一緩存可由單獨(dú)的緩存設(shè)備實(shí)現(xiàn),也即,多臺(tái)服務(wù)器共用第一緩存。這兩種方式將根據(jù)實(shí)際應(yīng)用的需要進(jìn)行設(shè)定,并不構(gòu)成對(duì)本申請(qǐng)的限定。

當(dāng)?shù)谝环?wù)器將相應(yīng)的數(shù)據(jù)寫(xiě)入至第一服務(wù)器后,為了保證該第一緩存中的數(shù)據(jù)與第一數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)的一致性,所以,第一服務(wù)器還會(huì)將寫(xiě)入至第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)加載至第一緩存中。可以認(rèn)為,第一服務(wù)器加載至第一緩存中的數(shù)據(jù)在后續(xù)過(guò)程中將同步至第二緩存中,故第一服務(wù)器加載至第一緩存中的數(shù)據(jù)也稱(chēng)為待同步數(shù)據(jù)(此時(shí)還未進(jìn)行緩存之間的數(shù)據(jù)同步操作)。之后將執(zhí)行緩存之間的數(shù)據(jù)同步操作,也即,執(zhí)行下述步驟s204。

s204:根據(jù)第一緩存中加載的待同步數(shù)據(jù),生成緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器,使得所述第二服務(wù)器根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

需要說(shuō)明的是,在實(shí)際應(yīng)用時(shí),第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù)之間會(huì)保持實(shí)時(shí)的數(shù)據(jù)同步,也就是說(shuō),經(jīng)過(guò)前述步驟后,第一服務(wù)器寫(xiě)入至第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)將同步是第二數(shù)據(jù)庫(kù)中。但此時(shí),第二緩存內(nèi)的數(shù)據(jù)未被同步,其中的數(shù)據(jù)已成為過(guò)期數(shù)據(jù)。

基于此,在本申請(qǐng)實(shí)施例中,當(dāng)?shù)谝环?wù)器將寫(xiě)入至第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)加載至第一緩存中后,為了保證第二緩存內(nèi)的數(shù)據(jù)也能夠同步,故第一服務(wù)器會(huì)將第一緩存中加載的待同步數(shù)據(jù),發(fā)送給第二服務(wù)器,使得第二服務(wù)器完成對(duì)第二緩存的數(shù)據(jù)同步操作。

當(dāng)然,對(duì)于上述的第二服務(wù)器而言,可以是在線系統(tǒng)后臺(tái)用于處理查詢業(yè)務(wù)的服務(wù)器(即,在實(shí)際應(yīng)用時(shí),第二服務(wù)器所處理的請(qǐng)求通常時(shí)讀請(qǐng)求)。此外,對(duì)于第二緩存而言,與上述的第一緩存相類(lèi)似,既可以是由第二服務(wù)器在其內(nèi)存中所創(chuàng)建的,也可以是由相應(yīng)的緩存設(shè)備實(shí)現(xiàn),供多臺(tái)服務(wù)器使用。 這里并不構(gòu)成對(duì)本申請(qǐng)的限定。

通過(guò)上述步驟,當(dāng)?shù)谝环?wù)器根據(jù)寫(xiě)請(qǐng)求將相應(yīng)的數(shù)據(jù)寫(xiě)入至第一數(shù)據(jù)庫(kù),并將寫(xiě)入的數(shù)據(jù)加載至第一緩存后,會(huì)向位于異地的第二服務(wù)器發(fā)送緩存同步數(shù)據(jù),以使得第二服務(wù)器根據(jù)緩存同步數(shù)據(jù),將待同步的數(shù)據(jù)寫(xiě)入第二緩存中,從而完成緩存中數(shù)據(jù)的同步操作。這樣的方式可以有效保證第二緩存中的數(shù)據(jù)實(shí)時(shí)獲取同步更新,不會(huì)因長(zhǎng)時(shí)間不更新導(dǎo)致第二緩存中的數(shù)據(jù)失效。

對(duì)于本申請(qǐng)的上述內(nèi)容需要說(shuō)明的是,在實(shí)際應(yīng)用中,第一服務(wù)器在向第二服務(wù)器發(fā)送緩存同步數(shù)據(jù)時(shí),通常是以消息體的方式發(fā)送,其中,消息體是一種數(shù)據(jù)載體,用于傳輸數(shù)據(jù),如:超文本傳輸協(xié)議(hypertexttransferprotocol,http)消息體。消息體所承載的數(shù)據(jù)大小有限,而第一緩存中的待同步數(shù)據(jù)的大小可能超過(guò)消息體所能承載的數(shù)據(jù)容量大小,這種情況下將影響兩個(gè)異地的服務(wù)器之間的數(shù)據(jù)傳輸。

而考慮到在實(shí)際應(yīng)用中,數(shù)據(jù)庫(kù)可提供一種能夠起到標(biāo)識(shí)作用的sequence數(shù)據(jù),那么,如果使用sequence數(shù)據(jù)來(lái)代替數(shù)據(jù)大小過(guò)大的待同步數(shù)據(jù),則能夠保證異地的兩個(gè)服務(wù)器之間正常的數(shù)據(jù)傳輸。

因此,在本申請(qǐng)實(shí)施例中,在將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù)之前,所述方法還包括:所述第一服務(wù)器向所述第一數(shù)據(jù)庫(kù)申請(qǐng)sequence數(shù)據(jù),建立該sequence數(shù)據(jù)與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)的關(guān)聯(lián)關(guān)系。

sequence數(shù)據(jù)具體是一種不重復(fù)、具有唯一性的序列,由第一數(shù)據(jù)庫(kù)提供。具體地,第一數(shù)據(jù)庫(kù)將根據(jù)第一服務(wù)器的申請(qǐng),為第一服務(wù)器提供sequence數(shù)據(jù)(一次申請(qǐng)獲得一個(gè)sequence數(shù)據(jù)),第一服務(wù)器在獲得了sequence數(shù)據(jù)后,就會(huì)建立sequence數(shù)據(jù)和寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。并將sequence數(shù)據(jù)和對(duì)應(yīng)的數(shù)據(jù)一并寫(xiě)入至第一數(shù)據(jù)庫(kù)中。

也即,對(duì)于前述步驟s202中,將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù),具體包括:將所述數(shù)據(jù)以及與該數(shù)據(jù)相關(guān)聯(lián)的sequence數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù)。

在實(shí)際應(yīng)用時(shí),第一數(shù)據(jù)庫(kù)將構(gòu)建一張數(shù)據(jù)表,用以記錄sequence數(shù)據(jù)與寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。

例如:如表1所示,為第一數(shù)據(jù)庫(kù)所構(gòu)建的sequence數(shù)據(jù)表,其中,sequence數(shù)據(jù)表記錄了sequence數(shù)據(jù)和由第一服務(wù)器所寫(xiě)入的數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系。

表1

在表1中可見(jiàn),由第一服務(wù)器寫(xiě)入至第一數(shù)據(jù)庫(kù)中的數(shù)據(jù),都會(huì)有相應(yīng)的sequence數(shù)據(jù)與其對(duì)應(yīng)。當(dāng)然,如表1所示的sequence表將存儲(chǔ)于第一數(shù)據(jù)庫(kù)中,這里并不構(gòu)成對(duì)本申請(qǐng)的限定。

之后,第一服務(wù)器也會(huì)將sequence數(shù)據(jù)加載至第一緩存中,即,對(duì)于上述步驟s203中,將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至該第一服務(wù)器的第一緩存中,具體包括:將所述數(shù)據(jù)以及與該數(shù)據(jù)相關(guān)聯(lián)的sequence數(shù)據(jù)加載至所述第一緩存中。

這樣一來(lái),此時(shí)第一緩存中就存儲(chǔ)了sequence數(shù)據(jù)以及第一服務(wù)器寫(xiě)入第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

在此情況下,上述步驟s204中,根據(jù)第一緩存中加載的待同步數(shù)據(jù),生成緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器,具體包括:判斷加載至第一緩存中的數(shù)據(jù)大小是否超過(guò)預(yù)設(shè)的消息體容量閾值,若是,則根據(jù)所述第一緩存中的sequence數(shù)據(jù)生成緩存同步數(shù)據(jù),發(fā)送給第二服務(wù)器,否則,則根據(jù)所述第一緩存中的待同步數(shù)據(jù)生成緩存同步數(shù)據(jù),發(fā)送給第二服務(wù)器。

也就是說(shuō),如果要進(jìn)行同步的數(shù)據(jù)的大小超過(guò)了消息體能夠承載的數(shù)據(jù)容量,那么,就將sequence數(shù)據(jù)作為緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器,相反地,如果要進(jìn)行同步的數(shù)據(jù)的大小在消息體能夠承載的數(shù)據(jù)容量之內(nèi),那么,可以 直接將待同步的數(shù)據(jù)作為緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器。

具體而言,在實(shí)際應(yīng)用中的一種方式下,加載至第一緩存內(nèi)的數(shù)據(jù)格式通常為鍵值對(duì)的形式,如:<key,value>。如果數(shù)據(jù)大小超過(guò)消息體的容量閾值,那么,就以<key,sequence>的方式作為緩存同步數(shù)據(jù);而如果數(shù)據(jù)大小并未超過(guò)消息體的容量閾值,那么,就直接以<key,value>的方式作為緩存同步數(shù)據(jù)。

通過(guò)上述內(nèi)容可見(jiàn),正是通過(guò)使用sequence數(shù)據(jù)的方式,能夠在進(jìn)行緩存數(shù)據(jù)同步的過(guò)程中,有效避免因?yàn)閭鬏數(shù)臄?shù)據(jù)大小超過(guò)消息體容量閾值,導(dǎo)致數(shù)據(jù)傳輸過(guò)程受到影響。

以上內(nèi)容是基于第一服務(wù)器側(cè)的描述,對(duì)于異地的第二服務(wù)器而言,本申請(qǐng)實(shí)施例中還提供一種數(shù)據(jù)同步方法,如圖3所示,具體包括以下步驟:

s301:第二服務(wù)器接收由第一服務(wù)器發(fā)送的緩存同步數(shù)據(jù)。

其中,所述緩存同步數(shù)據(jù)是第一服務(wù)器將數(shù)據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至第一數(shù)據(jù)庫(kù)中,并將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至第一緩存中的。

s302:根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

如前所述,由第一服務(wù)器發(fā)送的緩存同步數(shù)據(jù)可能有兩種情況,一種情況為:緩存同步數(shù)據(jù)中包含寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)。另一種情況為:緩存同步數(shù)據(jù)中包含與寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)具有關(guān)聯(lián)關(guān)系的sequence數(shù)據(jù)。若為第一種情況,那么,第二服務(wù)器可以直接將緩存同步數(shù)據(jù)加載至第二緩存中,而若為第二種情況,第二服務(wù)器需要從與之匹配的第二數(shù)據(jù)庫(kù)中,查找與sequence數(shù)據(jù)相對(duì)應(yīng)的數(shù)據(jù)。

具體而言:

在所述緩存同步數(shù)據(jù)中包含寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)的場(chǎng)景下,上述步驟s302中,加載所述緩存同步數(shù)據(jù)至所述第二服務(wù)器的第二緩存中,具體包括:直接將所述緩存同步數(shù)據(jù)加載至所述第二服務(wù)器的第二緩存中。

在所述緩存同步數(shù)據(jù)中包含sequence數(shù)據(jù)的場(chǎng)景下,上述步驟s302中, 加載所述緩存同步數(shù)據(jù)至所述第二服務(wù)器的第二緩存中,具體包括:根據(jù)所述sequence數(shù)據(jù),從與所述第二服務(wù)器相匹配的第二數(shù)據(jù)庫(kù)中查找與該sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù),將查找到的、與sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)懶加載至所述第二服務(wù)器的第二緩存中。

從上述內(nèi)容中可見(jiàn),sequence數(shù)據(jù)起到了數(shù)據(jù)標(biāo)識(shí)的作用,通過(guò)sequence數(shù)據(jù),能夠有效減少在異地的兩個(gè)服務(wù)器之間所傳輸?shù)臄?shù)據(jù)的大小,便于數(shù)據(jù)的傳輸,當(dāng)?shù)诙?wù)器接收到了sequence數(shù)據(jù),就可以根據(jù)sequence數(shù)據(jù)從第二數(shù)據(jù)庫(kù)中查找與該sequence數(shù)據(jù)相匹配的數(shù)據(jù),加載至第二緩存中,也保證了第二緩存中的數(shù)據(jù)能夠及時(shí)得到同步更新。

當(dāng)然,在本申請(qǐng)實(shí)施例中的一種方式下,第二服務(wù)器采用懶加載的方式,將與sequence數(shù)據(jù)具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)加載至第二緩存中。其中,懶加載是指在有需求時(shí)才進(jìn)行加載,換言之,只有當(dāng)?shù)诙?wù)器接收到了相應(yīng)的查詢請(qǐng)求后,才會(huì)將查詢請(qǐng)求所要查詢的數(shù)據(jù)從第二數(shù)據(jù)庫(kù)中加載至第二緩存中,這樣的方式能夠減緩第二服務(wù)器的運(yùn)行負(fù)荷。

這里需要說(shuō)明的是,若第二服務(wù)器采用上述懶加載的方式,那么,當(dāng)?shù)诙?wù)器接收到了包含有sequence數(shù)據(jù)的緩存同步數(shù)據(jù)后,將刪除第二緩存中當(dāng)前同屬于同一業(yè)務(wù)的數(shù)據(jù),這樣以便于后續(xù)根據(jù)查詢請(qǐng)求對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行懶加載。

此外,在實(shí)際應(yīng)用時(shí),處于異地的兩個(gè)數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)同步時(shí),第二數(shù)據(jù)庫(kù)中的數(shù)據(jù)可能并未及時(shí)完成同步(可能由網(wǎng)絡(luò)延遲、數(shù)據(jù)庫(kù)的工作負(fù)荷等原因所導(dǎo)致,這里不作具體限定),在這樣的情況下,所述方法還包括:若未查找到與sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù),則進(jìn)行重試,并在重試指定次數(shù)后,向第一服務(wù)器發(fā)送同步失敗通知。

例如,當(dāng)?shù)诙?wù)器根據(jù)sequence數(shù)據(jù)在第二數(shù)據(jù)庫(kù)中未查找到對(duì)應(yīng)的數(shù)據(jù)時(shí),第二服務(wù)器可以重試3次,并在重試了3次均未查找到時(shí),則將發(fā)送同步失敗通知。

結(jié)合上述如圖2和圖3所示的數(shù)據(jù)同步方法,在實(shí)際應(yīng)用時(shí),具體如圖4所示,包括:

s401:第一服務(wù)器接收寫(xiě)請(qǐng)求。

s402:根據(jù)所述寫(xiě)請(qǐng)求,將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù)。

s403:將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至該第一服務(wù)器的第一緩存中。

s404:根據(jù)第一緩存中加載的待同步數(shù)據(jù),生成緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器。其中,若緩存同步數(shù)據(jù)中包含寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),則執(zhí)行步驟s405;若緩存同步數(shù)據(jù)中包含sequence數(shù)據(jù),則執(zhí)行步驟s406及步驟s407。

s405:第二服務(wù)器直接將所述緩存同步數(shù)據(jù)加載至所述第二服務(wù)器的第二緩存中。

s406:第二服務(wù)器根據(jù)所述sequence數(shù)據(jù),從第二數(shù)據(jù)庫(kù)中查找與該sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)。

s407:第二服務(wù)器將查找到的、與sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)懶加載至第二緩存中。

以上為本申請(qǐng)實(shí)施例提供的數(shù)據(jù)同步方法基于同樣的思路,本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)同步裝置,如圖5所示。在圖5中,所述數(shù)據(jù)同步裝置包括:接收模塊501、寫(xiě)入模塊502、加載模塊503、數(shù)據(jù)同步模塊504,其中,

接收模塊501,用于接收寫(xiě)請(qǐng)求,其中,所述第一服務(wù)器與第一數(shù)據(jù)庫(kù)相匹配。

寫(xiě)入模塊502,用于根據(jù)所述寫(xiě)請(qǐng)求,將與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù)。

加載模塊503,用于將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至該第一服務(wù)器的第一緩存中。

數(shù)據(jù)同步模塊504,用于根據(jù)第一緩存中加載的待同步數(shù)據(jù),生成緩存同步數(shù)據(jù)發(fā)送給第二服務(wù)器,使得所述第二服務(wù)器根據(jù)所述緩存同步數(shù)據(jù),將待 同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

在本申請(qǐng)實(shí)施例中,所述裝置還包括:sequence數(shù)據(jù)模塊505,用于在寫(xiě)入模塊502執(zhí)行之前,向所述第一數(shù)據(jù)庫(kù)申請(qǐng)sequence數(shù)據(jù),建立該sequence數(shù)據(jù)與所述寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)的關(guān)聯(lián)關(guān)系。

基于上述的sequence數(shù)據(jù),寫(xiě)入模塊502,具體用于將所述數(shù)據(jù)以及與該數(shù)據(jù)相關(guān)聯(lián)的sequence數(shù)據(jù)寫(xiě)入至所述第一數(shù)據(jù)庫(kù)。并且,此場(chǎng)景下,加載模塊503,具體用于將所述數(shù)據(jù)以及與該數(shù)據(jù)相關(guān)聯(lián)的sequence數(shù)據(jù)加載至所述第一緩存中。

進(jìn)一步地,數(shù)據(jù)同步模塊504,具體用于判斷加載至第一緩存中的數(shù)據(jù)大小是否超過(guò)預(yù)設(shè)的消息體容量閾值,若是,則根據(jù)所述第一緩存中的sequence數(shù)據(jù)生成緩存同步數(shù)據(jù),發(fā)送給第二服務(wù)器;否則,則根據(jù)所述第一緩存中的待同步數(shù)據(jù)生成緩存同步數(shù)據(jù),發(fā)送給第二服務(wù)器。

在上述裝置的基礎(chǔ)上,本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)同步裝置,如圖6所示。在圖6中,所述數(shù)據(jù)同步裝置包括:接收模塊601、數(shù)據(jù)同步模塊602,其中,

接收模塊601,用于接收由第一服務(wù)器發(fā)送的緩存同步數(shù)據(jù);其中,所述緩存同步數(shù)據(jù)是第一服務(wù)器將數(shù)據(jù)寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入至第一數(shù)據(jù)庫(kù)中,并將寫(xiě)入的數(shù)據(jù)作為待同步數(shù)據(jù)加載至第一緩存中的。

數(shù)據(jù)同步模塊602,用于根據(jù)所述緩存同步數(shù)據(jù),將待同步數(shù)據(jù)寫(xiě)入該第二服務(wù)器的第二緩存中,完成數(shù)據(jù)同步。

若緩存同步數(shù)據(jù)中包含寫(xiě)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),則數(shù)據(jù)同步模塊602,具體用于直接將所述緩存同步數(shù)據(jù)加載至所述第二服務(wù)器的第二緩存中。

若緩存同步數(shù)據(jù)中包含sequence數(shù)據(jù),則數(shù)據(jù)同步模塊602,具體用于根據(jù)所述sequence數(shù)據(jù),從與所述第二服務(wù)器相匹配的第二數(shù)據(jù)庫(kù)中查找與該sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù),將查找到的、與sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù)懶加載至所述第二服務(wù)器的第二緩存中。

此外,數(shù)據(jù)同步模塊602,還用于若未查找到與sequence數(shù)據(jù)相關(guān)聯(lián)的數(shù)據(jù),則進(jìn)行重試,并在重試指定次數(shù)后,向第一服務(wù)器發(fā)送同步失敗通知。

在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(pán)(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。

本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算 機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1