本申請涉及數(shù)字信息的傳輸領域,尤其涉及一種無中心信息同步方法及實現(xiàn)該方法的裝置。
背景技術:
目前的信息同步主要基于服務器環(huán)境,同步數(shù)據(jù)量大,不適用于自組網(wǎng)或類似的微型網(wǎng)絡。
而在低帶寬、不穩(wěn)定網(wǎng)絡環(huán)境下,任何一個節(jié)點均可能不安全,均可能會失效。如何在這樣的網(wǎng)絡下實現(xiàn)低荷載的數(shù)據(jù)同步是迫切需要解決的問題。
技術實現(xiàn)要素:
本發(fā)明提供一種無中心信息同步方法及裝置,其可在無中心服務器的情形下實現(xiàn)信息的同步,使得任何節(jié)點實現(xiàn)均不會影響系統(tǒng)運轉。
為解決上述技術問題,本發(fā)明提供一種無中心信息同步方法,該方法包括:
響應于一計算設備接入網(wǎng)絡,在網(wǎng)絡內(nèi)廣播查詢信息的唯一版本號的請求;
網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到所述請求,確定自己是否記錄有所述信息;
網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息,在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應;
廣播所述請求的計算設備從作出響應的計算設備中選擇一個作為同步對象;
在選擇的同步對象和廣播請求的計算設備之間對所述信息進行同步。
作為本發(fā)明所述方法的改進,所述方法還包括:網(wǎng)絡內(nèi)的一計算設備響應于產(chǎn)生或修改一信息,生成一個新的唯一版本號并在網(wǎng)絡內(nèi)廣播;網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到新的唯一版本號的廣播,記錄所述新的唯一版本號。
作為本發(fā)明所述方法的另一種改進,所述網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息,在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應包括:在廣播其記錄有所述信息作為響應之前隨機等待第一時間段。
作為本發(fā)明所述方法的進一步的改進,所述網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息,在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應還包括:在廣播其記錄有所述信息作為響應之前確定其先前是否已完成所述信息的同步;響應于其先前未完成所述信息的同步,不在網(wǎng)絡內(nèi)廣播其記錄有所述信息。
作為本發(fā)明所述方法的又一種改進,所述廣播所述請求的計算設備從作出響應的計算設備中選擇一個作為同步對象對所述信息進行同步包括:在選擇一個作為同步對象之前等待第二時間段。
為解決上述技術問題,本發(fā)明提供一種實現(xiàn)無中心信息同步方法的裝置,該裝置包括:
請求廣播模塊,用于響應于一計算設備接入網(wǎng)絡,在網(wǎng)絡內(nèi)廣播查詢信息的唯一版本號的請求;
確定模塊,用于網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到所述請求,確定自己是否記錄有所述信息;
響應廣播模塊,用于網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息,在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應;
選擇模塊,用于廣播所述請求的計算設備從作出響應的計算設備中選擇一個作為同步對象;
同步模塊,用于在選擇的同步對象和廣播請求的計算設備之間對所述信息進行同步。
作為本發(fā)明所述裝置的改進,所述裝置還包括:版本號生成和廣播模塊,用于網(wǎng)絡內(nèi)的一計算設備響應于產(chǎn)生或修改一信息,生成一個新的唯一版本號并在網(wǎng)絡內(nèi)廣播;記錄模塊,用于網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到新的唯一版本號的廣播,記錄所述新的唯一版本號。
作為本發(fā)明所述裝置的另一種改進,所述響應廣播模塊包括:等待子模塊,用于在一計算設備廣播記錄有所述信息作為響應之前隨機等待第一時間段。
作為本發(fā)明所述裝置的進一步改進,所述響應廣播模塊還包括:狀態(tài)確定子模塊,用于在一計算設備廣播記錄有所述信息作為響應之前確定先前是否已完成所述信息的同步;禁止廣播子模塊,用于響應于一計算設備先前未完成所述信息的同步,不在網(wǎng)絡內(nèi)廣播其記錄有所述信息。
為解決上述技術問題,本發(fā)明提供一種有形計算機可讀介質,包括用于執(zhí)行上面的無中心信息同步方法的計算機程序。
為解決上述技術問題,本發(fā)明提供一種裝置,包括至少一個處理器;及至少一個存儲器,含有計算機程序,所述至少一個存儲器和所述計算機程序被配置為利用所述至少一個處理器使得所述裝置執(zhí)行本發(fā)明的無中心信息同步方法的至少部分步驟。
按照本發(fā)明,在不穩(wěn)定網(wǎng)絡環(huán)境下,通過基于信息的唯一版本號在節(jié)點之間協(xié)商同步的策略,無需中心服務器,最大限度地保證任何節(jié)點的失效均不會影響系統(tǒng)運轉。另外,通過使得任何節(jié)點在作出同步響應前隨機等待,避免大家同時響應,造成網(wǎng)絡擁堵。
結合附圖閱讀本發(fā)明實施方式的詳細描述后,本發(fā)明的其它特點和優(yōu)點將變得更加清楚。
附圖說明
圖1為根據(jù)本發(fā)明方法的一實施例的流程圖。
圖2為根據(jù)本發(fā)明裝置的一實施例的結構示意圖。
為清晰起見,這些附圖均為示意性及簡化的圖,它們只給出了對于理解本發(fā)明所必要的細節(jié),而省略其他細節(jié)。
具體實施方式
下面參照附圖對本發(fā)明的實施方式和實施例進行詳細說明。
通過下面給出的詳細描述,本發(fā)明的適用范圍將顯而易見。然而,應當理解,在詳細描述和具體例子表明本發(fā)明優(yōu)選實施例的同時,它們僅為說明目的給出。
在網(wǎng)絡環(huán)境下,所有節(jié)點的地址均已知,節(jié)點數(shù)量也已知。網(wǎng)絡環(huán)境可以是tcp/ip或者其他自定義的自組網(wǎng)。在不穩(wěn)定網(wǎng)絡下,任何一個節(jié)點都可能不安全、會失效。例如,在傳統(tǒng)的服務器環(huán)境中,終端和服務器之間的網(wǎng)絡可能斷開,從而無法在終端和服務器之間進行同步,導致系統(tǒng)可能不能正常運轉。
圖1示出了根據(jù)本發(fā)明的無中心信息同步方法的一實施例的流程圖。下面結合圖1所示流程圖對本發(fā)明方法的一實施例進行具體說明。
為了適用本發(fā)明方法,對網(wǎng)絡內(nèi)的每一信息如群總數(shù)信息、群詳情等,生成、發(fā)布和記錄唯一版本號如全局唯一版本號。在首次產(chǎn)生一新的信息時,為該信息生成一全局唯一版本號并發(fā)布出去,發(fā)布內(nèi)容包括版本號和信息本身,網(wǎng)絡內(nèi)的每一個計算設備都記錄所有信息的版本號。每當一計算設備處對某一信息進行修改時,生成一個新的唯一版本號并在網(wǎng)絡內(nèi)廣播,每做一次修改就生成一個新的版本號,網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到新的唯一版本號的廣播,記錄新的唯一版本號。同樣,刪除某類信息,也需要發(fā)布出去。全局唯一版本號(guid,globallyuniqueidentifier)例如為由網(wǎng)卡上的標識數(shù)字(每個網(wǎng)卡都有唯一的標識號)以及cpu時鐘的唯一數(shù)字生成的一個128位(16字節(jié))的二進制值,它保證對同一時空中的所有機器都是唯一的,世界上的任何兩臺計算機都不會生成重復的guid值。全局唯一版本號可用于確定信息及其版本。此外,所有全局唯一版本號的集合例如可記錄在一張表中。
在s102,每一個計算設備接入網(wǎng)絡時,經(jīng)過安全驗證后,在網(wǎng)絡內(nèi)發(fā)布查詢?nèi)中畔姹咎柕恼埱髲V播。
在s104,網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到請求,確定自己是否記錄有所述信息。如果確定記錄有所述信息,則處理進行到步驟s106;否則,處理進行到步驟s120,相應計算設備不進行任何動作。
在s106,網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息,隨機等待s毫秒,s例如可以是10的倍數(shù)如50、60、70、80、......200等,也可以使用其他序列如斐波列切等,避免多個計算設備同時響應造成網(wǎng)絡擁堵。
在s108,網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息在隨機等待s毫秒后,在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應。
在s110,廣播所述請求的計算設備從在預設等待時間內(nèi)作出響應的計算設備中選擇一個作為同步對象,等待時間例如可以是100毫秒或其它時間長度,例如可選擇最早的響應者作為數(shù)據(jù)同步源對象。
在s112,在選擇的同步對象和廣播請求的計算設備之間對所述信息進行同步。數(shù)據(jù)同步方式有兩種,一種是一致化同步,經(jīng)同步后,雙方信息及版本號都一致。這類同步適用于信息量小的場景。對于像聊天消息這樣數(shù)據(jù)量大的,可以指定同步范圍,分段同步。從版本1到版本n,可以看成一個版本鏈,發(fā)起方可以指定同步[a,b]版本范圍的數(shù)據(jù)。換言之,對于消息類僅關心最近記錄的場景,比較適合使用分段同步。
本發(fā)明方法解決了無中心的信息獲取,避免簇頭節(jié)點任務繁忙或者失效后影響系統(tǒng)整體使用。
根據(jù)本發(fā)明方法的一種實施方式,由于各種原因,可能存在作出響應的計算設備的信息版本號不一致的情況,為此,在一計算設備響應于記錄有所述信息而在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應之前確定其先前是否已完成所述信息的同步;響應于其先前未完成所述信息的同步,說明其信息并非最新信息,不在網(wǎng)絡內(nèi)廣播其記錄有所述信息。例如,可通過添加一個是否完成同步標志位,每次離網(wǎng)時設置該標志位為“否”,再入網(wǎng)時,先同步版本,同步完成,設置該標志位為“是”。本身沒完成同步的計算設備不響應同步請求,以此保證,所有作出響應的設備都是完成同步的,版本號是一致的。
圖2示出了根據(jù)本發(fā)明的實現(xiàn)無中心信息同步方法的裝置的一實施例的結構示意圖,該實施例的裝置包括:版本號生成和廣播模塊202,用于網(wǎng)絡內(nèi)的一計算設備響應于產(chǎn)生或修改一信息,生成一個新的唯一版本號并在網(wǎng)絡內(nèi)廣播;記錄模塊204,用于網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到新的唯一版本號的廣播,記錄所述新的唯一版本號;請求廣播模塊206,用于響應于一計算設備接入網(wǎng)絡,在網(wǎng)絡內(nèi)廣播查詢信息的唯一版本號的請求;確定模塊208,用于網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于接收到所述請求,確定自己是否記錄有所述信息;響應廣播模塊210,用于網(wǎng)絡內(nèi)的所有其它計算設備中的每一計算設備響應于記錄有所述信息,在網(wǎng)絡內(nèi)廣播其記錄有所述信息作為響應;選擇模塊212,用于廣播所述請求的計算設備從作出響應的計算設備中選擇一個作為同步對象;同步模塊214,用于在選擇的同步對象和廣播請求的計算設備之間對所述信息進行同步。
根據(jù)本發(fā)明裝置的一種實施方式,所述響應廣播模塊包括等待子模塊,用于在一計算設備廣播記錄有所述信息作為響應之前隨機等待第一時間段。
根據(jù)本發(fā)明裝置的另一種實施方式,所述響應廣播模塊還包括:狀態(tài)確定子模塊,用于在一計算設備廣播記錄有所述信息作為響應之前確定先前是否已完成所述信息的同步;禁止廣播子模塊,用于響應于一計算設備先前未完成所述信息的同步,不在網(wǎng)絡內(nèi)廣播其記錄有所述信息。
在此所述的多個不同實施例或者其特定特征、結構或特性可在本發(fā)明的一個或多個實施方式中適當組合。另外,在某些情形下,只要適當,流程圖中和/或流水處理描述的步驟順序可修改,并不必須精確按照所描述的順序執(zhí)行。另外,本發(fā)明的多個不同方面可使用軟件、硬件、固件或者其組合和/或執(zhí)行所述功能的其它計算機實施的模塊或裝置進行實施。本發(fā)明的軟件實施可包括保存在計算機可讀介質中并由一個或多個處理器執(zhí)行的可執(zhí)行代碼。計算機可讀介質可包括計算機硬盤驅動器、rom、ram、閃存、便攜計算機存儲介質如cd-rom、dvd-rom、閃盤驅動器和/或例如具有通用串行總線(usb)接口的其它裝置,和/或任何其它適當?shù)挠行位蚍嵌虝河嬎銠C可讀介質或可執(zhí)行代碼可保存于其上并由處理器執(zhí)行的計算機存儲器。本發(fā)明可結合任何適當?shù)牟僮飨到y(tǒng)使用。
除非明確指出,在此所用的單數(shù)形式“一”、“該”均包括復數(shù)含義(即具有“至少一”的意思)。應當進一步理解,說明書中使用的術語“具有”、“包括”和/或“包含”表明存在所述的特征、步驟、操作、元件和/或部件,但不排除存在或增加一個或多個其他特征、步驟、操作、元件、部件和/或其組合。如在此所用的術語“和/或”包括一個或多個列舉的相關項目的任何及所有組合。
前面說明了本發(fā)明的一些優(yōu)選實施例,但是應當強調(diào)的是,本發(fā)明不局限于這些實施例,而是可以本發(fā)明主題范圍內(nèi)的其它方式實現(xiàn)。本領域技術人員可以在本發(fā)明技術構思的啟發(fā)和不脫離本發(fā)明內(nèi)容的基礎上對本發(fā)明作出各種變形和修改,這些變形或修改仍落入本發(fā)明的保護范圍之內(nèi)。