專利名稱:訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦及數(shù)據同步方法
技術領域:
本發(fā)明涉及的是一種計算機分布式系統(tǒng),具體涉及一種在訂閱/發(fā)布系統(tǒng)中中信息倉庫聯(lián)邦以及在這些聯(lián)邦成員之間進行數(shù)據同步的方法。
背景技術:
訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦成員數(shù)據同步,屬于分布式系統(tǒng)中數(shù)據同步技術范疇。目前在分布式系統(tǒng)中數(shù)據同步主要有以下幾種同步技術I.事務控制法I. I.傳統(tǒng)的事務控制法在分布式數(shù)據庫系統(tǒng)中,“事務”是一系列不可分割的操作序列,將數(shù)據庫從一個一致性狀態(tài)轉變到另一個一致性狀態(tài),由于全局事務與局部事務存在并發(fā)執(zhí)行,可能會造成數(shù)據副本不一致。傳統(tǒng)的事務控制法通過分布式兩段鎖協(xié)議(2PL協(xié)議)來保證全局事務與局部事務執(zhí)行的可串行性,即可保證事務的一致性調度,以及通過分布式兩段提交協(xié)議(2PC協(xié)議)來同步更新各副本數(shù)據。這對數(shù)據操作涉及的記錄不多、事務保持時間不長的分布式數(shù)據庫系統(tǒng)有效。而在一些數(shù)據量大、用戶對數(shù)據的操作范圍大的情況下,事務保持時間長,若采用2PL協(xié)議,則會嚴重地影響事務并發(fā)程度,不能滿足實際需要,同時,2PC協(xié)議或3PC協(xié)議的方法在網上通信量很大,而由于網絡速度有限,因此,會使用戶陷入長時間的不可忍受的等待狀態(tài),或遇到頻繁的事務失敗,重新啟動事務太多,造成應用程序運行效率低下。I. 2.擴展事務控制法在分布式環(huán)境下,2PC協(xié)議是實現(xiàn)事務原子性的一個主要原則,然而大多數(shù)原有的數(shù)據庫系統(tǒng)并不支持這一協(xié)議,擴展事務控制法則不依賴于局部數(shù)據庫系統(tǒng)是否支持2PC協(xié)議,而是對全局子事務和局部事務進行擴展,并為各個局部數(shù)據庫引進了鎖表和日志表,它在局部數(shù)據庫和控制表之上執(zhí)行擴展事務,它們負責維護全局可串行性和實際事務的恢復。通過擴展事務來檢測鎖,以避免沖突發(fā)生和進行恢復。該方法在一定的基礎上維護了局部事務的自治性,但它增加了事務的負擔而降低了事務本身的執(zhí)行效率。2.復制控制法2. I.同步復制控制法利用同步復制使得各數(shù)據副本保持緊一致性,即任何時刻不同站點的副本的值總是一致的。這樣,全局事務管理系統(tǒng)要明確數(shù)據的各個副本所在的站點,當事務對某一數(shù)據副本進行了更新時,全局事務管理系統(tǒng)必須向其他站點發(fā)送強制用戶修改數(shù)據副本的消息以保持數(shù)據各副本一致。但是對于出現(xiàn)故障的站點,則必須等待其恢復以后再進行復制,因此數(shù)據并非嚴格一致。由于對數(shù)據的更新操作頻繁,從而向系統(tǒng)發(fā)送的復制消息也頻繁,系統(tǒng)通信量大,降低了系統(tǒng)處理速度。而且對于很多數(shù)據庫系統(tǒng)來說,它并不要求嚴格的數(shù)據一致,如空間數(shù)據庫一般允許訪問時間相對滯后的數(shù)據,采用同步復制控制并不實用。2. 2 異步復制控制法
利用異步復制使得各數(shù)據副本保持松一致性,即數(shù)據的更新與其各副本所做的修改復制有一段時間間隔,在某一時刻不同站點的副本的值可能是不一致的,數(shù)據暫時不同步。它主要解決兩個問題,即如何捕捉到更新數(shù)據和什么時候復制。一般采用基于事務日志方法和基于觸發(fā)器方法捕捉系統(tǒng)更新操作,大多數(shù)數(shù)據庫系統(tǒng)一般采用事務日志來捕捉數(shù)據更新,如Sybase, Informix,Microsoft SQL Server等。但由于事務日志格式可能不相同,設計通用的數(shù)據庫日志讀取程序相當困難,因而一些系統(tǒng)采用觸發(fā)器方法。對于觸發(fā)器法,一旦被跟蹤的對象被更新,會觸發(fā)相關事件發(fā)生,記錄數(shù)據源與數(shù)據更新的內容。對于被觸發(fā)器所捕捉的更新數(shù)據,由復制服務器對各副本進行更新,復制服務器需要保證被復制的數(shù)據是最后的更新結果。3.消息隊列法消息隊列是進程間通信的一種機制,兩個或多個進程間通過訪問共用的系統(tǒng)消息 隊列來交換信息,這里將消息隊列的概念擴展到位于分布式環(huán)境下的不同站點間的進程間通信,由消息管理機構在Internet上實現(xiàn)可靠的消息傳送,其中涉及的消息隊列有發(fā)送隊列、接收隊列、應答隊列和管理隊列。應用程序在本地數(shù)據庫上完成數(shù)據更新后,將更新信息以及本地應答隊列和管理隊列的地址存放到消息中,發(fā)送到遠端接收隊列中,消息交給消息管理機構后首先進入本地發(fā)送隊列等待發(fā)送,如一切正常,消息將送到應用程序指定的遠端接收隊列中,同時,一個后臺處理程序一直在監(jiān)視著自己的接收隊列,一旦有消息到達,它將讀消息,并對本地數(shù)據庫實施消息中所描述的更新操作,如果更新陳珉等分布式數(shù)據庫系統(tǒng)中數(shù)據一致性維護方法研究成功,則處理結束,否則依應答隊列的地址信息發(fā)送出錯消息,另一個后臺處理程序一直在監(jiān)視應答隊列,根據收到的錯誤信息,它將在本地數(shù)據庫中試圖撤消相應的更新操作。該方法提供的是數(shù)據庫間異步更新,而不是同步更新,這樣可能讀到的不是最新數(shù)據,所以它不適合要求實時數(shù)據同步的分布式數(shù)據庫系統(tǒng)。
發(fā)明內容
本發(fā)明的目的在于提供一種可以提高分布式系統(tǒng)的健壯性、穩(wěn)定性的訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦。本發(fā)明的目的還在于提供一種能避免數(shù)據臟讀、提高容錯性的訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦數(shù)據同步方法。本發(fā)明的目的是這樣實現(xiàn)的本發(fā)明的訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦由多個結構相同且平級的聯(lián)邦成員、即信息倉庫構成,每個信息倉庫的結構如下(I)數(shù)據存儲模塊,負責數(shù)據的持久化存儲的基礎模塊,存儲的數(shù)據分為聯(lián)邦數(shù)據、業(yè)務數(shù)據兩種,聯(lián)邦數(shù)據為各聯(lián)邦成員的狀態(tài)、位置信息;業(yè)務數(shù)據為發(fā)布/訂閱系統(tǒng)運行所必須的業(yè)務數(shù)據;(2)同步處理模塊,負責同步聯(lián)邦成員之間數(shù)據的模塊,分為消息隊列、監(jiān)聽器、觸發(fā)器、控制器四個子模塊;消息隊列用于緩存應用程序發(fā)送的寫入請求;監(jiān)聽器用于監(jiān)視系統(tǒng)狀態(tài)并向其它模塊推送;觸發(fā)器用于根據條件觸發(fā)操作;控制器用于控制整個同步操作過程;(3)公共服務模塊,負責向上層模塊提供公共服務的底層模塊,分為時間管理、聯(lián)邦狀態(tài)管理、底層通信三個子模塊;時間管理用于對各聯(lián)邦成員進行時間同步;聯(lián)邦狀態(tài)管理用于維護聯(lián)邦成員之間的狀態(tài)、位置信息;底層通訊用于實現(xiàn)系統(tǒng)中數(shù)據的收發(fā)。所述數(shù)據存儲模塊采用數(shù)據庫或XML文件方式存儲。訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦的數(shù)據同步方法包括如下步驟(I)系統(tǒng)中的應用程序向某一信息倉庫A發(fā)起“寫消息”;(2)信息倉庫A將“寫消息”存入消息隊列,觸發(fā)同步操作;(3)信息倉庫A取出消息隊列中最下一條消息,將消息打包并根據聯(lián)邦狀態(tài)選擇某一聯(lián)邦成員發(fā)送同步消息;
(4)信息倉庫A發(fā)送消息之后,開始計時,若在一定時間內沒有收到對方應答,則重發(fā)該消息,若收到應答,則進入第(8)步;(5)信息倉庫B接收到同步消息,判斷自身是否有比該同步消息發(fā)起時間更早的同步發(fā)起消息尚未結束,若有,則拋棄信息倉庫A的同步消息,若沒有,則接收同步消息開始執(zhí)行同步操作;(6)解析收到的同步消息,根據消息內容中的主關鍵字檢索自身現(xiàn)有業(yè)務數(shù)據;(7)根據自身現(xiàn)有業(yè)務數(shù)據情況,判斷應如何操作自身業(yè)務數(shù)據;(8)信息倉庫B完成對自身業(yè)務數(shù)據的操作之后,向信息倉庫A發(fā)送操作成功響應,此時信息倉庫B完成同步;(9)信息倉庫A收到操作成功相應之后,根據聯(lián)邦狀態(tài)選擇下一聯(lián)邦成員發(fā)送同步消息,若此時已無下一聯(lián)邦成員,則開始執(zhí)行自身同步操作,更新自身業(yè)務數(shù)據;(10)信息倉庫A完成對自身的業(yè)務數(shù)據操作之后,聯(lián)邦內所有聯(lián)邦成員數(shù)據已同步,信息倉庫A刪除消息隊列中最下一條已被執(zhí)行的消息,同步完成。本發(fā)明提出的數(shù)據同步方法以簡單的結構及較少的網絡資源消耗迫使聯(lián)邦中所有聯(lián)邦成員按照順序線性執(zhí)行同步過程,避免了多聯(lián)邦成員互相發(fā)起同步所造成的數(shù)據重復改寫、數(shù)據臟讀等問題,有效提高系統(tǒng)的健壯性、穩(wěn)定性、容錯性。另外本發(fā)明還具有以下三個特點。第一,本發(fā)明中各聯(lián)邦成員在聯(lián)邦中的地位完全平等,同步過程完全通過聯(lián)邦成員自身的控制器控制完成,而不需要一個特殊的節(jié)點參與。這位聯(lián)邦的實現(xiàn)提供了便利,同時也方便了用戶部署聯(lián)邦環(huán)境。在同步過程中,同步的消息不需要經過某個特定的節(jié)點中轉,網絡負載較為平衡,避免了特定節(jié)點網絡通信較大而造成的系統(tǒng)瓶頸。第二,本發(fā)明中聯(lián)邦作為一個邏輯結構,對應用程序完全透明,應用程序直接訪問、操作的仍然是信息倉庫本身,聯(lián)邦的狀態(tài)由信息倉庫彼此之間互相維系。這為應用程序的開發(fā)與部署帶來了極大的便利,開發(fā)人員甚至不需要對應用程序進行任何修改,就可讓其運行在信息倉庫聯(lián)邦環(huán)境下。第三,本發(fā)明中信息倉庫內部不需要存儲業(yè)務數(shù)據的額外備份,應用程序發(fā)起的寫入消息在同步之前進入消息隊列緩存,待同步之后再存儲進業(yè)務數(shù)據中。這在保證同步得以完成的前提下盡量簡化了信息倉庫的結構,使其能夠使用更多的資源完成向應用程序提供數(shù)據存儲、寫入服務的本職工作,也從根本上杜絕了數(shù)據臟讀的發(fā)生。
圖I是聯(lián)邦內聯(lián)邦成員即信息倉庫的功能結構圖。
圖2是聯(lián)邦內聯(lián)邦成員發(fā)起同步、接收同步的程序流程圖。圖3是聯(lián)邦成員之間完成一次數(shù)據同步過程實例的流程圖。
具體實施例方式下面結合附圖和具體實施方式
對本發(fā)明做進一步說明。本發(fā)明的技術思路是在不影響訂閱/發(fā)布系統(tǒng)中應用程序的前提下,尋求一種結構簡單的、網絡帶寬占用小的、工程可實施性強的信息倉庫之間實時同步數(shù)據的技術。該技術能針對訂閱/發(fā)布系統(tǒng)的特點,組件信息倉庫聯(lián)邦,迫使聯(lián)邦內多個聯(lián)邦成員的同步請求按照順序串行執(zhí)行,以此保證聯(lián)邦同步過程正確完成,提高整個訂閱/發(fā)布系統(tǒng)的健壯性、穩(wěn)定性以及容錯性。結合圖1,本發(fā)明的訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦(100)內信息倉庫(102)的結、構包括以下幾個部分(I)數(shù)據存儲模塊(104)。數(shù)據存儲模塊是信息倉庫對信息、數(shù)據進行存放的基本模塊。主要負責數(shù)據的持久化存儲,根據訂閱/發(fā)布系統(tǒng)的區(qū)別及運行環(huán)境,可以采用數(shù)據庫、XML文件等方法進行結構化數(shù)據存儲,以供系統(tǒng)中應用程序訪問。數(shù)據存儲模塊中存儲的數(shù)據分以下兩類。I.聯(lián)邦數(shù)據(106):系統(tǒng)中的信息倉庫作為聯(lián)邦成員加入聯(lián)邦,聯(lián)邦數(shù)據即為聯(lián)邦中各聯(lián)邦成員狀態(tài)、位置等信息,以二維表的方式持久化存儲以供聯(lián)邦成員之間互相訪問。2.業(yè)務數(shù)據(108):存放訂閱/發(fā)布系統(tǒng)中應用程序產生、使用的業(yè)務數(shù)據,需要被同步的即為這一部分數(shù)據。例如DDS系統(tǒng)中的Topic等。(2)同步處理模塊(110)同步處理模塊主要負責聯(lián)邦內的聯(lián)邦成員(信息倉庫)之間的數(shù)據同步任務。由以下四個子模塊構成。I.消息隊列(112):訂閱/發(fā)布系統(tǒng)中客戶端應用程序向信息倉庫發(fā)起的“寫入”請求并不直接存入數(shù)據存儲模塊中,而是暫時進入消息隊列中進行緩存,以供同步處理。2.監(jiān)聽器(114):監(jiān)視信息倉庫內部狀態(tài)以及網絡中的消息,并向需要的模塊推送消息。3.觸發(fā)器(116):接收監(jiān)聽器推送的消息,當達到觸發(fā)條件時,觸發(fā)操作。例如,當消息隊列中有消息時,觸發(fā)同步操作。4.控制器(118):對整個同步操作過程進行控制,以保證同步正確完成。(3)公共服務模塊(120)公共服務模塊是系統(tǒng)底層的服務模塊,為上層數(shù)據存儲模塊和同步處理模塊提供時間同步服務、維護聯(lián)邦成員狀態(tài)信息、對外通信等功能。I.時間管理(122):實現(xiàn)聯(lián)邦內各聯(lián)邦成員時間同步,并提供接口,以便隨時獲取當前的仿真時間。2.聯(lián)邦狀態(tài)管理(124):向外廣播心跳數(shù)據并接收對方心跳數(shù)據,以維護聯(lián)邦內所有成員狀態(tài)、位置信息。3.底層通信(126):底層通信平臺,負責在系統(tǒng)中發(fā)送、接收數(shù)據。以上三大模塊構成了一個完整的信息倉庫。當整個發(fā)布/訂閱系統(tǒng)中只有一個信息倉庫時,可以認為這個信息倉庫組成一個只包含一個聯(lián)邦成員的聯(lián)邦。而當多個信息倉庫組成聯(lián)邦之后,所有聯(lián)邦成員之間的數(shù)據需要進行同步,根據信息倉庫的狀態(tài),整個聯(lián)邦可以分為如下三個狀態(tài)(I) 一致性狀態(tài)此時聯(lián)邦中各聯(lián)邦成員,即信息倉庫(102)內的數(shù)據一致。
(2)積累狀態(tài)此時聯(lián)邦中各聯(lián)邦成員,即信息倉庫(102)之間可能由于某些原因暫時無法通信,訂閱/發(fā)布系統(tǒng)中的客戶端應用程序對各自所連接的信息倉庫的“寫入”請求在信息倉庫的消息隊列(112)中積累起來。此時雖然各信息倉庫中存儲的業(yè)務數(shù)據(108)仍保持一致,但積累的消息需要被同步。(3)同步處理狀態(tài)一旦聯(lián)邦內某個聯(lián)邦成員,即信息倉庫(102)的消息隊列(112)有積累,則立即進A同步處理狀態(tài)。完成所有的同步操作之后,系統(tǒng)返回一致性狀態(tài)。整個聯(lián)邦在這三個狀態(tài)下不斷循環(huán),每一次循環(huán)均完成一次數(shù)據同步操作。如圖2所示,本發(fā)明中聯(lián)邦內聯(lián)邦成員之間數(shù)據同步的過程包括以下幾個步驟I.系統(tǒng)中的應用程序向某一信息倉庫A發(fā)起“寫消息”(202),此時整個聯(lián)邦的一致性狀態(tài)結束,進入積累狀態(tài)。2.信息倉庫A將“寫消息”存入消息隊列(204)。使用消息隊列(108)是為了在同步進行過程中緩存“寫消息”,迫使這些“寫消息”按照順序在聯(lián)邦中進行同步,同時又不影響信息倉庫本身向應用程序提供的數(shù)據讀寫服務。3.信息倉庫A中的監(jiān)聽器(114)監(jiān)聽到消息隊列(108)不為空,觸發(fā)器(116)觸發(fā)同步操作,信息倉庫A將自身標記為“未同步狀態(tài)”(206)。標記為“未同步狀態(tài)”是為了在同步執(zhí)行過程中根據情況拋棄別的聯(lián)邦成員向自身發(fā)起的請求同步消息。此時整個聯(lián)邦的積累狀態(tài)結束,進入同步處理狀態(tài)。4.信息倉庫A中的控制器(118)取出消息隊列(108)中最下一條數(shù)據(可能會存在多條消息在消息隊列中積累),將消息打包(206)。打包信息包含隊列編號(整個系統(tǒng)運行中該值唯一)、時間戳(當前系統(tǒng)仿真時間)、消息內容(需要執(zhí)行的具體操作)。5.根據聯(lián)邦狀態(tài)數(shù)據(208),按照順序,首先向另一聯(lián)邦成員信息倉庫B發(fā)送該“請求同步消息”,并開始計時(216 )。5. I.若在規(guī)定時間之內未收到信息倉庫B對本次同步的“操作成功消息”,可能是由于信息倉庫B沒有收到“請求同步消息”,也有可能是由于信息倉庫B發(fā)送的“操作成功消息”沒有成功到達(218)。不論哪種原因,均重復第5步。5. 2.若在規(guī)定時間之內收到信息倉庫B對本次同步的“操作成功消息”,跳轉到第10 步(218)。6.信息倉庫B中的監(jiān)聽器(114)監(jiān)聽到網絡中的“請求同步消息”(224)。7.信息倉庫B中的控制器(118)獲取消息并進行解包,讀取時間戳(226)。7. I.若自身狀態(tài)為“已同步狀態(tài)”,則受理同步,將自身標記為“未同步狀態(tài)”,進入第 8 步(228)。7. 2.若自身狀態(tài)為“未同步狀態(tài)”,比對上一條自身向外發(fā)送的“請求同步消息”中的時間戳(228)。加入時間戳比較的目的是為了解決兩個信息倉庫之間同時、互相發(fā)送“請求同步消息”而造成的死鎖等情況。7. 2. I.若收到消息的時間戳早于自身發(fā)送同步請求時的時間戳,則打斷自身發(fā)起的同步,受理收到的同步請求,將自身標記為“未同步狀態(tài)”,進入第8步(230)。7. 2. 2.若收到消息的時間戳晚于自身發(fā)送同步請求時的時間戳,則丟棄對方的同步請求,繼續(xù)進行自身發(fā)起的同步過程(238 )。8.信息倉庫B正式受理對方的同步請求,控制器(118)解包“請求同步消息”中的隊列編號、消息內容,根據消息內容,對業(yè)務數(shù)據進行操作(230)。對消息做以下判斷是為了在收到遲到的“請求同步消息”時進行正確處理。 8. I若消息請求為寫入,根據主關鍵字檢索信息倉庫B現(xiàn)有數(shù)據(232 )。8. I. I若沒有,則寫入數(shù)據,進入第9步(234)。 8. I. 2若已有,則不做寫入操作,進入第9步(234)。8. 2若消息請求為刪除,根據主關鍵字檢索信息倉庫B現(xiàn)有數(shù)據(232)。8. 2. I若沒有,則不做刪除操作,進入第9步(234)。8. 2. 2若已有,則刪除數(shù)據,進入第9步(234)。8. 3若消息請求為修改,直接修改數(shù)據,進入第9步(234)。
9.向同步請求發(fā)送方返回操作成功消息,消息中包含原消息隊列編號,并將自身狀態(tài)設置為“已同步狀態(tài)”(236)。10.信息倉庫A中的監(jiān)聽器(114)監(jiān)聽到網絡中返回的“操作成功消息”,查看聯(lián)邦狀態(tài)數(shù)據(208)。10. I.若有下一個聯(lián)邦成員,則向下一個聯(lián)邦成員信息倉庫C發(fā)起同步(216),此時對信息倉庫C的同步過程與B相同,不再重復。 10.2.若沒有下一個聯(lián)邦成員,則進行自身業(yè)務數(shù)據操作,進入第11步(212 )。11.信息倉庫A獲取返回的“操作成功消息”中的隊列編號值,與自身之前發(fā)送的隊列編號進行比對(214)。
11.1.若相同,則更新自身的業(yè)務數(shù)據,進入第12步(214)。11.2.若不同或此時狀態(tài)為“已同步狀態(tài)”,則丟棄該“操作成功消息”(214)。12.信息倉庫A更新數(shù)據之后,從消息隊列(112)中刪除最下一條已被同步的對應消息(214)。13.信息倉庫A將自身狀態(tài)設置為“已同步狀態(tài)”,此時整個聯(lián)邦的同步處理狀態(tài)結束,重新進入一致性狀態(tài)(220 )。到此為止,整個聯(lián)邦從一致性狀態(tài)過渡到積累狀態(tài),又經過同步處理狀態(tài)回到一致性狀態(tài),整個聯(lián)邦狀態(tài)完成一次循環(huán),聯(lián)邦成員之間的數(shù)據也經過了一次同步過程。圖3給出了一個實例,該實例描述了由三個信息倉庫組成的聯(lián)邦之間,從發(fā)起到完成一次同步的過程。其中包含了一些常見的異常情況。應當理解的是,對本發(fā)明技術所在領域的普通技術人員來說,可以根據本發(fā)明的技術方案及其構思進行相應的等同改變或替換,而所有這些改變或替換,都應屬于本發(fā)明所附權利要求的保護范圍。
權利要求
1.一種訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦,由多個結構相同且平級的聯(lián)邦成員、即信息倉庫構成,其特征是每個信息倉庫的結構如下 (1)數(shù)據存儲模塊,負責數(shù)據的持久化存儲的基礎模塊,存儲的數(shù)據分為聯(lián)邦數(shù)據、業(yè)務數(shù)據兩種,聯(lián)邦數(shù)據為各聯(lián)邦成員的狀態(tài)、位置信息;業(yè)務數(shù)據為發(fā)布/訂閱系統(tǒng)運行所必須的業(yè)務數(shù)據; (2)同步處理模塊,負責同步聯(lián)邦成員之間數(shù)據的模塊,分為消息隊列、監(jiān)聽器、觸發(fā)器、控制器四個子模塊;消息隊列用于緩存應用程序發(fā)送的寫入請求;監(jiān)聽器用于監(jiān)視系統(tǒng)狀態(tài)并向其它模塊推送;觸發(fā)器用于根據條件觸發(fā)操作;控制器用于控制整個同步操作過程; (3)公共服務模塊,負責向上層模塊提供公共服務的底層模塊,分為時間管理、聯(lián)邦狀態(tài)管理、底層通信三個子模塊;時間管理用于對各聯(lián)邦成員進行時間同步;聯(lián)邦狀態(tài)管理用于維護聯(lián)邦成員之間的狀態(tài)、位置信息;底層通訊用于實現(xiàn)系統(tǒng)中數(shù)據的收發(fā)。
2.根據權利要求I所述的訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦,其特征是所述數(shù)據存儲模塊采用數(shù)據庫或XML文件方式存儲。
3.—種權利要求I所述的訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦的數(shù)據同步方法,其特征是包括如下步驟 (1)系統(tǒng)中的應用程序向某一信息倉庫A發(fā)起“寫消息”; (2)信息倉庫A將“寫消息”存入消息隊列,觸發(fā)同步操作; (3)信息倉庫A取出消息隊列中最下一條消息,將消息打包并根據聯(lián)邦狀態(tài)選擇某一聯(lián)邦成員發(fā)送同步消息; (4)信息倉庫A發(fā)送消息之后,開始計時,若在一定時間內沒有收到對方應答,則重發(fā)該消息,若收到應答,則進入第(8)步; (5)信息倉庫B接收到同步消息,判斷自身是否有比該同步消息發(fā)起時間更早的同步發(fā)起消息尚未結束,若有,則拋棄信息倉庫A的同步消息,若沒有,則接收同步消息開始執(zhí)行同步操作; (6)解析收到的同步消息,根據消息內容中的主關鍵字檢索自身現(xiàn)有業(yè)務數(shù)據; (7)根據自身現(xiàn)有業(yè)務數(shù)據情況,判斷應如何操作自身業(yè)務數(shù)據; (8)信息倉庫B完成對自身業(yè)務數(shù)據的操作之后,向信息倉庫A發(fā)送操作成功響應,此時信息倉庫B完成同步; (9)信息倉庫A收到操作成功相應之后,根據聯(lián)邦狀態(tài)選擇下一聯(lián)邦成員發(fā)送同步消息,若此時已無下一聯(lián)邦成員,則開始執(zhí)行自身同步操作,更新自身業(yè)務數(shù)據; (10)信息倉庫A完成對自身的業(yè)務數(shù)據操作之后,聯(lián)邦內所有聯(lián)邦成員數(shù)據已同步,信息倉庫A刪除消息隊列中最下一條已被執(zhí)行的消息,同步完成。
全文摘要
本發(fā)明提供的是一中訂閱/發(fā)布系統(tǒng)中信息倉庫聯(lián)邦及數(shù)據同步方法。信息倉庫聯(lián)邦,由多個結構相同且平級的信息倉庫構成。信息倉庫包括數(shù)據存儲模塊、同步處理模塊、公共服務模塊,通過這些模塊之間的協(xié)同工作能夠將某一信息倉庫中需要更新的數(shù)據以消息的方式及時通知聯(lián)邦中其他的信息倉庫;其他信息倉庫接收到更新消息之后做出相應的更新操作,并將處理的結果返回給消息發(fā)送源;消息發(fā)送源收到反饋消息后對自身數(shù)據進行更新操作。本發(fā)明對數(shù)據量小、更新頻率低的訂閱/發(fā)布系統(tǒng)中信息倉庫之間的實時數(shù)據同步提出了一種有效、快速且易于實現(xiàn)的解決方法,提高系統(tǒng)的健壯性、穩(wěn)定性及容錯性,保證訂閱/發(fā)布系統(tǒng)中組成聯(lián)邦的信息倉庫之間數(shù)據的一致性。
文檔編號G06F17/30GK102724304SQ201210184508
公開日2012年10月10日 申請日期2012年6月6日 優(yōu)先權日2012年6月6日
發(fā)明者印桂生, 張萬松, 徐悅竹, 楊帆, 王紅濱, 石天放, 董紅斌 申請人:哈爾濱工程大學