两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種保持?jǐn)?shù)據(jù)一致性的方法及系統(tǒng)的制作方法

文檔序號:7761797閱讀:269來源:國知局
專利名稱:一種保持?jǐn)?shù)據(jù)一致性的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及云計算領(lǐng)域的分布式緩存系統(tǒng),尤其涉及一種保持?jǐn)?shù)據(jù)一致性的方法 及系統(tǒng)。
背景技術(shù)
云計算(CloudComputing)是網(wǎng)格計算(Grid Computing)、分布式 計算(Distributed Computing)、并行計算(Parallel Computing)、效用計 算(UtilityComputing)、網(wǎng)絡(luò)存儲(Network Storage Technologies)、虛擬化 (Virtualization)、負(fù)載均衡(Load Balance)等傳統(tǒng)的計算機技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的 產(chǎn)物,它旨在通過網(wǎng)絡(luò)把多個成本相對較低的計算實體整合成一個具有強大計算能力的系 統(tǒng)。分布式緩存系統(tǒng)是云計算范圍中的一個領(lǐng)域,可以提供海量數(shù)據(jù)的分布式存儲服 務(wù),并具備高速讀寫訪問的能力。在分布式緩存系統(tǒng)中,保持?jǐn)?shù)據(jù)的一致性是比較難解決的 問題。分布式緩存系統(tǒng)是由若干服務(wù)器和客戶端互相連接構(gòu)成的;服務(wù)器負(fù)責(zé)數(shù)據(jù)的存儲, 客戶端負(fù)責(zé)對服務(wù)器做數(shù)據(jù)的寫入、讀取、更新、刪除等操作。一般來說寫入的數(shù)據(jù)不可能 只保存在單個服務(wù)器上,而是在多臺服務(wù)器上保存同一個數(shù)據(jù)的副本,可以互為備份。所述 數(shù)據(jù)由鍵(Key)和值(Value)構(gòu)成,Key相當(dāng)于數(shù)據(jù)的索引,Value是Key所代表的數(shù)據(jù)內(nèi) 容,邏輯上Key和Value是——對應(yīng)的關(guān)系。如果對某個Key對應(yīng)的Value反復(fù)進行寫入、更新、刪除等動作,而在這些動作期 間存在網(wǎng)絡(luò)故障或各種軟件、硬件故障等問題,則可能在不同的服務(wù)器上保存的該Key以 及與其對應(yīng)的Value是不一致的,而這時如果要通過Key讀取Value,如何實現(xiàn)能夠返回正 確的Value是亟待解決的問題,即數(shù)據(jù)一致性問題?,F(xiàn)有技術(shù)中,保持?jǐn)?shù)據(jù)一致性有四種方 法第一種方法是依賴于全局一致的時鐘,給每個Value加上時間戳,以時間戳大小 決定數(shù)據(jù)版本的新舊;在一秒鐘幾萬次操作的場景中,時間戳是一樣的,因為這種方法的缺 點是精確度較低;第二種方法是由某個中心節(jié)點賦予版本號,即每個數(shù)據(jù)都從一個中心節(jié)點得到一 個版本號,通過版本號來決定數(shù)據(jù)版本的新舊;這種方法的缺點是中心節(jié)點會導(dǎo)致運行效 率的瓶頸;第三種方法是客戶端在每次寫入、更新、刪除操作之前都執(zhí)行讀取操作,從服務(wù)器 讀出數(shù)據(jù)的版本號,并在執(zhí)行寫入、更新、刪除操作時將讀取到的版本號帶到服務(wù)器,表示 是基于這個版本號的操作,服務(wù)器收到操作指令后進行判斷,如果當(dāng)前保存的數(shù)據(jù)版本號 與這個操作基于的版本號一致,則執(zhí)行操作并更新版本號,否則拒絕操作;這種方法的缺點 是如果同時對同一個Key進行操作,則先發(fā)到服務(wù)器的成功,后發(fā)到服務(wù)器的失敗,但實際 上在大多數(shù)應(yīng)用中,應(yīng)該是以后發(fā)到的數(shù)據(jù)為準(zhǔn);第四種方法是向量版本號、多版本的方案,與第三種方法類似,即在寫入、更新、刪除操作前客戶端都執(zhí)行讀取版本號的操作,客戶端會將版本號帶到服務(wù)器,服務(wù)器參考當(dāng) 前版本號和客戶端攜帶的版本號并根據(jù)一定規(guī)則決定新的版本號,這里的版本號是按一定 規(guī)則生成的向量版本號,這個方案的優(yōu)點是如果同一個Key有多個版本號,則大多數(shù)版本 號之間是可以比較的;如果不可比較,則多個版本都被保存,當(dāng)客戶端讀取該Key對應(yīng)的 Value時,將所有不可比較的版本返回給客戶端;這個方案的缺點是大多數(shù)應(yīng)用中,客戶端 在得到多個版本號的返回時,同樣無從知道哪個Value是新的。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種保持?jǐn)?shù)據(jù)一致性的方法及系統(tǒng),準(zhǔn)確、 高效的保證各個服務(wù)器中數(shù)據(jù)一致。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的本發(fā)明公開一種保持?jǐn)?shù)據(jù)一致性的方法,包括協(xié)同服務(wù)器將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時,根據(jù)強制 合并規(guī)則確定新的版本號;協(xié)同服務(wù)器在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、新的版本 號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器。上述方法中,所述協(xié)同服務(wù)器將所有的版本號進行相互比較,當(dāng)兩個版本號不可 比較時,根據(jù)強制合并規(guī)則確定新的版本號為如果相同的版本號的數(shù)量超過收到的版本號的總數(shù)的一半,則協(xié)同服務(wù)器確定所 述相同的版本號作為新的版本號;如果相同的版本號的數(shù)量沒有超過收到的版本號的總數(shù) 的一半,則協(xié)同服務(wù)器根據(jù)大小比較方法,將不同的版本號進行相互比較,協(xié)同服務(wù)器確定 將其中最大的版本號作為新的版本號;當(dāng)存在兩個版本號之間不可比較的情況時,協(xié)同服 務(wù)器根據(jù)強制合并規(guī)則確定新的版本號。上述方法中,所述強制合并規(guī)則為以優(yōu)先級最高的服務(wù)器所存儲的版本號為新 的版本號,或以服務(wù)器無故障運行時間最長的服務(wù)器所存儲的版本號為新的版本號。上述方法中,用于數(shù)據(jù)更新時,所述協(xié)同服務(wù)器將所有的版本號進行相互比較之 前還包括協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)更新請求后,讀取自身存儲的版本號和與其對 應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送數(shù)據(jù)讀取請求給各個副本服務(wù)器;副本服務(wù)器讀取自身存儲的版本 號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送給協(xié)同服務(wù)器。上述方法中,用于數(shù)據(jù)更新時,還包括副本服務(wù)器進行數(shù)據(jù)更新,將自身的更新結(jié)果返回給協(xié)同服務(wù)器;協(xié)同服務(wù)器將 總體的更新結(jié)果返回給客戶端。上述方法中,用于數(shù)據(jù)讀取時,所述協(xié)同服務(wù)器將所有的版本號進行相互比較之 前還包括協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,讀取自身存儲的版本號和與其對 應(yīng)的數(shù)據(jù),并發(fā)送數(shù)據(jù)讀取請求和讀取的版本號給副本服務(wù)器;副本服務(wù)器將收到的版本 號和自身存儲的版本號進行比較,當(dāng)自身存儲的版本號更新或不可比較時,將讀取的版本 號和與其對應(yīng)的數(shù)據(jù)發(fā)送給協(xié)同服務(wù)器,當(dāng)收到的版本號更新時,返回比較結(jié)果。
上述方法中,用于數(shù)據(jù)更新時,還包括協(xié)同服務(wù)器將新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端;副本服務(wù)器進行數(shù)據(jù) 更新,將更新結(jié)果返回給協(xié)同服務(wù)器。本發(fā)明還公開一種保持?jǐn)?shù)據(jù)一致性的系統(tǒng),包括協(xié)同服務(wù)器、副本服務(wù)器;其 中,協(xié)同服務(wù)器,用于將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時,根據(jù) 強制合并規(guī)則確定新的版本號;在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、 新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器;副本服務(wù)器,用于接收協(xié)同服務(wù)器發(fā)送的數(shù)據(jù)更新請求、新的版本號和與其對應(yīng) 的數(shù)據(jù)。上述系統(tǒng)中,用于數(shù)據(jù)更新時,所述協(xié)同服務(wù)器還用于,收到客戶端發(fā)送的數(shù)據(jù)更新請求后,讀取自身存儲的版 本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送數(shù)據(jù)讀取請求給各個副本服務(wù)器;所述副本服務(wù)器還 用于,收到數(shù)據(jù)讀取請求時,讀取自身存儲的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送給協(xié)同 服務(wù)器;所述副本服務(wù)器還用于,進行數(shù)據(jù)更新,將自身的更新結(jié)果返回給協(xié)同服務(wù)器;所 述協(xié)同服務(wù)器還用于,將總體的更新結(jié)果返回給客戶端。上述系統(tǒng)中,用于數(shù)據(jù)讀取時,所述協(xié)同服務(wù)器還用于,收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,讀取自身存儲的版 本號和與其對應(yīng)的數(shù)據(jù);發(fā)送數(shù)據(jù)讀取請求和讀取的版本號給副本服務(wù)器;所述副本服務(wù) 器還用于,將收到的版本號和自身存儲的版本號進行比較;當(dāng)自身存儲的版本號更新或不 可比較時,將讀取的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給協(xié)同服務(wù)器,當(dāng)收到的版本號更新時, 返回比較結(jié)果;所述協(xié)同服務(wù)器還用于,將新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端;所述副 本服務(wù)器還用于,進行數(shù)據(jù)更新,將更新結(jié)果返回給協(xié)同服務(wù)器。本發(fā)明提供的保持?jǐn)?shù)據(jù)一致性的方法及系統(tǒng),協(xié)同服務(wù)器將所有的版本號進行相 互比較,當(dāng)兩個版本號不可比較時,根據(jù)強制合并規(guī)則確定新的版本號;協(xié)同服務(wù)器在本 地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送 給各個副本服務(wù)器,不依賴于時鐘,從而提高了數(shù)據(jù)的準(zhǔn)確度;不依賴于中心節(jié)點分配版本 號,避免了中心節(jié)點帶來的運行效率的瓶頸,提高了數(shù)據(jù)讀取和更新的運行效率;此外,針 對同一個key所對應(yīng)的版本號和與其對應(yīng)的數(shù)據(jù),在每個協(xié)同服務(wù)器和副本服務(wù)器上最多 只保留一個版本的數(shù)據(jù),協(xié)同服務(wù)器返回給客戶端的也只有一個版本的數(shù)據(jù),從而客戶端 可以得到最新版本的數(shù)據(jù)。


圖1是本發(fā)明數(shù)據(jù)更新時保持?jǐn)?shù)據(jù)一致性的方法的流程示意圖;圖2是本發(fā)明數(shù)據(jù)讀取時保持?jǐn)?shù)據(jù)一致性的方法的流程示意圖;圖3是本發(fā)明實現(xiàn)保持?jǐn)?shù)據(jù)一致性的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式本發(fā)明的基本思想是協(xié)同服務(wù)器將所有的版本號進行相互比較,當(dāng)兩個版本號 不可比較時,根據(jù)強制合并規(guī)則確定新的版本號;協(xié)同服務(wù)器在本地更新版本號和與其對 應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器。下面通過附圖及具體實施例對本發(fā)明再做進一步的詳細(xì)說明。本發(fā)明提供一種保持?jǐn)?shù)據(jù)一致性的方法,圖1是本發(fā)明數(shù)據(jù)更新時保持?jǐn)?shù)據(jù)一致 性的方法的流程示意圖,如圖1所示,該方法包括以下步驟步驟101,協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)更新請求后,讀取自身存儲的版本號 和與其對應(yīng)的數(shù)據(jù)內(nèi)容;具體的,客戶端中保存數(shù)據(jù)的key與服務(wù)器的對應(yīng)關(guān)系的列表,當(dāng)需要對某個數(shù) 據(jù)進行更新時,客戶端根據(jù)該數(shù)據(jù)的key,將數(shù)據(jù)更新請求發(fā)送給與其對應(yīng)的服務(wù)器,該服 務(wù)器稱為本次操作的協(xié)同服務(wù)器;協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)更新請求后,從本地 讀取自身存儲的與該key對應(yīng)的版本號和與該版本號對應(yīng)的數(shù)據(jù)內(nèi)容;其中,key、版本號 和數(shù)據(jù)內(nèi)容是一一對應(yīng)的,所述版本號為向量版本號。步驟102,協(xié)同服務(wù)器發(fā)送數(shù)據(jù)讀取請求給各個副本服務(wù)器;具體的,協(xié)同服務(wù)器保存該key與可能保存與該key對應(yīng)的數(shù)據(jù)內(nèi)容的副本服務(wù) 器的對應(yīng)關(guān)系的列表,協(xié)同服務(wù)器將數(shù)據(jù)讀取請求發(fā)送給各個可能保存與該key對應(yīng)的數(shù) 據(jù)內(nèi)容的副本服務(wù)器。步驟103,副本服務(wù)器讀取自身存儲的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送給協(xié) 同服務(wù)器;具體的,每個副本服務(wù)器收到數(shù)據(jù)讀取請求后,嘗試讀取自身存儲的版本號和與 其對應(yīng)的數(shù)據(jù)內(nèi)容,如果能夠讀取出版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,表示本地已經(jīng)保存版 本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,則副本服務(wù)器將讀取出的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容發(fā)送 給協(xié)同服務(wù)器;如果沒有讀取出版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,則副本服務(wù)器通知協(xié)同服 務(wù)器沒有數(shù)據(jù)。步驟104,協(xié)同服務(wù)器將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時, 根據(jù)強制合并規(guī)則確定新的版本號;具體的,本實施例中的版本號是向量版本號,使用向量版本號的優(yōu)點是,針對同一 個key的大部分的不同的版本的不同的版本號之間是可以相互比較的;向量版本號中每個 分量的數(shù)值表示的是,這個分量對應(yīng)的服務(wù)器為協(xié)同服務(wù)器時,數(shù)據(jù)變更操作的次數(shù),所述 變更操作指的是寫入、更新、刪除操作;例如,X、Y、Z分別代表三臺服務(wù)器,客戶端第一次寫 入數(shù)據(jù)時選擇X為協(xié)同服務(wù)器,則向量版本號為(1,0,0),然后如果客戶端更新數(shù)據(jù)時,X出 現(xiàn)故障,則客戶端可能會選擇Y為協(xié)同服務(wù)器,此時產(chǎn)生的向量版本號為(1,1,0),將兩個 向量版本號進行比較,得出向量版本號為(1,1,0)的版本比向量版本號為(1,0,0)的版本 新;如果向量版本號為(3,2,3)與向量版本號為(1,2,4)的兩個版本號進行比較,則這兩 個版本號是不可比較的,因為前者向量版本號中的向量既有大于后者的向量版本號中的向 量,也有小于后者的向量版本號中的向量,這種情況下,兩個向量版本號是不可比較的;協(xié)同服務(wù)器收到各個副本服務(wù)器返回的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,或沒有數(shù) 據(jù)的通知,當(dāng)協(xié)同服務(wù)器收到的副本服務(wù)器的響應(yīng)的數(shù)量超過副本服務(wù)器總數(shù)的一半時,協(xié)同服務(wù)器將在步驟101中讀取的自身的版本號和收到的多個版本號之間進行相互比較; 如果存在相同的版本號的數(shù)量超過收到的版本號的總數(shù)的一半,則協(xié)同服務(wù)器確定這些相 同的版本號作為新的版本號;如果不存在相同的版本號的數(shù)量超過收到的版本號的總數(shù)的 一半,則協(xié)同服務(wù)器根據(jù)上述大小比較方法,將若干不同的版本號進行相互比較,協(xié)同服務(wù) 器確定將其中最大的版本號作為新的版本號;當(dāng)存在兩個版本號之間不可比較的情況時, 協(xié)同服務(wù)器根據(jù)強制合并規(guī)則確定新的版本號;其中,強制合并規(guī)則可以是服務(wù)器的優(yōu)先 級,或服務(wù)器無故障運行時間;例如,可以設(shè)置服務(wù)器的優(yōu)先級,當(dāng)存在兩個版本號之間不 可比較的情況時,以優(yōu)先級最高的服務(wù)器所存儲的版本號為新的版本號;或,以服務(wù)器無故 障運行時間最長的服務(wù)器所存儲的版本號為新的版本號;協(xié)同服務(wù)器保存與副本服務(wù)器的交互記錄,協(xié)同服務(wù)器中還具有計數(shù)器,根據(jù)記 錄協(xié)同服務(wù)器可以知道發(fā)送的副本服務(wù)器的總數(shù),并可以利用計數(shù)器統(tǒng)計收到的副本服務(wù) 器的響應(yīng)數(shù)量,從而協(xié)同服務(wù)器可以確定,何時收到的副本服務(wù)器的響應(yīng)的數(shù)量超過副本 服務(wù)器總數(shù)的一半。步驟105,協(xié)同服務(wù)器在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、 新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器;具體的,協(xié)同服務(wù)器在確定新的版本號后,在本地將新的版本號和與其對應(yīng)的數(shù) 據(jù),替換原來存儲的版本號和與其對應(yīng)的數(shù)據(jù),實現(xiàn)版本號和與其對應(yīng)的數(shù)據(jù)的更新;協(xié)同 服務(wù)器將數(shù)據(jù)更新請求、確定的新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器。步驟106,副本服務(wù)器進行數(shù)據(jù)更新,將自身的更新結(jié)果返回給協(xié)同服務(wù)器,協(xié)同 服務(wù)器將總體的更新結(jié)果返回給客戶端;具體的,副本服務(wù)器收到協(xié)同服務(wù)器發(fā)送數(shù)據(jù)更新請求、新的版本號和與其對應(yīng) 的數(shù)據(jù)后,進行版本號和與其對應(yīng)的數(shù)據(jù)的更新,將新的版本號和與其對應(yīng)的數(shù)據(jù)替換原 先在自身存儲的版本號和與其對應(yīng)的數(shù)據(jù),并將更新結(jié)果返回給協(xié)同服務(wù)器,更新結(jié)果包 括更新成功和更新失?。划?dāng)協(xié)同服務(wù)器收到的副本服務(wù)器的更新結(jié)果的數(shù)量超過副本服務(wù) 器總數(shù)的一半時,協(xié)同服務(wù)器將更新成功的結(jié)果返回給客戶端;如果協(xié)同服務(wù)器收到的副 本服務(wù)器的更新結(jié)果的數(shù)量最終沒有超過副本服務(wù)器總數(shù)的一半,協(xié)同服務(wù)器將更新失敗 的結(jié)果返回給客戶端。圖2是本發(fā)明數(shù)據(jù)讀取時保持?jǐn)?shù)據(jù)一致性的方法的流程示意圖,如圖2所示,該方 法包括以下步驟步驟201,協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,讀取自身存儲的版本號 和與其對應(yīng)的數(shù)據(jù);具體的,客戶端中保存數(shù)據(jù)的key與服務(wù)器的對應(yīng)關(guān)系的列表,當(dāng)需要對某個數(shù) 據(jù)進行讀取時,客戶端根據(jù)該數(shù)據(jù)的key,將數(shù)據(jù)讀取請求發(fā)送給與其對應(yīng)的服務(wù)器,該服 務(wù)器稱為本次操作的協(xié)同服務(wù)器;協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,從本地 讀取自身存儲的與該key對應(yīng)的版本號和與該版本號對應(yīng)的數(shù)據(jù)內(nèi)容;其中,key、版本號 和數(shù)據(jù)內(nèi)容是一一對應(yīng)的,所述版本號為向量版本號。步驟202,協(xié)同服務(wù)器發(fā)送數(shù)據(jù)讀取請求和讀取的版本號給副本服務(wù)器;具體的,協(xié)同服務(wù)器保存該key與可能保存與該key對應(yīng)的數(shù)據(jù)內(nèi)容的副本服務(wù) 器的對應(yīng)關(guān)系的列表,協(xié)同服務(wù)器將數(shù)據(jù)讀取請求和在步驟201中讀取的版本號發(fā)送給各個可能保存與該key對應(yīng)的數(shù)據(jù)內(nèi)容的副本服務(wù)器。步驟203,副本服務(wù)器將收到的版本號和自身存儲的版本號進行比較;具體的,每個副本服務(wù)器收到數(shù)據(jù)讀取請求后,嘗試讀取自身存儲的版本號和與 其對應(yīng)的數(shù)據(jù)內(nèi)容,如果能夠讀取出版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,表示本地已經(jīng)保存版 本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,則副本服務(wù)器將讀取出的版本號與收到的版本號進行比較, 如果讀取出的版本號比收到的版本號新,或兩個版本號不可比較,則執(zhí)行步驟204;如果收 到的版本號新,或兩個版本號相同容,則執(zhí)行步驟208 ;如果沒有讀取出版本號和與其對應(yīng) 的數(shù)據(jù)內(nèi)容,則副本服務(wù)器通知協(xié)同服務(wù)器沒有數(shù)據(jù)。步驟204,副本服務(wù)器將讀取的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給協(xié)同服務(wù)器。步驟205同步驟104。步驟206,協(xié)同服務(wù)器在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將新的版本號和與 其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端,將數(shù)據(jù)更新請求、新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個 副本服務(wù)器;具體的,協(xié)同服務(wù)器在確定新的版本號后,在本地將新的版本號和與其對應(yīng)的數(shù) 據(jù),替換原來存儲的版本號和與其對應(yīng)的數(shù)據(jù),實現(xiàn)版本號和與其對應(yīng)的數(shù)據(jù)的更新;協(xié)同 服務(wù)器將新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端,并將數(shù)據(jù)更新請求、確定的新的版 本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器。步驟207,副本服務(wù)器進行數(shù)據(jù)更新,將更新結(jié)果返回給協(xié)同服務(wù)器,結(jié)束當(dāng)前流 程;具體的,副本服務(wù)器收到協(xié)同服務(wù)器發(fā)送數(shù)據(jù)更新請求、新的版本號和與其對應(yīng) 的數(shù)據(jù)后,進行版本號和與其對應(yīng)的數(shù)據(jù)的更新,將新的版本號和與其對應(yīng)的數(shù)據(jù)替換原 先在自身存儲的版本號和與其對應(yīng)的數(shù)據(jù),并將更新結(jié)果返回給協(xié)同服務(wù)器,更新結(jié)果包 括更新成功和更新失敗。步驟208,副本服務(wù)器返回比較結(jié)果;具體的,如果副本服務(wù)器確定收到的版本號新,或收到的版本號和讀取的版本號 相同,副本服務(wù)器將上述比較結(jié)果返回給協(xié)同服務(wù)器,結(jié)束流程。本實施例中,當(dāng)副本服務(wù)器確定協(xié)同服務(wù)器的版本號新或兩個版本號不可比較 時,返回讀取到的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,否則只返回比較結(jié)果給協(xié)同服務(wù)器,提示 兩個版本號相同或收到的版本號新,從而可以節(jié)省大量的帶寬,提高自身的執(zhí)行效率。上述方法中,當(dāng)存在兩個版本號不可比較時,根據(jù)一定的規(guī)則進行強制合并,最后 確定一個新的版本號,因此針對同一個key所對應(yīng)的版本號和與其對應(yīng)的數(shù)據(jù),在每個協(xié) 同服務(wù)器和副本服務(wù)器上最多只保留一個版本的數(shù)據(jù),協(xié)同服務(wù)器返回給客戶端的也只有 一個版本的數(shù)據(jù),彌補了背景技術(shù)中第四種方法的不足;此外,服務(wù)器易于得到更多的版本 號作為參考,相對來說判斷的較為準(zhǔn)確,所以在服務(wù)器進行版本號的比較比在客戶端進行 比較更加具有優(yōu)勢。為實現(xiàn)上述方法,本發(fā)明還提供一種保持?jǐn)?shù)據(jù)一致性的系統(tǒng),圖3是本發(fā)明實現(xiàn) 保持?jǐn)?shù)據(jù)一致性的系統(tǒng)的結(jié)構(gòu)示意圖,如圖3所示,該系統(tǒng)包括協(xié)同服務(wù)器31、副本服務(wù) 器32 ;其中,協(xié)同服務(wù)器31,用于將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時,根
9據(jù)強制合并規(guī)則確定新的版本號;在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請 求、新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器32 ;副本服務(wù)器32,用于接收協(xié)同服務(wù)器發(fā)送的數(shù)據(jù)更新請求、新的版本號和與其對 應(yīng)的數(shù)據(jù)。用于數(shù)據(jù)更新時,所述協(xié)同服務(wù)器31還用于,收到客戶端發(fā)送的數(shù)據(jù)更新請求后,讀取自身存儲的 版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送數(shù)據(jù)讀取請求給各個副本服務(wù)器32 ;所述副本服務(wù) 器32還用于,收到數(shù)據(jù)讀取請求時,讀取自身存儲的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā) 送給協(xié)同服務(wù)器31 ;所述副本服務(wù)器32還用于,進行數(shù)據(jù)更新,將自身的更新結(jié)果返回給協(xié)同服務(wù)器 31 ;所述協(xié)同服務(wù)器31還用于,將總體的更新結(jié)果返回給客戶端。用于數(shù)據(jù)讀取時,所述協(xié)同服務(wù)器31還用于,收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,讀取自身存儲的 版本號和與其對應(yīng)的數(shù)據(jù);發(fā)送數(shù)據(jù)讀取請求和讀取的版本號給副本服務(wù)器32 ;所述副本 服務(wù)器32還用于,將收到的版本號和自身存儲的版本號進行比較;當(dāng)自身存儲的版本號更 新或不可比較時,將讀取的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給協(xié)同服務(wù)器31,當(dāng)收到的版本 號更新時,返回比較結(jié)果;所述協(xié)同服務(wù)器31還用于,將新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端;所述 副本服務(wù)器32還用于,進行數(shù)據(jù)更新,將更新結(jié)果返回給協(xié)同服務(wù)器31。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍,凡在 本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護 范圍之內(nèi)。
權(quán)利要求
一種保持?jǐn)?shù)據(jù)一致性的方法,其特征在于,該方法包括協(xié)同服務(wù)器將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時,根據(jù)強制合并規(guī)則確定新的版本號;協(xié)同服務(wù)器在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述協(xié)同服務(wù)器將所有的版本號進行相 互比較,當(dāng)兩個版本號不可比較時,根據(jù)強制合并規(guī)則確定新的版本號為如果相同的版本號的數(shù)量超過收到的版本號的總數(shù)的一半,則協(xié)同服務(wù)器確定所述相 同的版本號作為新的版本號;如果相同的版本號的數(shù)量沒有超過收到的版本號的總數(shù)的一 半,則協(xié)同服務(wù)器根據(jù)大小比較方法,將不同的版本號進行相互比較,協(xié)同服務(wù)器確定將其 中最大的版本號作為新的版本號;當(dāng)存在兩個版本號之間不可比較的情況時,協(xié)同服務(wù)器 根據(jù)強制合并規(guī)則確定新的版本號。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述強制合并規(guī)則為以優(yōu)先級最高 的服務(wù)器所存儲的版本號為新的版本號,或以服務(wù)器無故障運行時間最長的服務(wù)器所存儲 的版本號為新的版本號。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,用于數(shù)據(jù)更新時,所述協(xié)同服務(wù)器將 所有的版本號進行相互比較之前還包括協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)更新請求后,讀取自身存儲的版本號和與其對應(yīng)的 數(shù)據(jù)內(nèi)容,并發(fā)送數(shù)據(jù)讀取請求給各個副本服務(wù)器;副本服務(wù)器讀取自身存儲的版本號和 與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送給協(xié)同服務(wù)器。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,用于數(shù)據(jù)更新時,還包括副本服務(wù)器進行數(shù)據(jù)更新,將自身的更新結(jié)果返回給協(xié)同服務(wù)器;協(xié)同服務(wù)器將總體 的更新結(jié)果返回給客戶端。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,用于數(shù)據(jù)讀取時,所述協(xié)同服務(wù)器將 所有的版本號進行相互比較之前還包括協(xié)同服務(wù)器收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,讀取自身存儲的版本號和與其對應(yīng)的 數(shù)據(jù),并發(fā)送數(shù)據(jù)讀取請求和讀取的版本號給副本服務(wù)器;副本服務(wù)器將收到的版本號和 自身存儲的版本號進行比較,當(dāng)自身存儲的版本號更新或不可比較時,將讀取的版本號和 與其對應(yīng)的數(shù)據(jù)發(fā)送給協(xié)同服務(wù)器,當(dāng)收到的版本號更新時,返回比較結(jié)果。
7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,用于數(shù)據(jù)更新時,還包括 協(xié)同服務(wù)器將新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端;副本服務(wù)器進行數(shù)據(jù)更新,將更新結(jié)果返回給協(xié)同服務(wù)器。
8.一種保持?jǐn)?shù)據(jù)一致性的系統(tǒng),其特征在于,該系統(tǒng)包括協(xié)同服務(wù)器、副本服務(wù)器; 其中,協(xié)同服務(wù)器,用于將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時,根據(jù)強制 合并規(guī)則確定新的版本號;在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、新的 版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器;副本服務(wù)器,用于接收協(xié)同服務(wù)器發(fā)送的數(shù)據(jù)更新請求、新的版本號和與其對應(yīng)的數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,用于數(shù)據(jù)更新時,所述協(xié)同服務(wù)器還用于,收到客戶端發(fā)送的數(shù)據(jù)更新請求后,讀取自身存儲的版本號 和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送數(shù)據(jù)讀取請求給各個副本服務(wù)器;所述副本服務(wù)器還用于, 收到數(shù)據(jù)讀取請求時,讀取自身存儲的版本號和與其對應(yīng)的數(shù)據(jù)內(nèi)容,并發(fā)送給協(xié)同服務(wù) 器;所述副本服務(wù)器還用于,進行數(shù)據(jù)更新,將自身的更新結(jié)果返回給協(xié)同服務(wù)器;所述協(xié) 同服務(wù)器還用于,將總體的更新結(jié)果返回給客戶端。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,用于數(shù)據(jù)讀取時,所述協(xié)同服務(wù)器還用于,收到客戶端發(fā)送的數(shù)據(jù)讀取請求后,讀取自身存儲的版本號 和與其對應(yīng)的數(shù)據(jù);發(fā)送數(shù)據(jù)讀取請求和讀取的版本號給副本服務(wù)器;所述副本服務(wù)器還 用于,將收到的版本號和自身存儲的版本號進行比較;當(dāng)自身存儲的版本號更新或不可比 較時,將讀取的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給協(xié)同服務(wù)器,當(dāng)收到的版本號更新時,返回 比較結(jié)果;所述協(xié)同服務(wù)器還用于,將新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給客戶端;所述副本服 務(wù)器還用于,進行數(shù)據(jù)更新,將更新結(jié)果返回給協(xié)同服務(wù)器。
全文摘要
本發(fā)明公開一種保持?jǐn)?shù)據(jù)一致性的方法,包括協(xié)同服務(wù)器將所有的版本號進行相互比較,當(dāng)兩個版本號不可比較時,根據(jù)強制合并規(guī)則確定新的版本號;協(xié)同服務(wù)器在本地更新版本號和與其對應(yīng)的數(shù)據(jù),并將數(shù)據(jù)更新請求、新的版本號和與其對應(yīng)的數(shù)據(jù)發(fā)送給各個副本服務(wù)器;本發(fā)明還提供一種保持?jǐn)?shù)據(jù)一致性的系統(tǒng)。根據(jù)本發(fā)明的技術(shù)方案,準(zhǔn)確、高效的保證各個服務(wù)器中數(shù)據(jù)一致。
文檔編號H04L29/08GK101964820SQ20101050343
公開日2011年2月2日 申請日期2010年10月8日 優(yōu)先權(quán)日2010年10月8日
發(fā)明者郭斌, 陳典強, 韓銀俊, 高洪 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
鄂托克旗| 东阳市| 六安市| 如皋市| 桃园县| 都昌县| 松滋市| 柘荣县| 舟山市| 元谋县| 赞皇县| 曲松县| 灌阳县| 富锦市| 长泰县| 蒲城县| 太仓市| 夹江县| 京山县| 旬邑县| 通渭县| 皋兰县| 唐海县| 浏阳市| 苍溪县| 弥渡县| 保康县| 綦江县| 河北区| 鄂伦春自治旗| 沙河市| 永胜县| 姚安县| 枞阳县| 建湖县| 萝北县| 华容县| 句容市| 朔州市| 阿克| 康保县|