本申請涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種事務(wù)處理方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,以及社交網(wǎng)絡(luò)、智能設(shè)備的發(fā)展和應(yīng)用,使得數(shù)據(jù)量呈爆炸式增長。為了應(yīng)對海量數(shù)據(jù)的存儲使用,相應(yīng)地產(chǎn)生了分布式數(shù)據(jù)庫。
分布式數(shù)據(jù)庫可以是由多個數(shù)據(jù)庫服務(wù)器(databaseserver)組成的,每個databaseserver都可以提供全部或者部分數(shù)據(jù)的讀寫服務(wù)。通常,分布式數(shù)據(jù)庫支持事務(wù)并發(fā)的處理。這里的事務(wù)可以是指,對數(shù)據(jù)庫中數(shù)據(jù)的操作(如增、刪、改、查)。例如在處理并發(fā)事務(wù)時,分布式數(shù)據(jù)庫可以將不同事務(wù)分配給不同的數(shù)據(jù)庫服務(wù)器處理;再例如可以通過mvcc(multi-versionconcurrencycontrol,多版本并發(fā)控制)來實現(xiàn)事務(wù)并發(fā)處理。
具體地,分布式數(shù)據(jù)庫中維護有一個全局最大版本號,通常業(yè)內(nèi)稱為globalcommitedversion。一般的,版本號的大小可以表示了分布式數(shù)據(jù)庫中數(shù)據(jù)修改(如新增)的時間前后,版本號越大則數(shù)據(jù)修改的越晚。通常,可以使用時間戳(timestamp)如unixtimestamp作為版本號使用。所述全局最大版本號可以確定所述分布式數(shù)據(jù)庫中最后一個修改的數(shù)據(jù)。
現(xiàn)有技術(shù)中事務(wù)處理時,存在獲取全局最大版本號的效率較低或者可靠性較差的問題。
技術(shù)實現(xiàn)要素:
本申請?zhí)峁┑囊环N事務(wù)處理方法及裝置,以解決現(xiàn)有事務(wù)處理時,存在獲取全局最大版本號的效率較低或者可靠性較差的問題。
根據(jù)本申請實施例提供的一種事務(wù)處理方法,所述方法應(yīng)用在分布式數(shù)據(jù)庫中的數(shù)據(jù)庫服務(wù)器,所述方法包括:
針對待處理的事務(wù),向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求;其中,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成;
在接收到版本號服務(wù)器組返回的應(yīng)答報文后,基于所述應(yīng)答報文獲取全局最大版本號;
指定所獲取的全局最大版本號為所述待處理的事務(wù)的快照版本號,從而執(zhí)行所述待處理的事務(wù)。
可選的,所述向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求,具體包括:
向版本號服務(wù)器組中的主版本號服務(wù)器發(fā)送全局最大版本號的獲取請求;
所述基于所述應(yīng)答報文獲取全局最大版本號,具體包括:
獲取所述應(yīng)答報文中攜帶的全局最大版本號。
可選的,所述向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求,具體包括:
向版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的獲取請求;
所述在接收到版本號服務(wù)器組返回的應(yīng)答報文后,基于所述應(yīng)答報文獲取全局最大版本號,具體包括:
在預設(shè)的等待時長內(nèi),判斷返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述應(yīng)答報文攜帶有版本號服務(wù)器的局部最大版本號;
若是,將最大的局部最大版本號確定為全局最大版本號。
可選的,所述方法還包括:
在所述事務(wù)執(zhí)行完畢后,給所述事務(wù)分配一個比所述全局最大版本號大的事務(wù)版本號;
向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求;其中,所述更新請求中攜帶有所述事務(wù)版本號,并用于請求將全局最大版本號更新為所述事務(wù)版本號;
提交所述執(zhí)行完畢的事務(wù)。
可選的,所述在所述事務(wù)執(zhí)行完畢后,給所述事務(wù)分配一個比所述全局最大版本號大的事務(wù)版本號,具體包括:
在所述事務(wù)執(zhí)行完畢后,再次向所述版本號服務(wù)器組獲取全局最大版本號;
給所述事務(wù)分配一個比所述再次獲取到的全局最大版本號大的事務(wù)版本號。
可選的,所述向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求,具體包括:
向所述版本號服務(wù)器組中主版本號服務(wù)器發(fā)送全局最大版本號的更新請求。
可選的,所述提交所述執(zhí)行完畢的事務(wù),具體包括:
在接收到所述主版本號服務(wù)器返回第二應(yīng)答報文后,提交所述執(zhí)行完畢的事務(wù);其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
可選的,所述向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求,具體包括:
向所述版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的更新請求。
可選的,所述提交所述執(zhí)行完畢的事務(wù),具體包括:
在預設(shè)的第二等待時長內(nèi),判斷返回的第二應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述第二應(yīng)答報文表示版本號服務(wù)器收到該更新請求。
若是,提交所述執(zhí)行完畢的事務(wù)。
根據(jù)本申請實施例提供的一種事務(wù)處理方法,所述方法應(yīng)用在分布式數(shù)據(jù)庫中的版本號服務(wù)器組,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成,所述方法包括:
接收到數(shù)據(jù)庫服務(wù)器發(fā)送的全局最大版本號的獲取請求;
將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
可選的,所述將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器,具體包括:
將主版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
可選的,所述將主版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器,具體包括:
在主版本服務(wù)器不可用的情況下,從所述版本號服務(wù)器組中選取一個備用版本號服務(wù)器;
將所述備用版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
可選的,所述方法還包括:
所述主版本號服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求,該更新請求中攜帶有事務(wù)版本號;
所述主版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的全局最大版本號;
若是,所述主版本號服務(wù)器將所述事務(wù)版本號確定為新的全局最大版本號。
可選的,在所述主版本號服務(wù)器將所述事務(wù)版本號確定為新的全局最大版本號之后,所述方法還包括:
所述主版本號服務(wù)器向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
可選的,所述將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器,具體包括:
將所有版本號服務(wù)器維護的局部最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
可選的,所述方法還包括:
各個版本號服務(wù)器接收數(shù)據(jù)庫服務(wù)器廣播的更新請求,該更新請求中攜帶有事務(wù)版本號;
各個版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的局部最大版本號;
若是,則將所述事務(wù)版本號確定為其新的局部最大版本號。
可選的,所述方法還包括:
在所述事務(wù)版本號大于或者不大于其維護的局部最大版本號的情況下,向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示收到該更新請求。
根據(jù)本申請實施例提供的一種事務(wù)處理裝置,所述裝置應(yīng)用在分布式數(shù)據(jù)庫中的數(shù)據(jù)庫服務(wù)器,所述裝置包括:
發(fā)送單元,針對待處理的事務(wù),向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求;其中,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成;
獲取單元,在接收到版本號服務(wù)器組返回的應(yīng)答報文后,基于所述應(yīng)答報文獲取全局最大版本號;
執(zhí)行單元,指定所獲取的全局最大版本號為所述待處理的事務(wù)的快照版本號,從而執(zhí)行所述待處理的事務(wù)。
根據(jù)本申請實施例提供的一種事務(wù)處理裝置,所述裝置應(yīng)用在分布式數(shù)據(jù)庫中的版本號服務(wù)器組,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成,所述裝置包括:
接收單元,接收到數(shù)據(jù)庫服務(wù)器發(fā)送的全局最大版本號的獲取請求;
返回單元,將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
本申請實施例中,通過設(shè)置一個由多個(即至少兩個)用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成的版本號服務(wù)器組,所述多個為遠小于所有數(shù)據(jù)庫服務(wù)器的個數(shù)。在處理事務(wù)的數(shù)據(jù)庫獲取全局最大版本號時,由于存在多個版本號服務(wù)器,所有可以避免使用中心節(jié)點時發(fā)生中心節(jié)點不可用所造成無法獲取全局最大版本號的問題。而且,由于多個版本號服務(wù)器遠小于所有數(shù)據(jù)庫服務(wù)器的個數(shù),所以也可以避免了向所有數(shù)據(jù)庫服務(wù)器獲取局部最大版本號來確定全局最大版本號所造成效率低的問題;所以本申請實施例中數(shù)據(jù)庫服務(wù)器在執(zhí)行事務(wù)中,可以實現(xiàn)兼顧獲取全局最大版本號的效率以及可靠性,從而提升事務(wù)處理性能。
附圖說明
圖1為本申請一實施例提供的事務(wù)處理方法的流程圖;
圖2為本申請一實施例提供的分布式數(shù)據(jù)庫的架構(gòu)示意圖;
圖3為本申請一實施例提供的數(shù)據(jù)庫服務(wù)器獲取所有版本號服務(wù)器的局部最大版本號過程的示意圖;
圖4為本申請一實施例提供的數(shù)據(jù)庫服務(wù)器獲取主版本號服務(wù)器的全局最大版本號過程的示意圖;
圖5為本申請一實施例提供的事務(wù)處理方法的流程圖;
圖6為本申請一實施例提供的事務(wù)處理方法的流程圖;
圖7是本申請?zhí)峁┑氖聞?wù)處理裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖;
圖8為本申請一實施例提供的事務(wù)處理裝置的模塊示意圖;
圖9為本申請一實施例提供的事務(wù)處理裝置的模塊示意圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。
應(yīng)當理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應(yīng)于確定”。
相關(guān)技術(shù)中,數(shù)據(jù)庫服務(wù)器在處理事務(wù)之前,會給該事務(wù)分配一個快照版本號,通常業(yè)內(nèi)稱為snapshotversion;所述快照版本號用于表示該事務(wù)可以讀取到的數(shù)據(jù)范圍(只能讀取到比snapshotversion小的版本號所對應(yīng)的數(shù)據(jù))。一般的,所述快照版本號就是所述全局最大版本號,這樣事務(wù)就可以讀取到當前所有的數(shù)據(jù)。也就是說,數(shù)據(jù)庫服務(wù)器在真正處理事務(wù)前,需要先獲取當前的全局最大版本號,再分配事務(wù)對應(yīng)的快照版本號。
現(xiàn)有技術(shù)中,主要存在如下兩種維護全局最大版本號(globalcommitedversion)的方式:
第一種方式中,分布式數(shù)據(jù)庫中每個數(shù)據(jù)庫服務(wù)器(databaseserver)本地都會維護一個局部最大版本號(local_max_commited_version)。不同數(shù)據(jù)庫服務(wù)器之間可以同步局部最大版本號,從而保證每個數(shù)據(jù)庫服務(wù)器維護的局部最大版本號都相同,即每個局部最大版本號始終和全局最大版本號一致。具體地,每個數(shù)據(jù)庫服務(wù)器更新自身的局部最大版本號時,都需要將更新后的局部最大版本號廣播到所有的數(shù)據(jù)庫服務(wù)器;任意一個數(shù)據(jù)庫服務(wù)器收到廣播后,如果發(fā)現(xiàn)本地維護的局部最大版本號比廣播的小,則也會更新。
對于待處理事務(wù)的數(shù)據(jù)庫服務(wù)器,其獲取全局最大版本號時,直接將本地維護的局部最大版本號作為全局最大版本號即可。
第二種方式中,分布式數(shù)據(jù)庫會將一個數(shù)據(jù)庫服務(wù)器作為中心節(jié)點,該中心節(jié)點用于專門維護全局最大版本號(globalcommitedversion)。
對于待處理事務(wù)的數(shù)據(jù)庫服務(wù)器,其獲取全局最大版本號時,只需向該中心節(jié)點獲取對應(yīng)的全局最大版本號即可。
然而,針對第一種方式,雖然可以直接將本地維護的局部最大版本號作為全局最大版本號,但是同步局部最大版本號的效率較低,例如分布式數(shù)據(jù)庫中的數(shù)據(jù)庫服務(wù)器越多,則廣播所需時間也越多;而且,只有在接收到所有數(shù)據(jù)庫服務(wù)器返回應(yīng)答后,才可以完成同步。
針對第二種方式,一旦中心節(jié)點出現(xiàn)問題導致不可用如發(fā)生宕機,那么也將無法獲取到全局最大版本號。
綜上所述,現(xiàn)有技術(shù)中事務(wù)處理時,存在獲取全局最大版本號的效率較低或者可靠性較差的問題。
為了解決上述問題,請參見圖1,為本申請一實施例提供的事務(wù)處理方法的流程圖,包括以下步驟:
步驟110:數(shù)據(jù)庫服務(wù)器針對待處理的事務(wù),向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求。
如前所述數(shù)據(jù)庫服務(wù)器在處理所述待處理的事務(wù)之前,需要給所述待處理的事務(wù)分配一個快照版本號(snapshotversion),而所述快照版本號是基于分布式數(shù)據(jù)庫中維護的全局最大版本號(globalcommitedversion)確定的。也就是說,所述數(shù)據(jù)庫服務(wù)器在處理待處理的事務(wù)之前,還需要獲取全局最大版本號。
本實施例中,請結(jié)合圖2所示的分布式數(shù)據(jù)庫的架構(gòu)示意圖,所述分布式數(shù)據(jù)庫中可以由至少兩個數(shù)據(jù)庫服務(wù)器(databaseserver)組成,每個數(shù)據(jù)庫服務(wù)器都可以用于處理事務(wù)。如圖2所示,可以將至少兩個的數(shù)據(jù)庫服務(wù)器組成一個用于維護全局最大版本號的版本號服務(wù)器組。如此,在某個數(shù)據(jù)庫服務(wù)器需要處理事務(wù)時,可以向所述版本號服務(wù)器組發(fā)送全局版本號的獲取請求。
為了便于區(qū)別,本文中將所述版本號服務(wù)器組中的數(shù)據(jù)庫服務(wù)器稱之為版本號服務(wù)器。值得一提的是,所述版本號服務(wù)器僅是邏輯意義上的服務(wù)器,其本質(zhì)可以是數(shù)據(jù)庫服務(wù)器。
在一個實施例中,所述步驟110向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求,具體可以包括:
向版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的獲取請求。
在本實施例中,所述版本號服務(wù)器組中的每一個版本號服務(wù)器中都可以維護有一個局部最大版本號(local_max_commited_version)。
一般的,所述局部最大版本號可以是一個64位的整數(shù),可以表示為以納秒或微妙為單位的unix時間戳。版本號服務(wù)器維護該局部最大版本號,可以是記錄在內(nèi)存中,并且持久化數(shù)據(jù)。
值得一提的是,如果不進行持久化,版本號服務(wù)器每次重啟之后,還需要同步誤差:即需要等待一個時鐘誤差(clock_diff_upper_limit),所述時鐘誤差表示不同版本號服務(wù)器之間的時鐘誤差上限;然后再把此時的unix時間戳設(shè)置為局部最大版本號。
本實施例中,版本號服務(wù)器可以提供一個用于獲取的rpc(remoteprocedurecallprotocol,遠程過程調(diào)用協(xié)議)接口:獲取接口get_version()。所述數(shù)據(jù)庫服務(wù)器可以通過get_version()獲取版本號服務(wù)器的局部最大版本號。
在另一個實施例中,在所述版本號服務(wù)器組中,可以將一個版本號服務(wù)器作為主版本號服務(wù)器,其它的版本號服務(wù)器作為備份版本號服務(wù)器。
如此,所述步驟110向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求,具體可以包括:
向版本號服務(wù)器組中的主版本號服務(wù)器發(fā)送全局最大版本號的獲取請求。
在本實施例中,所述主版本號服務(wù)器維護有一個全局最大版本號。
一般的,所述全局最大版本號可以是一個64位的整數(shù),可以表示為以納秒或微妙為單位的unix時間戳。所述主版本號服務(wù)器維護該全局最大版本號,可以是記錄在內(nèi)存中,并且持久化數(shù)據(jù)。
值得一提的是,如果不進行持久化,版本號服務(wù)器每次重啟之后,還需要同步誤差:即需要等待一個時鐘誤差(clock_diff_upper_limit),所述時鐘誤差表示不同版本號服務(wù)器之間的時鐘誤差上限;然后再把此時的unix時間戳設(shè)置為全局最大版本號。
本實施例中,主版本號服務(wù)器可以提供一個用于獲取的rpc(remoteprocedurecallprotocol,遠程過程調(diào)用協(xié)議)接口:
獲取接口get_version():數(shù)據(jù)庫服務(wù)器可以通過廣播get_version()獲取主版本號服務(wù)器的局部最大版本。
值得一提的是,如果版本號服務(wù)器不是主版本號服務(wù)器,則其收到獲取請求或者更新請求后,還可以返回一個錯誤碼;而數(shù)據(jù)庫服務(wù)器收到錯誤碼后可以重新向主版本號服務(wù)器發(fā)送請求。如此,可以確保數(shù)據(jù)庫服務(wù)器始終是向主版本號服務(wù)器發(fā)送請求的。
步驟120:版本號服務(wù)器組接收數(shù)據(jù)庫服務(wù)器發(fā)送的全局最大版本號的獲取請求。
步驟121:版本號服務(wù)器組將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
本實施例中,如果步驟120中,版本號服務(wù)器組中的各個版本號服務(wù)器都接收到了數(shù)據(jù)庫服務(wù)器廣播的全局最大版本號的獲取請求;
則,所述步驟121,具體可以包括:
版本號服務(wù)器組將所有版本號服務(wù)器維護的局部最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
如果步驟120中,版本號服務(wù)器組中的主版本號服務(wù)器接收到了數(shù)據(jù)庫服務(wù)器廣播的全局最大版本號的獲取請求;
則,所述步驟121,具體可以包括:
將主版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
步驟130:所述數(shù)據(jù)庫服務(wù)器在接收到版本號服務(wù)器組返回的應(yīng)答報文后,基于所述應(yīng)答報文獲取全局最大版本號。
針對步驟110中,向版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的獲取請求;
則所述步驟130,具體可以包括:
在預設(shè)的等待時長內(nèi),判斷返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述應(yīng)答報文攜帶有版本號服務(wù)器的局部最大版本號;
若是,將最大的局部最大版本號確定為全局最大版本號。
本實施例中,如前所述,數(shù)據(jù)庫服務(wù)器向所有的版本號服務(wù)器廣播了get_version()請求之后,然后可以等待各個版本號服務(wù)器的應(yīng)答。在返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值到達預設(shè)比例之后,所述數(shù)據(jù)庫服務(wù)器可以從這些應(yīng)答報文攜帶的局部最大版本號中選取一個最大值,這個最大值就是全局最大版本號globalcommitedversion。需要說明的是,如果在返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值沒有到達預設(shè)比例的情況下,那么這次獲取請求就失敗了,該數(shù)據(jù)庫服務(wù)器可以再次獲取。
所述等待時長可以是人為設(shè)置的一個經(jīng)驗值。例如30秒。
所述預設(shè)比例可以是人為設(shè)置的一個經(jīng)驗值。通常,可以設(shè)置為1/2,即判斷返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達1/2。
如圖3所示數(shù)據(jù)庫服務(wù)器獲取所有版本號服務(wù)器的局部最大版本號過程的示意圖。版本號服務(wù)器組包含3個版本號服務(wù)器;
t1時刻,數(shù)據(jù)庫服務(wù)器向所有3個版號服務(wù)器廣播get_version()請求;
在預設(shè)的等待時長內(nèi),t2時候收到版本號服務(wù)器1的應(yīng)答,該應(yīng)答報文攜帶局部最大版本號v1;
t3時刻收到版本號服務(wù)器2的應(yīng)答,該應(yīng)答報文攜帶局部最大版本號v2;
由于t3時刻已經(jīng)收到超過一半的版本號服務(wù)器的應(yīng)答,所以可以從這兩個應(yīng)答中選取值大的局部最大版本號,即max(v1,v2)作為全局最大版本號。
針對步驟110中,向版本號服務(wù)器組中的主版本號服務(wù)器發(fā)送全局最大版本號的獲取請求。
所述步驟130,具體可以包括:
獲取所述應(yīng)答報文中攜帶的全局最大版本號。
如圖4所示數(shù)據(jù)庫服務(wù)器獲取主版本號服務(wù)器的全局最大版本號過程的示意圖。版本號服務(wù)器組包含2個版本號服務(wù)器,版本號服務(wù)器1是主版本號服務(wù)器,版本號服務(wù)器2是備用版本號服務(wù)器;
t1時刻,數(shù)據(jù)庫服務(wù)器向版本號服務(wù)器1發(fā)送get_version()請求;
t2時刻,收到了版本號服務(wù)器1的應(yīng)答,該應(yīng)答報文攜帶全局最大版本號;
則,數(shù)據(jù)庫服務(wù)器就可以獲取該應(yīng)答攜帶的全局最大版本號。
值得一提的是,如果版本號服務(wù)器1在t2時刻之后宕機或網(wǎng)絡(luò)中斷變得不可用了;
t3時刻,數(shù)據(jù)庫服務(wù)器依然向版本號服務(wù)器1請求發(fā)送get_version()請求,但版本號服務(wù)器1已經(jīng)宕機,所以這次請求失敗了;
然而很快版本號服務(wù)器2被選舉為新的主版本號服務(wù)器;
所以,在t4時刻,數(shù)據(jù)庫服務(wù)器可以把請求發(fā)給新的主版本號服務(wù)器,這次請求可以成功。從該例子可以得出只有在版本號服務(wù)器1不可用到版本號服務(wù)器2上任之間的這段時間數(shù)據(jù)庫服務(wù)器的請求才可能會失敗;而這段時間是很短的,所以該版本號服務(wù)器組可靠性較高。
步驟131:所述數(shù)據(jù)庫服務(wù)器指定所獲取的全局最大版本號為所述待處理的事務(wù)的快照版本號,從而執(zhí)行所述待處理的事務(wù)。
本實施例中,數(shù)據(jù)庫服務(wù)器獲取到全局最大版本號之后,可以指定所獲取的全局最大版本號為所述待處理的事務(wù)的快照版本號,從而執(zhí)行所述待處理的事務(wù)。
本申請實施例中,通過設(shè)置一個由多個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成的版本號服務(wù)器組,所述多個為遠小于所有數(shù)據(jù)庫服務(wù)器的個數(shù)。在處理事務(wù)的數(shù)據(jù)庫獲取全局最大版本號時,由于存在多個版本號服務(wù)器,所有可以避免使用中心節(jié)點時發(fā)生中心節(jié)點不可用所造成無法獲取全局最大版本號的問題。而且,由于多個版本號服務(wù)器遠小于所有數(shù)據(jù)庫服務(wù)器的個數(shù),所以也可以避免了向所有數(shù)據(jù)庫服務(wù)器獲取局部最大版本號來確定全局最大版本號所造成效率低的問題;所以本申請實施例中數(shù)據(jù)庫服務(wù)器在執(zhí)行事務(wù)中,可以實現(xiàn)兼顧獲取全局最大版本號的效率以及可靠性,從而提升事務(wù)處理性能。
在實際應(yīng)用中,數(shù)據(jù)庫服務(wù)器在執(zhí)行完事務(wù)處理后,如果該事務(wù)需要修改數(shù)據(jù)庫中的數(shù)據(jù)(例如新增數(shù)據(jù)),則還需要提交該事務(wù)。此時,所述數(shù)據(jù)庫服務(wù)器還需要分配一個事務(wù)版本號,通常業(yè)內(nèi)稱為commitversion。一般的,所述事務(wù)版本號需要比全局最大版本號大;在分布式數(shù)據(jù)庫中只有分配了事務(wù)版本號的事務(wù)才可以被提交。
如圖1所示,在所述步驟131之后,所述方法還可以包括:
步驟140:在所述事務(wù)執(zhí)行完畢后,所述數(shù)據(jù)庫服務(wù)器給所述事務(wù)分配一個比所述全局最大版本號大的事務(wù)版本號。
本實施例中,數(shù)據(jù)庫服務(wù)器可以在所述全局最大版本號的基礎(chǔ)上加1得到事務(wù)版本號的。
步驟141:所述數(shù)據(jù)庫服務(wù)器向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求。
本實施例中,所述更新請求中攜帶有所述事務(wù)版本號,并用于請求將全局最大版本號更新為所述事務(wù)版本號。
與數(shù)據(jù)庫服務(wù)器向所述版本號服務(wù)器組發(fā)送獲取請求類似的:
所述步驟141,具體可以包括:
向所述版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的更新請求。
本實施例中,所述版本號服務(wù)器組中的版本號服務(wù)器還可以提供一個用于更新的rpc接口:更新接口update_version(cv)。數(shù)據(jù)庫服務(wù)器可以通過update_version(cv)請求獲取所有版本號服務(wù)器更新維護的全局最大版本號。其中,cv為更新請求中攜帶的事務(wù)版本號。
與之對應(yīng)的,各個版本號服務(wù)器處理該更新請求的過程如下a1-a3所示:
a1:各個版本號服務(wù)器接收數(shù)據(jù)庫服務(wù)器廣播的更新請求;其中,所述更新請求中攜帶有所述事務(wù)版本號,并用于請求將全局最大版本號更新為所述事務(wù)版本號;
a2:各個版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的局部最大版本號;
a3:若是,則將所述事務(wù)版本號確定為其新的局部最大版本號。
本實施例中,如果事務(wù)版本號大于版本號服務(wù)器維護的局部最大版本號,則需要將所述事務(wù)版本號確定為新的局部最大版本號;反之,如果事務(wù)版本號小于等于版本號服務(wù)器維護的局部最大版本號,則不更新。
與前述版本號服務(wù)器組中,可以將一個版本號服務(wù)器作為主版本號服務(wù)器,其它的版本號服務(wù)器作為備份版本號服務(wù)器的實施例相對應(yīng)的,所述步驟141,具體可以包括:
向所述版本號服務(wù)器組中主版本號服務(wù)器發(fā)送全局最大版本號的更新請求。
本實施例中,所述版本號服務(wù)器組中的版本號服務(wù)器還可以提供一個用于更新的rpc接口:更新接口update_version(cv)。數(shù)據(jù)庫服務(wù)器可以通過update_version(cv)請求主版本號服務(wù)器更新維護的全局最大版本號。其中,cv為更新請求中攜帶的事務(wù)版本號。
與之對應(yīng)的,主版本號服務(wù)器處理該更新請求的過程如下b1-b3所示:
b1:所述主版本號服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求,該更新請求中攜帶有事務(wù)版本號;
b2:所述主版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的全局最大版本號;
b3:若是,所述主版本號服務(wù)器將所述事務(wù)版本號確定為新的全局最大版本號。
本實施例中,如果事務(wù)版本號大于主版本號服務(wù)器維護的全局最大版本號,則需要將所述事務(wù)版本號確定為新的全局最大版本號;反之,如果事務(wù)版本號小于等于主版本號服務(wù)器維護的全局最大版本號,則不更新。
步驟150:所述數(shù)據(jù)庫服務(wù)器提交所述執(zhí)行完畢的事務(wù)。
本實施例中,所述步驟150可以是在所述步驟141之后執(zhí)行的。也就是說,在所述數(shù)據(jù)庫服務(wù)器向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求之后,就可以提交所述執(zhí)行完畢的事務(wù)。
通過本實施例,數(shù)據(jù)庫服務(wù)可以實現(xiàn)對事務(wù)的提交。
在實際應(yīng)用中,事務(wù)處理到事務(wù)提交之間可能經(jīng)過了較長時間,例如前一天處理事務(wù),一天后才需要事務(wù)提交;那么,數(shù)據(jù)庫服務(wù)器獲取到的全局最大版本號還是前一天處理事務(wù)之前的,而由于分布式數(shù)據(jù)庫支持并發(fā)事務(wù),在這一天中真是的全局最大版本號通常已經(jīng)更新過了;這樣,基于過時的全局最大版本號分配的事務(wù)版本號時,很有可能比真正的全局最大版本號小。
為了解決這一問題,在本申請的又一個實施例中,所述步驟140,具體包括:
在所述事務(wù)執(zhí)行完畢后,再次向所述版本號服務(wù)器組獲取全局最大版本號;
給所述事務(wù)分配一個比所述再次獲取到的全局最大版本號大的事務(wù)版本號。
本實施例中,再次向所述版本號服務(wù)器組獲取全局最大版本號,與上述步驟110相同,此處不再贅述。
通過本實施例,在事務(wù)提交時,通過獲取最新的全局最大版本號,保證分配的事務(wù)版本號必然大于真正的全局最大版本號。
在本申請的又一個實施例中,版本號服務(wù)器在接收到數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求之后,還可以應(yīng)答數(shù)據(jù)庫服務(wù)器,從而通知所述數(shù)據(jù)庫服務(wù)器接收到了其更新請求。
具體地,在a1之后,還包括:
在接收數(shù)據(jù)庫服務(wù)器廣播的更新請求的情況下,向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示收到該更新請求。
具體地,在b1之后,還包括:
所述主版本號服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求的情況下,向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
相對應(yīng)的,所述步驟150,具體可以包括:
在預設(shè)的第二等待時長內(nèi),判斷返回的第二應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述第二應(yīng)答報文表示版本號服務(wù)器收到該更新請求。
若是,提交所述執(zhí)行完畢的事務(wù)。
本實施例中,所述第二等待時長可以是人為設(shè)置的一個經(jīng)驗值。值得一提的是,所述第二等待時長還可以是與上述等待時長相等。
通過本實施例,與原步驟150不同之處在于,數(shù)據(jù)庫服務(wù)器只有在取得了超過預設(shè)比例的版本號服務(wù)器應(yīng)答后,才可以提交事務(wù)。
在本申請的一個具體地實施例中,針對向所述版本號服務(wù)器組中主版本號服務(wù)器發(fā)送全局最大版本號的更新請求。
相應(yīng)地,所述步驟150,具體可以包括:
在接收到所述主版本號服務(wù)器返回第二應(yīng)答報文后,提交所述執(zhí)行完畢的事務(wù)。
通過本實施例,與原步驟150不同之處在于,數(shù)據(jù)庫服務(wù)器只有在取得了主版本號服務(wù)器應(yīng)答后,才可以提交事務(wù)。
以下結(jié)合圖5介紹本申請以分布式數(shù)據(jù)庫的數(shù)據(jù)庫服務(wù)器為主體的方法實施例,該實施例可以對應(yīng)圖1:
步驟210:針對待處理的事務(wù),向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求;其中,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成;
步驟220:在接收到版本號服務(wù)器組返回的應(yīng)答報文后,基于所述應(yīng)答報文獲取全局最大版本號;
步驟230:指定所獲取的全局最大版本號為所述待處理的事務(wù)的快照版本號,從而執(zhí)行所述待處理的事務(wù)。
與上述步驟110相同的,所述步驟210,具體包括:
針對待處理的事務(wù),向版本號服務(wù)器組中的主版本號服務(wù)器發(fā)送全局最大版本號的獲取請求;
相對應(yīng)的,所述步驟220中基于所述應(yīng)答報文獲取全局最大版本號,具體包括:
獲取所述應(yīng)答報文中攜帶的全局最大版本號。
與上述步驟110相同的,所述步驟210,具體包括:
向版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的獲取請求;
相對應(yīng)的,所述步驟220中基于所述應(yīng)答報文獲取全局最大版本號,具體包括:
在預設(shè)的等待時長內(nèi),判斷返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述應(yīng)答報文攜帶有版本號服務(wù)器的局部最大版本號;
若是,將最大的局部最大版本號確定為全局最大版本號。
如圖5所示在所述步驟230之后,還可以包括步驟240、250和260,該實施例可以對應(yīng)圖1所述實施例中步驟140、141和150。
步驟240:在所述事務(wù)執(zhí)行完畢后,給所述事務(wù)分配一個比所述全局最大版本號大的事務(wù)版本號;
步驟250:向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求;所述更新請求中攜帶有所述事務(wù)版本號,并用于請求將全局最大版本號更新為所述事務(wù)版本號;
步驟260:提交所述執(zhí)行完畢的事務(wù)。
與上述步驟140的一個具體地實施例相同的,所述240,具體可以包括:
在所述事務(wù)執(zhí)行完畢后,再次向所述版本號服務(wù)器組獲取全局最大版本號;
給所述事務(wù)分配一個比所述再次獲取到的全局最大版本號大的事務(wù)版本號。
與上述步驟141的一個具體地實施例相同的,所述步驟250,具體包括:
向所述版本號服務(wù)器組中主版本號服務(wù)器發(fā)送全局最大版本號的更新請求。
而所述步驟260,具體包括:
在接收到所述主版本號服務(wù)器返回第二應(yīng)答報文后,提交所述執(zhí)行完畢的事務(wù);其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
與上述步驟141的一個具體地實施例相同的,所述步驟250,具體包括:
向所述版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的更新請求。
而所述步驟260,具體包括:
在預設(shè)的第二等待時長內(nèi),判斷返回的第二應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述第二應(yīng)答報文表示版本號服務(wù)器收到該更新請求。
以下結(jié)合圖6介紹本申請以分布式數(shù)據(jù)庫的版本號服務(wù)器組為主體的方法實施例,該實施例可以對應(yīng)圖1:
步驟310:接收到數(shù)據(jù)庫服務(wù)器發(fā)送的全局最大版本號的獲取請求。
步驟320:將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
具體地,所述步驟320,可以包括:
將主版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
在另一個實施例中,所述將主版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器,具體包括:
在主版本服務(wù)器不可用的情況下,從所述版本號服務(wù)器組中選取一個備用版本號服務(wù)器;
將所述備用版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
具體地,在步驟320之后,所述方法還包括:
c1:所述主版本號服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求,該更新請求中攜帶有事務(wù)版本號;
c2所述主版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的全局最大版本號;
c3:若是,所述主版本號服務(wù)器將所述事務(wù)版本號確定為新的全局最大版本號。
所述c1-c3與前述b1-b3相同,此處不再贅述。
在c1之后,所述方法還包括:
所述主版本號服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求的情況下,向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
具體地,所述步驟320,可以包括:
將所有版本號服務(wù)器維護的局部最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
具體地,在步驟320之后,所述方法還包括:
d1:各個版本號服務(wù)器接收數(shù)據(jù)庫服務(wù)器廣播的更新請求,該更新請求中攜帶有事務(wù)版本號;
d2:各個版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的局部最大版本號;
d3:若是,則將所述事務(wù)版本號確定為其新的局部最大版本號。
所述d1-d3與前述a1-a3相同,此處不再贅述。
在d1之后,所述方法還包括:
在接收到數(shù)據(jù)庫服務(wù)器廣播的更新請求的情況下,向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示收到該更新請求。
與前述事務(wù)處理方法實施例相對應(yīng),本申請還提供了一種事務(wù)處理裝置的實施例。
本申請事務(wù)處理裝置的實施例可以分別應(yīng)用在分布式數(shù)據(jù)庫。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖7所示,為本申請事務(wù)處理裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖7所示的處理器、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲器之外,實施例中裝置所在的設(shè)備通常根據(jù)該事務(wù)處理的實際功能,還可以包括其他硬件,對此不再贅述。
參見圖8,為本申請一實施例提供的事務(wù)處理裝置的模塊圖,該實施例從分布式數(shù)據(jù)庫中的數(shù)據(jù)庫服務(wù)器側(cè)進行描述,所述裝置包括:發(fā)送單元410、獲取單元420和執(zhí)行單元430。
其中,發(fā)送單元410,針對待處理的事務(wù),向版本號服務(wù)器組發(fā)送全局最大版本號的獲取請求;其中,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成;
獲取單元420,在接收到版本號服務(wù)器組返回的應(yīng)答報文后,基于所述應(yīng)答報文獲取全局最大版本號;
執(zhí)行單元430,指定所獲取的全局最大版本號為所述待處理的事務(wù)的快照版本號,從而執(zhí)行所述待處理的事務(wù)。
在一個可選的實現(xiàn)方式中:
所述發(fā)送單元410,具體包括:
發(fā)送子單元,向版本號服務(wù)器組中的主版本號服務(wù)器發(fā)送全局最大版本號的獲取請求;
相應(yīng)地,所述獲取單元420,具體包括:
獲取子單元,在接收到版本號服務(wù)器組返回的應(yīng)答報文后,獲取所述應(yīng)答報文中攜帶的全局最大版本號。
在一個可選的實現(xiàn)方式中:
所述發(fā)送單元410,具體包括:
發(fā)送子單元,向版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的獲取請求;
相應(yīng)地,所述獲取單元420,具體包括:
判斷子單元,在預設(shè)的等待時長內(nèi),判斷返回的應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述應(yīng)答報文攜帶有版本號服務(wù)器的局部最大版本號;
確定子單元,在獲取到預設(shè)比例的版本號服務(wù)器返回的應(yīng)答報文的情況下,將最大的局部最大版本號確定為全局最大版本號。
在一個可選的實現(xiàn)方式中:
所述裝置還包括:
分配單元,在所述事務(wù)執(zhí)行完畢后,給所述事務(wù)分配一個比所述全局最大版本號大的事務(wù)版本號;
更新單元,向所述版本號服務(wù)器組發(fā)送全局最大版本號的更新請求;所述更新請求中攜帶有所述事務(wù)版本號,并用于請求將全局最大版本號更新為所述事務(wù)版本號;
提交單元,提交所述執(zhí)行完畢的事務(wù)。
在一個可選的實現(xiàn)方式中:
所述分配單元,具體包括:
發(fā)送子單元,在所述事務(wù)執(zhí)行完畢后,再次向所述版本號服務(wù)器組獲取全局最大版本號;
分配子單元,給所述事務(wù)分配一個比所述再次獲取到的全局最大版本號大的事務(wù)版本號。
在一個可選的實現(xiàn)方式中:
更新單元,具體包括:
更新子單元,向所述版本號服務(wù)器組中主版本號服務(wù)器發(fā)送全局最大版本號的更新請求。
在一個可選的實現(xiàn)方式中:
所述提交單元,具體包括:
提交子單元,在接收到所述主版本號服務(wù)器返回第二應(yīng)答報文后,提交所述執(zhí)行完畢的事務(wù);其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
在一個可選的實現(xiàn)方式中:
更新單元,具體包括:
更新子單元,向所述版本號服務(wù)器組中所有版本號服務(wù)器廣播全局最大版本號的更新請求。
在一個可選的實現(xiàn)方式中:
所述提交單元,具體包括:
判斷子單元,在預設(shè)的第二等待時長內(nèi),判斷返回的第二應(yīng)答報文數(shù)量與所有版本號服務(wù)器數(shù)量的比值是否到達預設(shè)比例;其中,所述第二應(yīng)答報文表示版本號服務(wù)器收到該更新請求。
提交子單元,在獲取到預設(shè)比例的版本號服務(wù)器返回的第二應(yīng)答報文的情況下,提交所述執(zhí)行完畢的事務(wù)。
參見圖9,為本申請一實施例提供的事務(wù)處理裝置的模塊圖,該實施例從分布式數(shù)據(jù)庫中的版本號服務(wù)器組側(cè)進行描述,所述版本號服務(wù)器組由至少兩個用于維護全局最大版本號的數(shù)據(jù)庫服務(wù)器組成,所述裝置包括:接收單元510和返回單元520。
其中,接收單元510,接收到數(shù)據(jù)庫服務(wù)器發(fā)送的全局最大版本號的獲取請求;
返回單元520,將維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
在一個可選的實現(xiàn)方式中:
所述返回單元520,具體包括:
返回子單元,將主版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
在一個可選的實現(xiàn)方式中:
所述返回子單元,具體包括:
選取子單元,在主版本服務(wù)器不可用的情況下,從所述版本號服務(wù)器組中選取一個備用版本號服務(wù)器;
第二返回子單元,將所述備用版本號服務(wù)器維護的全局最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
在一個可選的實現(xiàn)方式中:
所述裝置還包括:
接收更新請求單元,所述主版本號服務(wù)器接收所述數(shù)據(jù)庫服務(wù)器發(fā)送的更新請求,該更新請求中攜帶有事務(wù)版本號;
判斷單元,所述主版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的全局最大版本號;
更新單元,在所述事務(wù)版本號大于其維護的全局最大版本號的情況下,所述主版本號服務(wù)器將所述事務(wù)版本號確定為新的全局最大版本號。
在一個可選的實現(xiàn)方式中:
在所述更新單元之后,所述裝置還包括:
應(yīng)答單元,所述主版本號服務(wù)器向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示所述主版本號服務(wù)器收到該更新請求。
在一個可選的實現(xiàn)方式中:
所述返回單元,具體包括:
返回子單元,將所有版本號服務(wù)器維護的局部最大版本號返回給所述數(shù)據(jù)庫服務(wù)器。
在一個可選的實現(xiàn)方式中:
所述裝置還包括:
接收更新請求單元,各個版本號服務(wù)器接收數(shù)據(jù)庫服務(wù)器廣播的更新請求,該更新請求中攜帶有事務(wù)版本號;
判斷單元,各個版本號服務(wù)器判斷所述事務(wù)版本號是否大于其維護的局部最大版本號;
更新單元,在所述事務(wù)版本號大于其維護的全局最大版本號的情況下,將所述事務(wù)版本號確定為其新的局部最大版本號。
在一個可選的實現(xiàn)方式中:
在所述更新單元之后,所述裝置還包括:
應(yīng)答單元,在所述事務(wù)版本號大于或者不大于其維護的局部最大版本號的情況下,向所述數(shù)據(jù)庫服務(wù)器返回第二應(yīng)答報文;其中,所述第二應(yīng)答報文表示收到該更新請求。
上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設(shè)備為計算機,計算機的具體形式可以是個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導航設(shè)備、電子郵件收發(fā)設(shè)備、游戲控制臺、平板計算機、可穿戴設(shè)備或者這些設(shè)備中的任意幾種設(shè)備的組合。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本申請的其它實施方案。本申請旨在涵蓋本申請的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請的一般性原理并包括本申請未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本申請的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當理解的是,本申請并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本申請的范圍僅由所附的權(quán)利要求來限制。