專利名稱:一種分布式系統(tǒng)中的數(shù)據(jù)同步方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)通訊領(lǐng)域,尤其涉及一種分布式系統(tǒng)中的數(shù)據(jù)同步方法及裝置。
背景技術(shù):
分布式系統(tǒng)中,多個CPU協(xié)同進行工作,但是每個CPU都只能訪問自己的內(nèi)存空間,物理空間上并不存在全局意義上的數(shù)據(jù)供不同的CPU共享,如果各個CPU的數(shù)據(jù)不一致,將直接導(dǎo)致任務(wù)結(jié)果不可預(yù)期,因此可靠而快速的數(shù)據(jù)同步機制是分布式系統(tǒng)中的各個CPU協(xié)同工作的首要條件。
在目前的數(shù)據(jù)同步機制中,因為同步等待方式的開銷較大,效率較低,一般都采用發(fā)送異步消息的方式進行數(shù)據(jù)同步,絕大多數(shù)系統(tǒng)釆用的是如
下兩種異步消息數(shù)據(jù)同步
1. 定時全局同步定時由源CPU向目的CPU發(fā)送異步消息,將所有數(shù)據(jù)全部重新同步一次,不管目前的數(shù)據(jù)是否已經(jīng)處于同步了,可以避免因為異步消息丟失造成的數(shù)據(jù)不同步問題。
2. 即時數(shù)據(jù)同步源CPU數(shù)據(jù)發(fā)生了變化,需要進行同步,主動向目的CPU發(fā)送異步消息,異步消息只發(fā)送修改的數(shù)據(jù),數(shù)據(jù)同步的延時極短并且開銷也比較小。
然而,以上兩種方法各自存在無法避免的問題
定時全局同步雖然可靠性高,但是系統(tǒng)開銷非常大,對CPU的處理能力和CPU間的帶寬都提出了較高的要求,并且由于系統(tǒng)資源耗費大,定時同步的時間間隔一般也設(shè)置得比較長,造成全局?jǐn)?shù)據(jù)的同步時延也會同步增大。
即時數(shù)據(jù)同步的開銷小、時延短,但是無法保證數(shù)據(jù)的完全同步,一旦系統(tǒng)比較繁忙,就有可能造成消息丟失,數(shù)據(jù)不同步,并且隨著系統(tǒng)運行時間的推移,這種不同步的問題會越來越嚴(yán)重。
發(fā)明內(nèi)容
本發(fā)明提供了 一種分布式系統(tǒng)中數(shù)據(jù)同步的方法及裝置,能夠在保證數(shù)據(jù)同步的可靠性的同時,提高數(shù)據(jù)同步的效率。
為了解決上述技術(shù)問題,本發(fā)明采用了如下技術(shù)方案一種分布式系統(tǒng)中的數(shù)據(jù)同步方法,包含以下處理步驟
(1) 源CPU和目的CPU采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一 ID標(biāo)識同 一翁:據(jù)組;
(2) 目的CPU對本地數(shù)據(jù)組計算校驗碼,將數(shù)據(jù)組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;
(3 )源CPU根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,獲取本地的相同數(shù)據(jù)組ID對應(yīng)的校驗碼,并與目的CPU發(fā)送來的該數(shù)據(jù)組ID的校驗碼進行比較,如果不同,向目的CPU同步該組凝:據(jù)。
在上述數(shù)據(jù)同步方法的一種實施例中,還包括處理以下處理步驟源CPU集中計算本地數(shù)據(jù)組的校驗碼。
在上述數(shù)據(jù)同步方法的一種實施例中,源CPU在系統(tǒng)空閑期對本地數(shù)據(jù)組校驗碼進行集中計算。
在上述數(shù)據(jù)同步方法的一種實施例中,源CPU如果在本地數(shù)據(jù)組校驗碼的集中計算期間收到目的CPU發(fā)送來的數(shù)據(jù)組ID及其對應(yīng)的校驗碼,則優(yōu)先查找或計算目的CPU發(fā)送來的數(shù)據(jù)組ID的本地校驗碼。
在上述數(shù)據(jù)同步方法的一種實施例中,所述數(shù)據(jù)組ID唯一確定一種校驗碼算法。
在上述數(shù)據(jù)同步方法的一種實施例中,采用查找預(yù)置的對應(yīng)關(guān)系表的方式確定數(shù)據(jù)組ID對應(yīng)的校驗碼算法。
在上述數(shù)據(jù)同步方法的一種實施例中, 一個翁:據(jù)-陂分組在至少一個同步組中。
在上述數(shù)據(jù)同步方法的一種實施例中,所述邏輯分組基于模塊和校驗碼算法兩者中至少 一種進行劃分。
在上述數(shù)據(jù)同步方法的一種實施例中,目的CPU定時遍歷本地數(shù)據(jù)組ID并計算各個數(shù)據(jù)組對應(yīng)的校驗碼。本發(fā)明還公開了 一種分布式系統(tǒng)中的數(shù)據(jù)同步裝置,包括設(shè)置在源
CPU上的第一分組模塊和第一同步模塊,以及設(shè)置在目的CPU上的第二分組模塊和第二同步模塊,其中
第 一分組模塊和第二分組模塊,采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一 ID標(biāo)識同 一邀:據(jù)組;
第二同步模塊,對本地數(shù)據(jù)組計算校驗碼,將數(shù)據(jù)組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;
第一同步模塊,根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,獲取本地的相同數(shù)據(jù)組ID對應(yīng)的校驗碼,并與目的CPU發(fā)送來的該數(shù)據(jù)組ID的校驗碼進行比較,如果不同,向目的CPU同步該數(shù)據(jù)組。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于
本發(fā)明首先在同步前對源CPU和目的CPU采用相同的邏輯分組進行數(shù)據(jù)分組,并對相同的數(shù)據(jù)組采用同一 ID進行標(biāo)識。而后在同步時,由目的CPU主動上報需要同步的數(shù)據(jù)組ID及其對應(yīng)的校驗碼,源CPU查找本地相同的數(shù)據(jù)組ID并進行校驗碼的比對,根據(jù)比對結(jié)果決定是否進行數(shù)據(jù)同步。如此, 一方面,通過校驗碼比對而進行數(shù)據(jù)同步,使得數(shù)據(jù)同步的可靠性得到保證;另一方面,由于目的CPU上報的僅是數(shù)據(jù)組ID及其對應(yīng)的校驗碼,而源CPU只對校驗碼不匹配的數(shù)據(jù)組進行同步,不僅提高了數(shù)據(jù)同步的效率,同時減少了 CPU資源和帶寬的浪費。此外,目的CPU的主動上報也將減少源CPU和目的CPU之間的通訊次數(shù),/人而進一步減少CPU資源和帶寬的浪費。
圖1示例性的描述了本發(fā)明的數(shù)據(jù)同步流程;
圖2示例性的描述了本發(fā)明的數(shù)據(jù)組的邏輯分組及數(shù)據(jù)組ID和校驗算法的對應(yīng)關(guān)系。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的具體實施方式
進行詳細說明
如圖l所示,圖中示例性的描述了本發(fā)明的數(shù)據(jù)同步流程,在本文中,
6將一個分布式系統(tǒng)中進行數(shù)據(jù)同步的兩個CPU區(qū)分為源CPU和目的CPU,圖1僅示出了一個源CPU和一個目的CPU,可以理解,數(shù)據(jù)同步同樣可以在一個源CPU和多個目的CPU之間進行,源CPU和目的CPU的數(shù)量
對本發(fā)明的數(shù)據(jù)同步方法并無限制。
在本發(fā)明的一個實施例中,數(shù)據(jù)同步按如下處理步驟進行
1、 源CPU和目的CPU采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一 ID標(biāo)識同 一數(shù)據(jù)組;
2、 目的CPU對本地數(shù)據(jù)組計算校驗碼,將同步組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;
3、 源CPU根據(jù)目的CPU發(fā)送來的同步組ID,獲取本地的相同同步組ID對應(yīng)的校驗碼,并與目的CPU發(fā)送來的該同步組ID的校驗碼進行比較,如果不同,向目的CPU同步該組數(shù)據(jù)。
在上述步驟l中,數(shù)據(jù)同步前,首先進行數(shù)據(jù)的邏輯分組,數(shù)據(jù)分組分別在源CPU和目的CPU進行,將源CPU上的數(shù)據(jù)稱為源CPU的本地數(shù)據(jù),相應(yīng)的,目的CPU上的數(shù)據(jù)稱為目的CPU的本地數(shù)據(jù)。為保證之后的數(shù)據(jù)同步的正確性,源CPU和目的CPU應(yīng)當(dāng)采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并對同樣的數(shù)據(jù)組用同樣的ID進行標(biāo)識,即數(shù)據(jù)組ID是一個全局標(biāo)識,適用于整個分布式系統(tǒng)中, 一個數(shù)據(jù)組ID,在分布式系統(tǒng)中的各個CPU標(biāo)識的都是同樣的數(shù)據(jù)組。
如圖2所示,在邏輯分組時, 一個數(shù)據(jù)可以分組在一個數(shù)據(jù)組中,也可以分組在多個凄t據(jù)組中。
如圖2所示,數(shù)據(jù)組ID唯一的確定一種校驗碼算法,校驗碼算法可以是系統(tǒng)默認(rèn)的,也可以是自定義的,例如可以是校驗和、MD5、奇偶校驗等算法。數(shù)據(jù)組ID與校驗碼算法的對應(yīng)關(guān)系根據(jù)預(yù)置的對應(yīng)關(guān)系表獲取。
在圖2的示例中, 一個數(shù)據(jù)被分組在多個數(shù)據(jù)組中,由于不同數(shù)據(jù)組分別計算各自的校驗碼,從而可以提高校驗碼計算的可靠性;特別的,不
同的數(shù)據(jù)組可以采用不同的校驗算法,使得同 一個數(shù)據(jù)可以參與到多種校驗算法中,這樣可以降低不同的數(shù)據(jù)組卻得到相同校驗碼的幾率,降低系統(tǒng)誤判的幾率,而校驗碼計算的可靠性的提高,將相應(yīng)提高數(shù)據(jù)同步的可靠性。
邏輯分組基于^f莫塊和校驗碼算法兩者中至少一種進行劃分。按模塊劃分是指將一個^^莫塊的數(shù)據(jù)作為一個邏輯分組,有多少個才莫塊就劃分為多少組,每組使用一個校驗算法,分配一個ID。按照校驗算法劃分是指同一個
模塊數(shù)據(jù)使用不同的校驗算法分組到不同的邏輯分組中,分配不同的ID。
在實際應(yīng)用中,為了簡單和提高性能,可以選擇只基于模塊進行分組,使
用默認(rèn)校驗算法;為了提高可靠性,可以選擇基于模塊和基于校驗算法來進行分組,這樣可以對同一個數(shù)據(jù)進行多次和多種方式的校驗計算,減少重碼率導(dǎo)致的同步誤判。
如圖1所示,目的CPU采用定時方式進行校-瞼碼計算及發(fā)送處理,定時方式將周期上報,由源CPU判斷是否需要進行同步,從而保證數(shù)據(jù)的可靠性。定時的校驗碼計算及發(fā)送處理包括
1) 目的CPU啟動數(shù)據(jù)同步定時器。
2) 數(shù)據(jù)同步定時器超時后,目的CPU開始遍歷本地的所有數(shù)據(jù)組,對每個數(shù)據(jù)組按照指定的校驗碼算法計算校驗碼。
3 )目的CPU將數(shù)據(jù)組ID及其對應(yīng)的校驗碼封裝成異步消息發(fā)送到源CPU。
在源CPU,獲取到目的CPU發(fā)送來的數(shù)據(jù)組ID及其對應(yīng)的校驗碼后,需要進行校驗碼比對處理。源CPU首先根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,查找這些數(shù)據(jù)組ID的本地核z驗碼,即源CPU上相同的數(shù)據(jù)組ID對應(yīng)的校驗碼,而后源CPU進行各個數(shù)據(jù)組的本地校驗碼與目的CPU發(fā)送來的校驗碼之間的比對。如果校驗碼相同,說明源CPU與目的CPU數(shù)據(jù)已經(jīng)一致,不需務(wù)敗同步操作;如果校驗碼不同,說明源CPU與目的CPU數(shù)據(jù)不一致,源CPU向目的CPU同步該4L瞼碼對應(yīng)的數(shù)據(jù)組。
源cpu的本地4交-驗碼,可以在某一時期集中計算,例如可以選在系統(tǒng)
空閑期間計算,這將提高校驗碼計算的效率,同時,也將提高系統(tǒng)效率。
并且,源CPU的本地校驗碼的集中計算不限于在同步前,也可以在同步中根據(jù)CPU發(fā)送來的數(shù)據(jù)組ID進行計算,源CPU如果在本地校驗碼的集中計算期間收到目的CPU發(fā)送來的數(shù)據(jù)組ID及其對應(yīng)的4t瞼碼,則優(yōu)先查找或計算目的CPU發(fā)送來的數(shù)據(jù)組ID對應(yīng)的本地校驗碼。本發(fā)明示例的一種分布式系統(tǒng)中的數(shù)據(jù)同步裝置,包括設(shè)置在源CPU上的第一分組模塊和第一同步模塊,以及設(shè)置在目的CPU上的第二分組模塊和第二同步模塊,其中第一分組模塊和第二分組模塊,采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一 ID標(biāo)識同一數(shù)據(jù)組;第二同步模塊,對本地數(shù)據(jù)組計算校驗碼,將數(shù)據(jù)組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;第一同步模塊,根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,獲取本地的相同數(shù)據(jù)組ID對應(yīng)的校驗碼,并與目的CPU發(fā)送來的該數(shù)據(jù)組ID的校驗碼進行比較,如果不同,向目的CPU同步該組數(shù)據(jù)。該數(shù)據(jù)同步裝置的工作方式類似于前述的數(shù)據(jù)同步方法,不再贅述。
本發(fā)明的數(shù)據(jù)同步方法及裝置,針對分布式系統(tǒng)的多個CPU之間的數(shù)據(jù)同步,采用了先進行數(shù)據(jù)的邏輯分組并以全局的數(shù)據(jù)組ID標(biāo)識;在同步中,目的CPU僅發(fā)送數(shù)據(jù)組的ID及對應(yīng)的校驗碼,源CPU進行校驗碼比對,并根據(jù)校驗碼比對結(jié)果進行數(shù)據(jù)同步操作,因而克服了現(xiàn)有技術(shù)中的兩種同步方法各自的缺陷,而將這兩種同步方法各自的優(yōu)點融合,既可保證數(shù)據(jù)同步的可靠性,又可提高數(shù)據(jù)同步的效率。
明,但這只是為便于理解而舉的實例,不應(yīng)認(rèn)為本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,可以做出各種可能的等同改變或替換,這些改變或替換都應(yīng)屬于本發(fā)明的保護范圍。
9
權(quán)利要求
1、一種分布式系統(tǒng)中的數(shù)據(jù)同步方法,其特征在于,包含以下處理步驟(1)源CPU和目的CPU采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一ID標(biāo)識同一數(shù)據(jù)組;(2)目的CPU對本地數(shù)據(jù)組計算校驗碼,將數(shù)據(jù)組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;(3)源CPU根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,獲取本地的相同數(shù)據(jù)組ID對應(yīng)的校驗碼,并與目的CPU發(fā)送來的該數(shù)據(jù)組ID的校驗碼進行比較,如果不同,向目的CPU同步該組數(shù)據(jù)。
2、 如權(quán)利要求1所述的數(shù)據(jù)同步方法,其特征在于,還包括處理步驟源CPU集中計算本地數(shù)據(jù)組的校驗碼。
3、 如權(quán)利要求2所述的數(shù)據(jù)同步方法,其特征在于,源CPU在系統(tǒng)空閑期對本地數(shù)據(jù)組校驗碼進行集中計算。
4、 如權(quán)利要求1至3任一所述的數(shù)據(jù)同步方法,其特征在于,源CPU如果在本地數(shù)據(jù)組校驗碼的集中計算期間收到目的CPU發(fā)送來的數(shù)據(jù)組ID及其對應(yīng)的校驗碼,則優(yōu)先查找或計算目的CPU發(fā)送來的數(shù)據(jù)組ID的本地校驗碼。
5、 如權(quán)利要求1所述的數(shù)據(jù)同步方法,其特征在于,所述數(shù)據(jù)組ID唯一確定一種校驗碼算法。
6、 如權(quán)利要求5所述的數(shù)據(jù)同步方法,其特征在于,采用查找預(yù)置的對應(yīng)關(guān)系表的方式確定數(shù)據(jù)組ID對應(yīng)的校驗碼算法。
7、 如權(quán)利要求l所述的數(shù)據(jù)同步方法,其特征在于, 一個數(shù)據(jù)被分組在至少一個數(shù)據(jù)組中。
8、 如權(quán)利要求7所述的數(shù)據(jù)同步方法,其特征在于,所述邏輯分組基于模塊和校驗碼算法兩者中至少 一種進行劃分。
9、 如權(quán)利要求1所述的數(shù)據(jù)同步方法,其特征在于,目的CPU定時遍歷本地數(shù)據(jù)組ID并計算各個數(shù)據(jù)組對應(yīng)的校驗碼。
10、 一種分布式系統(tǒng)中的數(shù)據(jù)同步裝置,其特征在于,包括設(shè)置在源CPU上的第一分組模塊和第一同步模塊,以及設(shè)置在目的CPU上的第二分組模塊和第二同步模塊,其中第一分組模塊和第二分組模塊,采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一 ID標(biāo)識同一數(shù)據(jù)組;第二同步模塊,對本地數(shù)據(jù)組計算校驗碼,將數(shù)據(jù)組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;第一同步模塊,根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,獲取本地的相同數(shù)據(jù)組ID對應(yīng)的?!€碼,并與目的CPU發(fā)送來的該數(shù)據(jù)組ID的校驗碼進行比較,如果不同,向目的CPU同步該組數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種分布式系統(tǒng)中的數(shù)據(jù)同步方法及裝置,所述方法包括以下處理步驟(1)源CPU和目的CPU采用相同的邏輯分組對本地數(shù)據(jù)進行分組,并以同一ID標(biāo)識同一數(shù)據(jù)組;(2)目的CPU對本地數(shù)據(jù)組計算校驗碼,將數(shù)據(jù)組ID及其對應(yīng)的校驗碼發(fā)送給源CPU;(3)源CPU根據(jù)目的CPU發(fā)送來的數(shù)據(jù)組ID,獲取本地的相同數(shù)據(jù)組ID對應(yīng)的校驗碼,并與目的CPU發(fā)送來的該數(shù)據(jù)組ID的校驗碼進行比較,如果不同,向目的CPU同步該數(shù)據(jù)組。所述裝置包括設(shè)置在源CPU上的第一分組模塊和第一同步模塊,以及設(shè)置在目的CPU上的第二分組模塊和第二同步模塊。本發(fā)明有效地提高了分布式系統(tǒng)中數(shù)據(jù)同步的性能和可靠性。
文檔編號G06F15/16GK101561795SQ200910107399
公開日2009年10月21日 申請日期2009年5月20日 優(yōu)先權(quán)日2009年5月20日
發(fā)明者聰 郁 申請人:中興通訊股份有限公司