專利名稱:一種分布式體系中的數(shù)據(jù)同步方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種分布式體系中的數(shù)據(jù)同步 方法及系統(tǒng)。
背景技術(shù):
在分布式體系中多個客戶端需要協(xié)同進(jìn)行工作,共同分擔(dān)系統(tǒng)的工作任 務(wù)。從硬件構(gòu)架上來講,分布式體系中的各個客戶端一般都有各自的內(nèi)存,每 個客戶端都只能訪問自己的內(nèi)存空間,物理空間上并不存在全局意義上的數(shù)據(jù) 供不同的客戶端共享,但是從邏輯層面來說卻存在著一些系統(tǒng)數(shù)據(jù),如果各個 客戶端之間的系統(tǒng)數(shù)據(jù)不一致,將直接導(dǎo)致任務(wù)結(jié)果不可預(yù)期,因此可靠而快 速的數(shù)據(jù)同步機(jī)制是分布式體系協(xié)同工作的首要條件。
目前分布式體系的數(shù)據(jù)同步機(jī)制中一般都采用效率比較高的異步消息發(fā) 送方式進(jìn)行即時數(shù)據(jù)同步,即在源客戶端數(shù)據(jù)發(fā)生變化時,源客戶端主動向目 的客戶端發(fā)送異步消息,異步消息中只發(fā)送發(fā)生了變化的數(shù)據(jù),數(shù)據(jù)同步的延
時極短并且開銷也比較小。但是該方式中存在著一些問題雖然即時同步的開 銷小且時延短,但是源客戶端在發(fā)送同步數(shù)據(jù)后無法保證目的客戶端一定能收 到該同步數(shù)據(jù), 一旦分布式體系比較繁忙,就有可能造成消息丟失,從而導(dǎo)致 數(shù)據(jù)的不同步,并且隨著分布式體系運(yùn)行時間的延長,不同步的數(shù)據(jù)會越來越多。
發(fā)明內(nèi)容
本發(fā)明提供一種分布式體系中的數(shù)據(jù)同步方法及系統(tǒng),使得分布式體系在 進(jìn)行即時數(shù)據(jù)同步時能夠同時兼顧效率及可靠性。本發(fā)明所述技術(shù)方案如下 一種分布式體系中的數(shù)據(jù)同步方法,包括步驟
A、 源客戶端在監(jiān)測到本地的同步數(shù)據(jù)發(fā)生變化后,將同步序列號加一, 將該同步序列號、變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼封裝成異步消息發(fā)送給目的 客戶端,同時將該同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中;
B、 目的客戶端在收到異步消息后向源客戶端回復(fù)應(yīng)答消息,消息中包含 有接收到的同步數(shù)據(jù)的同步序列號;
C、 源客戶端在收到應(yīng)答消息后,根據(jù)應(yīng)答消息中攜帶的同步序列號將本 地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除。
進(jìn)一步地,本發(fā)明所述分布式體系中的數(shù)據(jù)同步方法還具有如下特征所 述源客戶端每間隔預(yù)設(shè)時長讀取一次同步緩存,按照預(yù)設(shè)策略將同步緩存中緩 存項記錄的內(nèi)容封裝在一個或若干個異步消息中發(fā)送給目的客戶端。
進(jìn)一步地,本發(fā)明所述分布式體系中的數(shù)據(jù)同步方法還具有如下特征所 述步驟A中,源客戶端將同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中的具 體過程為
al 、源客戶端搜索同步緩存中是否存在與待加入同步數(shù)據(jù)的數(shù)據(jù)操作碼相 同的緩存項,若存在,執(zhí)行步驟a3,否則,執(zhí)行步驟a2;
a2、源客戶端在同步緩存中增加一新緩存項,將變化后的同步數(shù)據(jù)或其指 針、及對應(yīng)的同步序列號和數(shù)據(jù)操作碼記錄在新增的緩存項中;
a3、源客戶端判斷搜索到的緩存項中記錄的是同步數(shù)據(jù)還是同步數(shù)據(jù)的指 針,若是同步數(shù)據(jù),則將該緩存項中的同步數(shù)據(jù)和同步序列號更新為變化后的 同步數(shù)據(jù)及對應(yīng)的同步序列號;若是同步數(shù)據(jù)的指針,則僅將該緩存項中的同 步序列號更新為變化后的同步數(shù)據(jù)對應(yīng)的同步序列號。
進(jìn)一步地,本發(fā)明所述分布式體系中的數(shù)據(jù)同步方法還具有如下特征所 述數(shù)據(jù)操作碼是一個或者一組數(shù)據(jù),可以唯一確定同步數(shù)據(jù)的ID。
進(jìn)一步地,本發(fā)明所述分布式體系中的數(shù)據(jù)同步方法還具有如下特征所述同步序列號是一個全局唯一的32bit的無符號整型變量。
一種分布式體系中的數(shù)據(jù)同步系統(tǒng),包括源客戶端和目的客戶端; 所述源客戶端包括數(shù)據(jù)監(jiān)測模塊、異步消息生成模塊、消息收發(fā)模塊、同
步緩存模塊及同步數(shù)據(jù)刪除^^莫塊,各個模塊的具體作用如下
數(shù)據(jù)監(jiān)測模塊,用于監(jiān)測本地同步數(shù)據(jù)的變化,在本地同步數(shù)據(jù)發(fā)生變化
后將變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼發(fā)送給異步消息發(fā)送模塊;
異步消息生成模塊,用于在本地同步數(shù)據(jù)發(fā)生變化后,將同步序列號加一,
并將該同步序列號、變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼封裝成異步消息,同時將
該同步數(shù)據(jù)的變化保存在同步緩存模塊中;
消息收發(fā)模塊,用于將異步消息發(fā)送給目的客戶端,以及接收目的客戶端
返回的應(yīng)答消息;
同步緩存模塊,用于存儲同步數(shù)據(jù)的變化記錄;
同步數(shù)據(jù)刪除模塊,用于根據(jù)消息收發(fā)模塊收到的應(yīng)答消息中攜帶的同步 序列號將本地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除;
所述目的客戶端包括異步消息接收模塊和應(yīng)答模塊,其中,
異步消息接收模塊,用于接收源客戶端發(fā)送的異步消息,從中提取出同步 數(shù)據(jù)及對應(yīng)的同步序列號和數(shù)據(jù)操作碼;
應(yīng)答模塊,用于向源客戶端回復(fù)應(yīng)答消息,消息中包含有從異步消息中提 取出的同步序列號。
進(jìn)一步地,本發(fā)明所述分布式體系中的數(shù)據(jù)同步系統(tǒng)還具有如下特征所 述源客戶端中進(jìn)一步包括
定時模塊,用于觸發(fā)異步消息發(fā)送模塊每間隔預(yù)設(shè)時長讀取一次同步緩存
模塊,獲取同步緩存模塊中全部或部分緩存項記錄的內(nèi)容,將其通過一個或若 干個異步消息發(fā)送給目的客戶端。
與現(xiàn)有技術(shù)相比,本發(fā)明所述技術(shù)方案對分布式體系中傳統(tǒng)的即時同步機(jī) 制進(jìn)行了改良,本發(fā)明中,源客戶端在通過異步消息發(fā)送即時同步數(shù)據(jù)時,利用同步緩存對尚未得到接收確認(rèn)的同步數(shù)據(jù)進(jìn)行保存,并且要求目的客戶端在 收到異步消息后需要向源客戶端返回相應(yīng)的應(yīng)答消息,源客戶端根據(jù)該應(yīng)答消 息將同步緩存中相應(yīng)的同步數(shù)據(jù)刪除,由于釆用了消息接收確認(rèn)機(jī)制,從而提
高了異步消息通訊的可靠性;
進(jìn)一步地,本發(fā)明中還引入了定時重發(fā)機(jī)制,源客戶端能夠定時將同步緩 存中緩存項記錄的內(nèi)容封裝在異步消息中發(fā)送給目的客戶端,在不影響分布式 體系即時數(shù)據(jù)同步性能的基礎(chǔ)上,以較小的代價極大提高了分布式體系中即時 同步的可靠性。
圖1為本發(fā)明所述分布體系中的數(shù)據(jù)同步方法的流程圖; 圖2為本發(fā)明所述分布式體系中的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式
本發(fā)明對分布式體系中傳統(tǒng)即時同步機(jī)制進(jìn)行了改良,在傳統(tǒng)的即時同步 機(jī)制中加入了消息接收確認(rèn)機(jī)制及定時重發(fā)機(jī)制,在不影響分布式體系即時數(shù) 據(jù)同步性能的基礎(chǔ)上,以較小的代價極大提高了分布式體系中即時同步的可靠性。
下面結(jié)合各個附圖對本發(fā)明的具體實(shí)現(xiàn)過程做進(jìn)一步詳細(xì)的說明。 請參閱圖1,該圖為本發(fā)明所述分布體系中的數(shù)據(jù)同步方法的流程圖,其 主要包括步驟
步驟IO、源客戶端對本地的同步數(shù)據(jù)進(jìn)行實(shí)時監(jiān)測,當(dāng)監(jiān)測到本地的同步 數(shù)據(jù)發(fā)生變化時,將同步序列號加一,該同步序列號是一個全局唯一的32bit 的無符號整型變量。
步驟ll、源客戶端將變化后的同步數(shù)據(jù)、同步序列號及數(shù)據(jù)操作碼封裝成 異步消息發(fā)送給目的客戶端,同時將該同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中,所述數(shù)據(jù)操作碼是一個或者一組數(shù)據(jù),可以唯一確定同步數(shù)據(jù)的ID。 本步驟中,源客戶端將同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中的
具體過程為
1 )、源客戶端搜索同步緩存中是否存在與待加入同步數(shù)據(jù)的數(shù)據(jù)操作碼相 同的緩存項,若存在,執(zhí)行步驟3),否則,執(zhí)行步驟2);
2)、源客戶端在同步緩存中增加一個新緩存項,將變化后的同步數(shù)據(jù)以及 對應(yīng)的同步序列號和數(shù)據(jù)^t喿作碼記錄在新增的緩存項中,或者將變化后的同步 數(shù)據(jù)的指針以及對應(yīng)的同步序列號和數(shù)據(jù)操作碼記錄在新增的緩存項中;
3 )、源客戶端判斷搜索到的緩存項中記錄的是同步數(shù)據(jù)還是同步數(shù)據(jù)的指 針,若是同步數(shù)據(jù),則將該緩存項中的同步數(shù)據(jù)和同步序列號更新為變化后的 同步數(shù)據(jù)及對應(yīng)的同步序列號;若是同步數(shù)據(jù)的指針,則僅將該緩存項中的同
步驟12、目的客戶端在收到異步消息后,從中提取出變化后的同步數(shù)據(jù)、 同步序列號及數(shù)據(jù)操作碼,以此更新本地的同步數(shù)據(jù)記錄。
步驟13、目的客戶端向源客戶端回復(fù)應(yīng)答消息,消息中包含有接收到的同 步數(shù)據(jù)的同步序列號。
步驟14、源客戶端在收到應(yīng)答消息后,從中提取出同步序列號,根據(jù)該同 步序列號將本地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除。
為進(jìn)一步增加分布式體系中數(shù)據(jù)即時同步的可靠性,本發(fā)明中引入了定時 重發(fā)機(jī)制,本發(fā)明中預(yù)先在源客戶端中設(shè)置了定時器,源客戶端每間隔預(yù)設(shè)時 長讀取一次同步緩存,按照預(yù)設(shè)策略將同步緩存中緩存項記錄的內(nèi)容封裝在一 個或若干個異步消息中發(fā)送給目的客戶端。在實(shí)際應(yīng)用中,若同步緩存中全部 緩存項記錄內(nèi)容的數(shù)據(jù)量較小,則可一次將同步緩存中全部緩存項記錄的內(nèi)容 封裝在一個異步消息中發(fā)送給目的客戶端,若同步緩存中全部緩存項記錄內(nèi)容 的數(shù)據(jù)量較大,則可將同步緩存中的緩存項拆分為若干部分,將其通過若干個 異步消息發(fā)送給目的客戶端。相應(yīng)于本發(fā)明上述方法,本發(fā)明進(jìn)而提出了一種分布式體系中的數(shù)據(jù)同步 系統(tǒng),請參閱圖2,該圖為本發(fā)明所述分布式體系中的數(shù)據(jù)同步系統(tǒng)的結(jié)構(gòu)框 圖,該數(shù)據(jù)同步系統(tǒng)包括源客戶端和目的客戶端,其中,
所述源客戶端包括數(shù)據(jù)監(jiān)測模塊、異步消息生成模塊、消息收發(fā)模塊、同
步緩存模塊及同步數(shù)據(jù)刪除模塊,各個模塊的具體作用如下
數(shù)據(jù)監(jiān)測模塊,用于監(jiān)測本地同步數(shù)據(jù)的變化,在本地同步數(shù)據(jù)發(fā)生變化 后將變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼發(fā)送給異步消息發(fā)送模塊;
異步消息生成模塊,用于在本地同步數(shù)據(jù)發(fā)生變化后,將同步序列號加一, 并將該同步序列號、變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼封裝成異步消息,同時將 該同步數(shù)據(jù)的變化保存在同步緩存模塊中;
消息收發(fā)模塊,用于將異步消息發(fā)送給目的客戶端,以及接收目的客戶端 返回的應(yīng)答消息;
同步緩存模塊,用于存儲同步數(shù)據(jù)的變化記錄;
同步數(shù)據(jù)刪除模塊,用于根據(jù)消息收發(fā)模塊收到的應(yīng)答消息中攜帶的同步 序列號將本地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除;
所述目的客戶端包括異步消息接收模塊和應(yīng)答;f莫塊,各個模塊的具體作用 ^口下
異步消息接收模塊,用于接收源客戶端發(fā)送的異步消息,從中提取出同步 數(shù)據(jù)及對應(yīng)的同步序列號和數(shù)據(jù)操作碼;
應(yīng)答模塊,用于向源客戶端回復(fù)應(yīng)答消息,消息中包含有從異步消息中提 取出的同步序列號。
為增加分布式體系中數(shù)據(jù)即時同步的可靠性,所述源客戶端中進(jìn)一步包
括
定時模塊,用于觸發(fā)異步消息發(fā)送模塊每間隔預(yù)設(shè)時長讀取一次同步緩存 模塊,獲取同步緩存模塊中全部或部分緩存項記錄的內(nèi)容,將其通過一個或若 干個異步消息發(fā)送給目的客戶端。的描述,這里不再給予過多贅述。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā) 明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1、一種分布式體系中的數(shù)據(jù)同步方法,其特征在于,包括步驟A、源客戶端在監(jiān)測到本地的同步數(shù)據(jù)發(fā)生變化后,將同步序列號加一,將該同步序列號、變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼封裝成異步消息發(fā)送給目的客戶端,同時將該同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中;B、目的客戶端在收到異步消息后向源客戶端回復(fù)應(yīng)答消息,消息中包含有接收到的同步數(shù)據(jù)的同步序列號;C、源客戶端在收到應(yīng)答消息后,根據(jù)應(yīng)答消息中攜帶的同步序列號將本地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除。
2、 如權(quán)利要求1所述的方法,其特征在于,所述源客戶端每間隔預(yù)設(shè)時 長讀取一次同步緩存,按照預(yù)設(shè)策略將同步緩存中緩存項記錄的內(nèi)容封裝在一 個或若干個異步消息中發(fā)送給目的客戶端。
3、 如權(quán)利要求1所述的方法,其特征在于,所述步驟A中,源客戶端將 同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中的具體過程為al 、源客戶端搜索同步緩存中是否存在與待加入同步數(shù)據(jù)的數(shù)據(jù)操作碼相 同的緩存項,若存在,執(zhí)行步驟a3,否則,執(zhí)行步驟a2;a2、源客戶端在同步緩存中增加一新緩存項,將變化后的同步數(shù)據(jù)或其指 針、及對應(yīng)的同步序列號和數(shù)據(jù)操作碼記錄在新增的緩存項中;a3、源客戶端判斷搜索到的緩存項中記錄的是同步數(shù)據(jù)還是同步數(shù)據(jù)的指 針,若是同步數(shù)據(jù),則將該緩存項中的同步數(shù)據(jù)和同步序列號更新為變化后的 同步數(shù)據(jù)及對應(yīng)的同步序列號;若是同步數(shù)據(jù)的指針,則僅將該緩存項中的同 步序列號更新為變化后的同步數(shù)據(jù)對應(yīng)的同步序列號。
4、 如權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)#:作碼是一個或者 一組數(shù)據(jù),可以唯一確定同步數(shù)據(jù)的ID。
5、 如權(quán)利要求1所述的方法,其特征在于,所述同步序列號是一個全局 唯一的32bit的無符號整型變量。
6、 一種分布式體系中的數(shù)據(jù)同步系統(tǒng),包括源客戶端和目的客戶端,其 特征在于,所述源客戶端包括數(shù)據(jù)監(jiān)測模塊、異步消息生成模塊、消息收發(fā)模塊、同 步緩存模塊及同步數(shù)據(jù)刪除模塊,其中,數(shù)據(jù)監(jiān)測模塊,用于監(jiān)測本地同步數(shù)據(jù)的變化在本地同步數(shù)據(jù)發(fā)生變化后將變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼發(fā)送給異步消息發(fā)送模塊;異步消息生成模塊,用于在本地同步數(shù)據(jù)發(fā)生變化后,將同步序列號加一,并將該同步序列號、變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼封裝成異步消息,同時將該同步數(shù)據(jù)的變化保存在同步緩存模塊中;消息收發(fā)模塊,用于將異步消息發(fā)送給目的客戶端,以及接收目的客戶端返回的應(yīng)答消息;同步緩存模塊,用于存儲同步數(shù)據(jù)的變化記錄;同步數(shù)據(jù)刪除模塊,用于根據(jù)消息收發(fā)模塊收到的應(yīng)答消息中攜帶的同步 序列號將本地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除;所述目的客戶端包括異步消息接收模塊和應(yīng)答模塊,其中,異步消息接收模塊,用于接收源客戶端發(fā)送的異步消息,從中提取出同步 數(shù)據(jù)及對應(yīng)的同步序列號和數(shù)據(jù)操作碼;應(yīng)答模塊,用于向源客戶端回復(fù)應(yīng)答消息,消息中包含有從異步消息中提 取出的同步序列號。
7、 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述源客戶端中進(jìn)一步包括 定時模塊,用于觸發(fā)異步消息發(fā)送模塊每間隔預(yù)設(shè)時長讀取一次同步緩存模塊,獲取同步緩存模塊中全部或部分緩存項記錄的內(nèi)容,將其通過一個或若 干個異步消息發(fā)送給目的客戶端。
全文摘要
本發(fā)明公開了一種分布式體系中的數(shù)據(jù)同步方法及系統(tǒng),所述方法包括源客戶端監(jiān)測到同步數(shù)據(jù)發(fā)生變化后,將同步序列號加一,將該同步序列號、變化后的同步數(shù)據(jù)及數(shù)據(jù)操作碼封裝成異步消息發(fā)送給目的客戶端,同時將該同步數(shù)據(jù)的變化記錄在同步緩存的一個緩存項中,目的客戶端在收到異步消息后向源客戶端回復(fù)應(yīng)答消息,消息中包含有接收到的同步序列號,源客戶端根據(jù)應(yīng)答消息中攜帶的同步序列號將本地同步緩存中相應(yīng)的同步數(shù)據(jù)刪除;所述系統(tǒng)中源客戶端包括數(shù)據(jù)監(jiān)測模塊、異步消息生成模塊、消息收發(fā)模塊、同步緩存模塊及同步數(shù)據(jù)刪除模塊,目的客戶端包括異步消息接收模塊和應(yīng)答模塊。本發(fā)明大大提高了分布式體系中即時數(shù)據(jù)同步的可靠性。
文檔編號H04L29/08GK101291342SQ200810110959
公開日2008年10月22日 申請日期2008年6月18日 優(yōu)先權(quán)日2008年6月18日
發(fā)明者聰 郁 申請人:中興通訊股份有限公司