分布式系統同步式數據同步的方法
【技術領域】
[0001] 本發明設及計算機分布式軟件系統,尤其設及到分布式系統中信息同步的方法。
【背景技術】
[0002] 計算機軟件系統中,特別是分布式系統,都存在需要在多個系統之間同步信息的 情況。常用的信息同步方法有輪詢和通知兩類。通過輪詢方法同步,比較浪費資源。因為需 要W-定的間隔重復查詢,輪詢的代價由輪詢間隔確定。通知是異步方法,發生信息改變的 系統通知需要同步的所有系統,信息發生了變化。由收到通知的系統決定如何同步信息。
【發明內容】
[0003] 本發明所要解決的技術問題是提供一種分布式系統同步式數據同步的方法,減少 同步過程中的系統資源的浪費,同時降低對服務器的系統要求。
[0004] 為解決上述技術問題,本發明提供一種分布式系統同步式數據同步的方法,包括 一個信息服務中屯、、與所述信息服務中屯、通訊連接的若干個分布式客戶端:
[0005] 所述信息服務中屯、上保存一張與各客戶端對應的同步信息表,所述客戶端也保存 與所述信息服務中屯、進行通訊的信息;
[0006] 所述信息服務中屯、的數據發生變化時,所述信息服務中屯、根據所述同步信息表, 將數據更新消息傳遞到需要數據同步的目標客戶端;
[0007] 所述信息服務中屯、發送數據更新消息如果成功,則等待客戶端響應,如果發送失 敗,經多次嘗試后放棄;
[000引一個所述客戶端收到一條數據更新消息后,判斷數據更新消息是否包括數據差 別信息,如果是,則根據數據差別信息更新自身的同步數據,更新后向所述信息服務中屯、發 送信息已同步信號;如果數據更新消息不含數據差別信息,則所述客戶端向所述信息服務 中屯、發出要求數據差別信息的請求;
[0009] 所述信息服務中屯、收到客戶端的要求數據差別信息的請求后,向該客戶端發送數 據差別信息;所述客戶端接收到數據差別信息后,根據數據差別信息更新自身的同步數據, 更新后向所述信息服務中屯、發送信息已同步信號;
[0010] 所述信息服務中屯、收到所述已同步信號,更新所述同步信息表后,數據同步任務 結束。
[0011] 基于同樣的技術構思,本發明提供客戶端的數據最先發生變化情況下的一種分布 式系統同步式數據同步的方法,包括一個信息服務中屯、、與所述信息服務中屯、通訊連接的 若干個分布式客戶端:
[0012] 所述信息服務中屯、上保存一張與各客戶端對應的同步信息表,所述客戶端也保存 與所述信息服務中屯、進行通訊的信息;
[0013] 當某一個客戶端的數據最先發生變化時,該同步發起客戶端根據所述信息服務中 屯、聯系信息表,向信息服務中屯、發送數據變化信息,如果發送成功,則等待信息服務中屯、響 應;如果失敗,經多次嘗試后放棄;
[0014] 所述信息服務中屯、收到該同步發起客戶端的數據變化信息后,更新同步數據,并 更新所述同步信息表;
[0015] 所述信息服務中屯、根據所述同步信息表,將數據更新消息傳遞到需要數據同步的 其它目標客戶端;
[0016] 所述信息服務中屯、發送數據更新消息如果成功,則等待客戶端響應,如果發送失 敗,經多次嘗試后放棄;
[0017] -個所述客戶端收到一條數據更新消息后,判斷數據更新消息是否包括數據差別 信息,如果是,則根據數據差別信息更新自身的同步數據,更新后向所述信息服務中屯、發 送信息已同步信號;如果數據更新消息不含數據差別信息,則所述客戶端向所述信息服務 中屯、發出要求數據差別信息的請求;
[0018] 所述信息服務中屯、收到客戶端的要求數據差別信息的請求后,向該客戶端發送數 據差別信息;所述客戶端接收到數據差別信息后,根據數據差別信息更新自身的同步數據, 更新后向所述信息服務中屯、發送信息已同步信號;
[0019] 所述信息服務中屯、收到所述已同步信號,更新所述同步信息表后,數據同步任務 結束。
[0020] 優選的,所述同步信息表內容包括各個客戶端的標識、同步數據信息、通訊類型和 通訊標識;
[0021] 所述信息服務中屯、的數據發生變化時,信息服務中屯、在所述同步信息表中查找變 化數據對應的客戶端標識、該客戶端標識對應的通訊類型和通訊標識;
[0022] 信息服務中屯、根據所述通訊類型和通訊標識,將數據更新消息傳遞到需要數據同 步的目標客戶端。
[0023] 當一個客戶端加入所述分布式系統時,該客戶端向所述信息服務中屯、進行注冊登 記,所述信息服務中屯、將注冊的客戶端信息添加入所述同步信息表中。
[0024] 當一個客戶端脫離所述分布式系統時,該客戶端向所述信息服務中屯、進行注銷登 記,所述信息服務中屯、將注銷的客戶端信息從所述同步信息表中刪除。
[0025] 當所述分布式系統的一個客戶端信息變更時,該客戶端向所述信息服務中屯、進行 變更登記,所述信息服務中屯、更新所述同步信息表內該客戶端信息。
[0026] 有益效果:本發明采用一端發起、需要同步端同步響應的數據同步的方法,避免 了現有輪詢同步方式存在的網絡資源浪費的弊端;降低了數據同步所需要的系統資源量; 而且數據同步更新及時,保證了分布式系統的數據完整性、統一性。
【附圖說明】
[0027] 下面結合附圖和【具體實施方式】對本發明的技術方案作進一步具體說明。
[00%]圖1為服務器和客戶端通過網絡連接示意圖。
[0029] 圖2為所有基礎信息和環境準備框架示意圖。
[0030] 圖3為信息服務中屯、數據發生變化時同步流程示意圖。
[0031 ]圖4為客戶端數據發生變化時同步流程示意圖。
【具體實施方式】
[0032] 不失一般性,將參與信息同步的系統各方簡化為W下形式:一個信息服務中屯、,3 個信息客戶端。信息服務中屯、,也就是服務器,和客戶端基于網絡連接的一般形式如圖1所 示。運里不考慮具體的網絡連接方式,因為只要服務器和客戶端之間能夠通過某種方式進 行通信即可。
[0033] 基礎信息是數據同步執行過程中需要使用到的數據。環境是指數據之上的操作, 各系統之間的交互能夠執行的環境。
[0034] W信息服務中屯、存儲的同步數據作為整體,對其進行劃分。可W是同步數據的一 個全劃分或部分劃分,根據具體的信息同步需求進行設置。一個信息服務中屯、存儲數據的 劃分示例如表1所示。
[0035] 表1同步數據劃分
[0037] 表1中數據集標識具有唯一性,指示對應的數據范圍;版本號是數據集標識對應數 據的版本;數據是指包含在對應數據集標識下的所有數據,可W通過數據索引范圍或者其 他方法指定。
[0038] 數據集可W是數據的全劃分、部分劃分或者其它更加復雜的形式。數據到數據集 的映射關系可W用來判定數據屬于哪個或哪些映射集。當每次數據集中的數據被修改時, 更新其對應的版本號,一般來說更新方式可W采用逐一遞增的方法。
[0039] 在信息服務中屯、保存一張與各客戶端對應的同步信息表,客戶端也保存與信息服 務中屯、進行通訊的信息。一般來說,需要信息服務中屯、和客戶端根據支持的通信方式提供 相應的同步功能。信息服務中屯、的同步信息表如下表2所示。
[0040] 表2同步信息表
[0042] 表2中,客戶端標識對應到客戶端;數據集和版本對應客戶端和信息服務中屯、之間 需同步的數據集,W及該數據集在客戶端的標識;通訊類型和通訊標識給出信息服務中屯、 與客戶端通信的聯系方式和聯系信息。客戶端也保存信息服務中屯、的類似信息。運些信息 使信息服務中屯、或客戶端兩方中任何一方都可W主動進行通信。
[0043] 同步聯系信息可W預先設置在信息服務中屯、和客戶端,也可W通過動態請求的方 式由各客戶端向信息服務中屯、進行注冊,修改和注銷。一般來說,注冊對應增加一個同步信 息表行;注銷是注冊的逆過程;修改主要包括改變客戶端和信息服務中屯、同步的數據集、 通訊類型、通訊標識等。
[0044] 通訊類型不限,只要服務端、客戶端能夠傳遞信息即可,例如:客戶端支持的通訊 類型TCP/IP,RPC,RMI,HTTP,HTTPS,Socket等等,對于每種通訊類型都需要提供對應的通訊 標識W便能夠將信息直接或間接發送到客戶端。
[0045] 客戶端保存的信息服務中屯、聯系信息表的一個示例如表3所示。因為只需要保證 的是信息服務中屯、的數據存在并是最新的,所W在客戶端的信息服務中屯、聯系信息表中不 用存儲對應數據。
[0046] 表3客戶端保存的信息服務中屯、聯系信息表
[004引客戶端也保存其包含的與信息服務中屯、同步的數據集信息。關于客戶端同步數據 集的示例,如表4、表5和表6分別對應客戶端1,客戶端2和客戶端3中包含的同步數據集。 [0049]表4客戶端1的同步數據集
[0051]表5客戶端2的同步數據集
[0053]表6客戶端3的同步數據集
[0055] 將所有的基礎信息和環境準備結合起來的一個示意圖如圖2所示。
[0056] 下面詳細描述分布式系統之間的信息同步流程如下:
[0057] 按信息同步的流程,主要有兩種情況:
[005引(一)信息服務中屯、的數據最先發生變化;
[0059] (二)某一個客戶端的數據最先發生變化。
[0060] 整個同步流程的進行都是通過服務端和客戶端雙方之間的交互完成。兩種情況下 同步的整個過程都是分階段進行的。下面就運兩種信息同步的流程分別進行說明。
[0061] (一)信息服務中屯、的數據最先發生變化時的數據同步
[0062] 當信息服務中屯、數據最先變化時,主要有通知和同步兩個階段。通知階段主要指 信息服務中屯、的數據發生變化時,將運種變化通知需要的客戶端。同步階段則主要指客戶 端接收到通知后,根據接收的信息執行具體的數據同步操作,使數據與信息服務中屯、保持 一致。
[0063] 步驟I、信息服務中屯、執行:
[0064] 1.當信息服務中屯、數據發生變化時,根據數據到數據集的映射關系可W確定需要 更新版本的數據集;
[006