專利名稱:一種iptv系統(tǒng)模塊間數(shù)據(jù)同步的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)同步技術(shù),尤其涉及一種IPTV (交互式網(wǎng)絡(luò)電視)系統(tǒng)模塊間數(shù)據(jù)同步的方法及系統(tǒng)。
背景技術(shù):
IPTV系統(tǒng)的相關(guān)數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)兩類,其中,靜態(tài)數(shù)據(jù)指在系統(tǒng)運行過程中不發(fā)生變化的數(shù)據(jù);動態(tài)數(shù)據(jù)指在系統(tǒng)運行過程中會發(fā)生變化的數(shù)據(jù)。IPTV系統(tǒng)中后臺、主控模塊、業(yè)務(wù)處理模塊的拓樸關(guān)系如圖l所示,其中,后臺一般為PC機,用于所述靜態(tài)數(shù)據(jù)的配置、更改,并將配置的或更改了的靜態(tài)數(shù)據(jù)同步至主控模塊;主控模塊,用于將接收到的靜態(tài)數(shù)據(jù)同步至各業(yè)務(wù)處理模塊,并用于將系統(tǒng)運行中發(fā)生變化的動態(tài)數(shù)據(jù)實時同步至各業(yè)務(wù)處理模塊,以便控制各業(yè)務(wù)處理模塊同步對外提供業(yè)務(wù)處理;業(yè)務(wù)處理模塊,負責處理業(yè)務(wù),業(yè)務(wù)處理模塊的靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)均由主控模塊同步獲得。
這里,靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)均存儲于主控模塊或各業(yè)務(wù)處理模塊的內(nèi)存數(shù)據(jù)庫,即所述主控模塊與各業(yè)務(wù)處理模塊間的數(shù)據(jù)同步為其上內(nèi)存數(shù)據(jù)庫之間的數(shù)據(jù)同步。
目前,常用的內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)同步方法是失步映像同步方法,具體為預(yù)先設(shè)置失步隊列及定時器;當有記錄發(fā)生變化時,將該記錄的記錄號放入失步隊列,到達定時器的時長時檢查失步隊列中是否有記錄,如果有記錄,則將該記錄同步到對端;否則,不執(zhí)行同步處理。此方法所需同步的數(shù)據(jù)量較大,且如果采用此方法實現(xiàn)主控模塊和多個業(yè)務(wù)處理模塊同步,則需要在主控模塊中為每個業(yè)務(wù)處理模塊分配一個失步隊列,以便標記是否需要將數(shù)據(jù)同步至該業(yè)務(wù)處理模塊、以及是否將數(shù)據(jù)成功同步至該業(yè)務(wù)處理模塊,即系統(tǒng)中有幾個業(yè)務(wù)處理模塊,就需要分配幾個失步隊列,這樣,會占用較大的內(nèi)存空間,
可見,此方法不適用于主控模塊和多個業(yè)務(wù)處理4莫塊同步。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的
方法及系統(tǒng),能夠提高同步的實時性,并降低所需同步的數(shù)據(jù)量。
為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,該方法包括主控模塊根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新自身內(nèi)存數(shù)據(jù)庫中動態(tài)表的記錄,并發(fā)送同步消息;
收到同步消息的業(yè)務(wù)處理模塊,根據(jù)同步消息中所攜帶的操作類型,更新
同步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主
控模塊應(yīng)答同步消息。
進一步地,所述同步消息中還攜帶有字段變化標記和變化內(nèi)容;所述更新為業(yè)務(wù)處理模塊根據(jù)同步消息中所攜帶的操作類型、字段變化
標記和變化內(nèi)容,更新同步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù)
庫中的記錄。
進一步地,所述主控模塊更新動態(tài)表中的記錄并發(fā)送同步消息具體為動態(tài)數(shù)據(jù)發(fā)生變化后,主控模塊的業(yè)務(wù)進程根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)對動態(tài)表中的記錄進行刪除、插入或修改,更新動態(tài)表中的記錄,并發(fā)送攜帶所述動態(tài)表的表名、記錄號、所述記錄的關(guān)4定字、對所述記錄進行操作的操作類型和所述記錄的字段變化標記的更新請求消息至主控模塊的更新進程;
主控模塊的更新進程確定收到的更新請求消息所攜帶操作類型是插入、修改還是刪除,如果是插入或修改,則主控模塊的更新進程判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在收到的更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記錄,如果存在,則將該記錄中字段變化標記所對應(yīng)元素作為該記錄的變化內(nèi)容,并發(fā)送攜帶所述表名、記錄號、操作類型、字段變化標記和變化內(nèi)容的同步消息至在線的業(yè)務(wù)處理模塊;如果不存在,則結(jié)束本次同步流程;如果是刪除,主控模塊的更新進程發(fā)送同步消息至在線的業(yè)務(wù)處理模塊。
進一步地,該方法進一步包括主控模塊預(yù)先分配全局數(shù)據(jù)區(qū);
將變化內(nèi)容所屬記錄的相關(guān)信息、以及各業(yè)務(wù)處理模塊對該變化內(nèi)容的同步狀態(tài)存儲至所述全局數(shù)據(jù)區(qū);定時遍歷全局數(shù)據(jù)區(qū),如果存在為失敗的業(yè)務(wù)處理模塊對變化內(nèi)容的同步狀態(tài),則重新同步該變化內(nèi)容至該業(yè)務(wù)處理;f莫塊。
進一步地,所述存儲變化內(nèi)容所屬記錄的相關(guān)信息、以及各業(yè)務(wù)處理模塊對該變化內(nèi)容的同步狀態(tài)包括
設(shè)置全局數(shù)組,所述全局數(shù)組包括表名、記錄的關(guān)鍵字、操作類型、字段變化標記、變化的記錄內(nèi)容、由模塊號組成的數(shù)組和由模塊號、同步標記和重發(fā)次數(shù)的對應(yīng)關(guān)系;
相應(yīng)的,主控模塊的內(nèi)存數(shù)據(jù)庫中存在接收到的更新請求消息所攜帶表名和記錄的關(guān)4建字對應(yīng)的記錄時,該方法進一步包括
主控模塊的更新進程根據(jù)所確定的記錄、所述更新請求消息攜帶的表名、記錄的關(guān)鍵字、操作類型、字段變化標記、以及在線的業(yè)務(wù)處理模塊的模塊號為所設(shè)置的全局數(shù)組中的相應(yīng)成員賦值,并分別設(shè)置所述同步標記、重發(fā)次數(shù)的初始值,得到所確定的記錄對應(yīng)的全局數(shù)組,并存儲在所述全局數(shù)據(jù)區(qū);
回復(fù)主控;漠塊應(yīng)答消息后,該方法進一步包括
主控模塊的更新進程查詢?nèi)謹?shù)據(jù)區(qū)中下標與接收到的應(yīng)答消息所攜帶數(shù)組下標一致的全局數(shù)組,將所述全局數(shù)組中接收到的應(yīng)答消息所攜帶模塊號對應(yīng)的同步標記的值改為TRUE;確定所述全局數(shù)組中所有同步標記的值均為TRUE時,清除所述全局數(shù)組。
進一步地,主控-漠塊在發(fā)送同步消息至業(yè)務(wù)處理^t塊時,設(shè)置同步定時器;同步定時器超時時,所述定時遍歷全局數(shù)據(jù)區(qū)時,如果存在的業(yè)務(wù)處理模塊對變化內(nèi)容的同步狀態(tài)為失敗,則重新同步該變化內(nèi)容為
A、主控模塊的更新進程遍歷全局數(shù)據(jù)區(qū),確定全局數(shù)據(jù)區(qū)中全局數(shù)組中是否存在值為FALSE的同步標記,如果不存在,則清除該全局數(shù)組,結(jié)束本次超時同步操作;如果存在,則執(zhí)行步驟B;
B、確定所述同步標記對應(yīng)的重發(fā)次數(shù)的值小于預(yù)先設(shè)定的重發(fā)次數(shù)的閾值,則判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該全局數(shù)組所包括的表名和記錄的關(guān)鍵字對應(yīng)的記錄,如果存在,則將該記錄中字段變化標記所對應(yīng)元素作為該記錄的變化內(nèi)容,并發(fā)送同步消息至在線的各業(yè)務(wù)處理模塊,將所述同步標記對應(yīng)的重發(fā)次數(shù)的值加1,并重置所述同步定時器,結(jié)束本次超時同步操作;如果不存在,則清除該全局數(shù)組,結(jié)束本次超時同步操作。
進一步地,該方法進一步包括定時同步,具體為
每隔設(shè)定時間,確定主控模塊向業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容,業(yè)務(wù)處理模塊向主控模塊發(fā)送同步請求消息;
主控模塊接收到同步請求消息后,將主控模塊內(nèi)存數(shù)據(jù)庫中存在未同步成功的變化內(nèi)容的動態(tài)表回復(fù)至業(yè)務(wù)處理模塊。
進一步地,所述定時同步進一步包括
預(yù)先設(shè)置包括變量模塊號、動態(tài)數(shù)據(jù)版本號和同步標記的局部數(shù)組;所述同步定時器超時,主控模塊的更新進程遍歷全局數(shù)據(jù)區(qū),確定全局數(shù)據(jù)區(qū)中全局數(shù)組中存在值為FALSE的同步標記后,該方法進一步包括
確定所述同步標記對應(yīng)的重發(fā)次數(shù)的值等于預(yù)先設(shè)定的重發(fā)次數(shù)的閾值,判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該全局數(shù)組所包括的表名和記錄的關(guān)鍵字對應(yīng)的記錄,如果存在,則將所述全局數(shù)組的表名對應(yīng)的動態(tài)表打上失步標記,形成打上失步標記的動態(tài)表,將同步標記和重發(fā)次數(shù)所對應(yīng)的模塊號、同步標記的值、和主控模塊的動態(tài)數(shù)據(jù)版本號加1后的值賦值給所設(shè)置的局部數(shù)組的相應(yīng)變量,將得到的局部數(shù)組存儲在全局數(shù)據(jù)區(qū),并清除該全局數(shù)組;如果不存在,則清除該全局數(shù)組。
進一步地,所述確定主控模塊向業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容包括
a、業(yè)務(wù)處理模塊發(fā)送攜帶本業(yè)務(wù)處理模塊的模塊號和動態(tài)數(shù)據(jù)版本號的通知消息給主控模塊的更新進程;b、 主動模塊更新進程接收到所述通知消息后,比較包含通知消息所攜帶模塊號的局部數(shù)組中的動態(tài)數(shù)據(jù)版本號與通知消息所攜帶動態(tài)數(shù)據(jù)版本號是否相
同,如果相同,將該局部數(shù)組中同步標記的值置為TRUE,并查詢是否存在所包含同步標記為FALSE的局部數(shù)組,如果不存在,清除動態(tài)表上的失步標記,結(jié)束本次對所述業(yè)務(wù)處理模塊的定時同步流程;如果存在執(zhí)行步驟c;如果不相同,不改變該局部數(shù)組中同步標記的值,執(zhí)行步驟c;
c、 發(fā)送應(yīng)答通知消息至業(yè)務(wù)處理模塊,該應(yīng)答通知消息中攜帶包含該業(yè)務(wù)處理模塊的模塊號的局部數(shù)組中的動態(tài)數(shù)據(jù)版本號;
d、 業(yè)務(wù)處理模塊比較接收到的應(yīng)答通知消息所攜帶的動態(tài)數(shù)據(jù)版本號與自身的動態(tài)數(shù)據(jù)版本號是否一致,如果不一致,則將預(yù)先設(shè)置的同步變量的值置為FALSE,并將自身的動態(tài)數(shù)據(jù)版本號更新為應(yīng)答通知消息所攜帶的動態(tài)數(shù)據(jù)版本號,認為主控模塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容;如果一致,則同步變量的值為FALSE時,認為主控模塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容,同步變量的值為TRUE時,認為主控模塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中不存在還未同步成功的變化內(nèi)容。
進一步地,所述將主控模塊內(nèi)存數(shù)據(jù)庫中存在未同步成功的變化內(nèi)容的動態(tài)表回復(fù)至業(yè)務(wù)處理模塊包括
業(yè)務(wù)處理模塊向主控4莫塊的更新進程發(fā)送同步請求消息;主控模塊的更新進程接收到該同步請求消息后,將打上失步標記的動態(tài)表發(fā)送給業(yè)務(wù)處理模塊;業(yè)務(wù)處理模塊接收所述動態(tài)表,由所接收到的動態(tài)表替換本業(yè)務(wù)處理模塊內(nèi)存數(shù)據(jù)庫中相應(yīng)的動態(tài)表,并將同步變量的值置為TRUE,向主控模塊的更新進程發(fā)送同步成功消息。
進一步地,主控^^莫塊重啟時,該方法進一步包括靜態(tài)凄t據(jù)同步,具體為
業(yè)務(wù)處理模塊纟企測到主控模塊重啟后,向主控模塊發(fā)送靜態(tài)數(shù)據(jù)同步請求消息;
主控模塊接收到靜態(tài)數(shù)據(jù)同步請求消息后,向業(yè)務(wù)處理模塊發(fā)送攜帶主控模塊靜態(tài)數(shù)據(jù)版本號的靜態(tài)數(shù)據(jù)同步應(yīng)答消息;
業(yè)務(wù)處理模塊接收到靜態(tài)數(shù)據(jù)同步應(yīng)答消息后,比較本業(yè)務(wù)處理模塊的靜態(tài)數(shù)據(jù)版本號和靜態(tài)數(shù)據(jù)同步應(yīng)答消息攜帶的靜態(tài)數(shù)據(jù)版本號是否一致,如果一致,結(jié)束本次靜態(tài)同步流程;如果不一致,則將靜態(tài)數(shù)據(jù)同步至各業(yè)務(wù)處理模塊。
本發(fā)明還提供一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的系統(tǒng),該系統(tǒng)包括
主控模塊,用于才艮據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新自身內(nèi)存數(shù)據(jù)庫中動態(tài)表的記錄;并用于發(fā)送同步消息;
業(yè)務(wù)處理模塊,用于根據(jù)接收到的同步消息中所攜帶的操作類型,更新同步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主控模塊應(yīng)答同步消息。
進一步地,所述主控模塊包括業(yè)務(wù)進程單元和更新進程單元;其中,
業(yè)務(wù)進程單元,用于根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)對動態(tài)表中的記錄進行刪除、插入或修改,更新動態(tài)表中的記錄;并用于發(fā)送攜帶該動態(tài)表的表名、記錄號、該記錄的關(guān)鍵字、對該記錄所進行操作的操作類型和該記錄的字段變化標記的更新請求消息至更新進程;
更新進程單元,用于確定接收到的更新請求消息所攜帶操作類型是插入、修改還是刪除,為插入或修改時,確定主控模塊的內(nèi)存數(shù)據(jù)庫中存在接收到的更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記錄,并將該記錄中字段變化標記所對應(yīng)元素作為該記錄的變化內(nèi)容,并發(fā)送攜帶所述表名、記錄號、操作類型、字段變化標記和變化內(nèi)容的同步消息至在線的業(yè)務(wù)處理模塊;為刪除時,發(fā)送同步消息至在線的業(yè)務(wù)處理模塊。
本發(fā)明所提供的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法及系統(tǒng),系統(tǒng)運行導(dǎo)致動態(tài)數(shù)據(jù)發(fā)生變化后,即更新動態(tài)表中的記錄,并發(fā)起動態(tài)數(shù)據(jù)同步,從而提高了同步的實時性,且僅同步變化內(nèi)容,降低了所需同步的數(shù)據(jù)量。本發(fā)明還具有以下的優(yōu)點和特點
1)主控模塊通過預(yù)先分配的全局數(shù)據(jù)區(qū),存儲變化內(nèi)容所屬記錄的相關(guān)信息、以及各業(yè)務(wù)處理模塊對該變化內(nèi)容的同步狀態(tài),并定時遍歷全局數(shù)據(jù)區(qū),對同步失敗的變化內(nèi)容重新發(fā)起動態(tài)數(shù)據(jù)同步,以提高將變化內(nèi)容成功同步至業(yè)務(wù)處理模塊的概率,避免發(fā)生主控模塊及各業(yè)務(wù)處理模塊間動態(tài)數(shù)據(jù)不一致
狀況;
2)主控模塊的更新進程接收到更新請求消息后,判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記錄,如果不存在,結(jié)束本次同步,這樣,避免了對接收到更新請求消息前已刪除的包含變化內(nèi)容的記錄進行同步;
3 )將全局數(shù)組設(shè)置為結(jié)構(gòu)體數(shù)組,使得主控模塊僅需分配一個全局數(shù)據(jù)區(qū)即可對應(yīng)存儲各業(yè)務(wù)處理模塊的同步狀態(tài),且在線的各業(yè)務(wù)處理模塊均成功同步某個全局數(shù)組對應(yīng)的變化內(nèi)容時、或重發(fā)次數(shù)的值等于預(yù)先設(shè)定的重發(fā)次數(shù)的閾值時,即清除該全局數(shù)組,使得不需要將較大的內(nèi)存空間用作全局數(shù)據(jù)區(qū),大大減少了動態(tài)凄t據(jù)同步所需占用的內(nèi)存空間;
4) 每隔設(shè)定時間,確定主控模塊向業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容,進行定時同步操作,進一步確保主控模塊及各業(yè)務(wù)處理模塊間動態(tài)數(shù)據(jù)一致;
5) 主控模塊重啟時,執(zhí)行靜態(tài)數(shù)據(jù)同步搡作,使得如果在主控模塊重啟過程中更改了靜態(tài)數(shù)據(jù),可以及時將更改后的靜態(tài)數(shù)據(jù)同步至各業(yè)務(wù)處理模塊,確保主控模塊和各業(yè)務(wù)處理模塊的靜態(tài)數(shù)據(jù)一致。
圖1為IPTV系統(tǒng)中后臺、主控才莫塊、業(yè)務(wù)處理模塊的拓樸關(guān)系示意圖;圖2為釆用本發(fā)明IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法實現(xiàn)動態(tài)數(shù)據(jù)同步的流程示意圖。
具體實施例方式
本發(fā)明的基本思想是系統(tǒng)運行導(dǎo)致動態(tài)數(shù)據(jù)發(fā)生變化后,即根據(jù)變化后的動態(tài)數(shù)據(jù),對主控模塊內(nèi)存數(shù)據(jù)庫的動態(tài)表進行刪除、插入或修改記錄的操
作,更新動態(tài)表中的記錄,并發(fā)起動態(tài)數(shù)據(jù)同步,提高了同步的實時性;且僅同步變化內(nèi)容,與同步變化內(nèi)容所屬的記錄相比降低了所需同步的數(shù)據(jù)量;其中,所述動態(tài)表用于存儲動態(tài)數(shù)據(jù);所述變化內(nèi)容是指記錄中更新了的元素。
本發(fā)明的實現(xiàn)系統(tǒng)為IPTV系統(tǒng),包括后臺、主控模塊、業(yè)務(wù)處理模塊,其中,主控模塊包括業(yè)務(wù)進程、更新進程。
采用本發(fā)明IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法實現(xiàn)動態(tài)數(shù)據(jù)同步的流程如圖2所示,包括以下步驟
步驟201:系統(tǒng)運行導(dǎo)致動態(tài)數(shù)據(jù)發(fā)生變化后,主控^=莫塊根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新自身內(nèi)存數(shù)據(jù)庫中動態(tài)表中的記錄,并發(fā)送同步消息至業(yè)務(wù)處理模塊;本發(fā)明實施例所述系統(tǒng)均為IPTV系統(tǒng)。
其中,更新動態(tài)表中的記錄,發(fā)送同步消息至業(yè)務(wù)處理模塊具體為
系統(tǒng)運行導(dǎo)致動態(tài)數(shù)據(jù)發(fā)生變化后,主控模塊的業(yè)務(wù)進程根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)對動態(tài)表中的記錄進行刪除、插入或修改,更新動態(tài)表中的記錄,并發(fā)送攜帶所述動態(tài)表的表名、記錄號、所述記錄的關(guān)^:字、對所述記錄進行操作的操作類型和所述記錄的字段變化標記的更新請求消息至主控模塊的更新進
程;
其中,所述操作類型包括刪除、插入或修改三類;所述字段變化標記用于指示記錄中更新了的元素所在的字段;操作類型為刪除時,所述字段變化標記為空;
主控模塊的更新進程確定收到的更新請求消息所攜帶操作類型是插入、修改還是刪除,如果是插入或修改,則主控模塊的更新進程判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在收到的更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記
錄,如果存在,則將該記錄中字^a變化標記所對應(yīng)元素作為該記錄的變化內(nèi)容,并發(fā)送攜帶所述表名、記錄號、操作類型、字段變化標記和變化內(nèi)容的同步消
息至在線的業(yè)務(wù)處理模塊;如果不存在,則結(jié)束本次同步流程;如果是刪除,主控模塊的更新進程發(fā)送同步消息至在線的業(yè)務(wù)處理模塊,該同步消息攜帶接收到的更新請求消息所攜帶的表名、記錄號、操作類型。
這里,搡作類型為插入或修改時,主控模塊的更新進程接收到更新請求消息后,判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記錄,如果不存在,結(jié)束本次同步,這樣,當在主控模塊更新動態(tài)表中的記錄的同時,系統(tǒng)運行導(dǎo)致刪除了該記錄內(nèi)的動態(tài)數(shù)據(jù),即,主控模塊即時便會對該記錄進行刪除操作,并即發(fā)起下次同步,刪除各業(yè)務(wù)處理模塊內(nèi)存數(shù)據(jù)庫中的相應(yīng)記錄時,即可省略本次同步中,將變化內(nèi)容同步至各
業(yè)務(wù)處理模塊的流程;而操作類型為刪除時,同步消息僅攜帶表名、記錄號、操作類型,可減少主控模塊和業(yè)務(wù)處理模塊間動態(tài)數(shù)據(jù)同步所需傳輸?shù)臄?shù)據(jù)量。
步驟202:收到同步消息的業(yè)務(wù)處理模塊,#4居同步消息中所攜帶的操作類型、或同步消息所攜帶操作類型、字段變化標記和變化內(nèi)容,更新同步消息攜帶的表名和記錄號所對應(yīng)自身內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主控模塊應(yīng)答同步消息,結(jié)束本次同步流程。
其中,如果同步消息所攜帶操作類型為刪除,業(yè)務(wù)處理模塊刪除同步消息攜帶的表名和記錄號所對應(yīng)本業(yè)務(wù)處理^f莫塊內(nèi)存數(shù)據(jù)庫中的記錄;如果同步消息所攜帶操作類型為插入,業(yè)務(wù)處理模塊根據(jù)同步消息攜帶的字段變化標記,將同步消息攜帶的記錄號和變化內(nèi)容插入同步消息所攜帶表名所對應(yīng)的本業(yè)務(wù)處理模塊內(nèi)存數(shù)據(jù)庫中的動態(tài)表;如果同步消息所攜帶操作類型為修改,業(yè)務(wù)處理模塊確定同步消息攜帶的表名、記錄號和字段變化標記所對應(yīng)本業(yè)務(wù)處理模塊內(nèi)存數(shù)據(jù)庫中的元素,由同步消息攜帶的變化內(nèi)容覆蓋所確定的元素。
本發(fā)明實施例還可包括超時同步操作,具體步驟如下
步驟A1、將變化內(nèi)容所屬記錄的相關(guān)信息、以及各業(yè)務(wù)處理;f莫塊對該變化內(nèi)容的同步狀態(tài)存儲至所述全局數(shù)據(jù)區(qū);具體為
設(shè)置全局數(shù)組;所述全局數(shù)組為結(jié)構(gòu)體數(shù)組,所包括的成員為表名、記錄的關(guān)鍵字、操作類型、字段變化標記、變化的記錄內(nèi)容、由模塊號組成的數(shù)組和由模塊號、同步標記和重發(fā)次數(shù)的對應(yīng)關(guān)系組成的數(shù)組;
其中,表名、記錄的關(guān)鍵字、操作類型、字段變化標記、變化的記錄內(nèi)容對應(yīng)變化內(nèi)容所屬記錄的相關(guān)信息;由^f莫塊號組成的數(shù)組對應(yīng)在線的各業(yè)務(wù)處 理模塊;同步標記和重發(fā)次數(shù)的對應(yīng)關(guān)系組成的數(shù)組對應(yīng)各業(yè)務(wù)處理模塊對該 變化內(nèi)容的同步狀態(tài);
這里,將全局數(shù)組定義為結(jié)構(gòu)體數(shù)組,使得一個全局數(shù)組即可包含所述變 化內(nèi)容所屬記錄的相關(guān)信息、以及在線的各業(yè)務(wù)處理模塊對該變化內(nèi)容的同步 狀態(tài),這樣,主控模塊僅需分配一個全局數(shù)據(jù)區(qū)即可對應(yīng)各業(yè)務(wù)處理模塊的同 步狀態(tài)。
相應(yīng)的,主控模塊的內(nèi)存數(shù)據(jù)庫中存在接收到的更新請求消息所攜帶表名 和記錄的關(guān)鍵字對應(yīng)的記錄時,主控模塊的更新進程根據(jù)所確定的記錄、所述 更新請求消息攜帶的表名、記錄的關(guān)鍵字、操作類型、字段變化標記、以及在 線的業(yè)務(wù)處理模塊的模塊號為所設(shè)置的全局數(shù)組中的相應(yīng)成員賦值,并并分別 設(shè)置所述同步標記、重發(fā)次數(shù)的初始值,得到所確定的記錄對應(yīng)的全局數(shù)組, 并存儲在所述全局數(shù)據(jù)區(qū);這里,所述同步標記的初始值設(shè)置為FALSE,所述 重發(fā)次數(shù)的初始值設(shè)置為0;
所述回復(fù)主控模塊應(yīng)答消息后,主控模塊的更新進程查詢?nèi)謹?shù)據(jù)區(qū)中下 標與接收到的應(yīng)答消息所攜帶數(shù)組下標一致的全局數(shù)組,將該全局數(shù)組中接收 到的應(yīng)答消息所攜帶;f莫塊號對應(yīng)的同步標記的值改為TRUE;確定該全局數(shù)組 中所有同步標記的值均為TRUE,清除該全局數(shù)組;
這里,確定該全局數(shù)組中所有同步標記的值均為TRUE,清除該全局數(shù)組, 即,在線的各業(yè)務(wù)處理模塊均成功同步某個全局數(shù)組對應(yīng)的變化內(nèi)容時,即清 除該全局數(shù)組,及時釋放所占用全局數(shù)據(jù)區(qū)的內(nèi)存空間,使得全局數(shù)據(jù)區(qū)所需 存儲的全局數(shù)組的數(shù)量不多,因此,不需要將較大的內(nèi)存空間用作全局數(shù)據(jù)區(qū), 一般只需幾百K的內(nèi)存空間,大大減少了動態(tài)數(shù)據(jù)同步所需占用的內(nèi)存空間。
步驟B1、定時遍歷全局數(shù)據(jù)區(qū),如果存在為失敗的業(yè)務(wù)處理模塊對變化內(nèi) 容的同步狀態(tài),則重新同步該變化內(nèi)容至該業(yè)務(wù)處理模塊;具體為
主控模塊上沒有同步定時器,則發(fā)送同步消息至業(yè)務(wù)處理模塊時,設(shè)置同 步定時器;相應(yīng)的,同步定時器超時時,該方法進一步包括
步驟al、主控模塊的更新進程遍歷全局數(shù)據(jù)區(qū),確定全局數(shù)據(jù)區(qū)中全局數(shù) 組中是否存在值為FALSE的同步標記,如果不存在,執(zhí)行步驟bl;如果存在, 執(zhí)行步驟cl;
步驟bl、清除該全局數(shù)組,結(jié)束本次超時同步操作;
步驟cl、確定所述同步標記對應(yīng)的重發(fā)次數(shù)的值小于預(yù)先設(shè)定的重發(fā)次數(shù) 的閾值,則判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該全局數(shù)組所包括的表名和 記錄的關(guān)4建字對應(yīng)的記錄,如果存在,則將該記錄中字4史變化標記所對應(yīng)元素 作為該記錄的變化內(nèi)容,并發(fā)送同步消息至在線的各業(yè)務(wù)處理模塊,將所述同 步標記對應(yīng)的重發(fā)次數(shù)的值加1,并重置所述同步定時器,結(jié)束本次超時同步 操作;如果不存在,則清除該全局數(shù)組,結(jié)束本次超時同步操作;
其中,所述同步消息攜帶該全局數(shù)組所包括的表名、操作類型、字段變化 標記、所確定記錄的記錄號、以及所述變化內(nèi)容。
這里,主控^i塊上沒有同步定時器時,發(fā)送同步消息至業(yè)務(wù)處理模塊時, 才設(shè)置同步定時器,且設(shè)置同步定時器后,當同步定時器超時后,如果全局數(shù) 據(jù)區(qū)中全局數(shù)組中不存在值為FALSE的同步標記,即,全局數(shù)據(jù)區(qū)沒有全局數(shù) 組,或全局數(shù)據(jù)區(qū)的全局數(shù)組均可清除時,不重設(shè)定時器,直到主控模塊再次 發(fā)送同步消息至業(yè)務(wù)處理模塊時,才重設(shè)同步定時器;如果全局數(shù)據(jù)區(qū)中全局 數(shù)組中存在值為FALSE的同步標記,重設(shè)同步定時器。
本發(fā)明實施例還可包括定時同步才喿作,具體步驟如下
步驟A2、預(yù)先設(shè)置包括變量模塊號、動態(tài)數(shù)據(jù)版本號和同步標記的局部數(shù)
組;
步驟B2、所述同步定時器超時,主控模塊的更新進程遍歷全局數(shù)據(jù)區(qū),確 定全局數(shù)據(jù)區(qū)中全局數(shù)組中存在值為FALSE的同步標記后,進一步包括
確定所述同步標記對應(yīng)的重發(fā)次數(shù)的值等于預(yù)先設(shè)定的重發(fā)次數(shù)的閾值, 則判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該全局數(shù)組所包括的表名和記錄的關(guān) 鍵字對應(yīng)的記錄,如果存在,則將所述全局數(shù)組的表名對應(yīng)的動態(tài)表打上失步標記,形成打上失步標記的動態(tài)表,該打上失步標記的動態(tài)表即為存在未同步 成功的變化內(nèi)容的動態(tài)表,將同步標記和重發(fā)次數(shù)所對應(yīng)的模塊號、同步標記 的值、和主控模塊的動態(tài)數(shù)據(jù)版本號加1后的值賦值給所設(shè)置的局部數(shù)組的相
應(yīng)變量,將得到的局部數(shù)組存儲在全局數(shù)據(jù)區(qū),并清除該全局數(shù)組;如果不存 在,則清除該全局數(shù)組。
這里,所述預(yù)先設(shè)定的重發(fā)次數(shù)的閾值為3;重發(fā)次數(shù)的值等于預(yù)先設(shè)定 的重發(fā)次數(shù)的閾值時,即清除該全局數(shù)組,及時釋放所占用全局數(shù)據(jù)區(qū)的內(nèi)存 空間,使得不需要將較大的內(nèi)存空間用作全局數(shù)據(jù)區(qū)。
步驟C2、每隔設(shè)定時間,確定主控模塊向業(yè)務(wù)處理模塊同步的變化內(nèi)容中 存在還未同步成功的變化內(nèi)容,業(yè)務(wù)處理模塊向主控模塊發(fā)送同步請求消息;
其中,所述設(shè)定時間為20秒,本發(fā)明通過超時同步操作,基本可以保證將 變化內(nèi)容成功同步至各業(yè)務(wù)處理模塊,定時同步操作發(fā)生的概率極小,如果發(fā) 生,會將響應(yīng)用戶請求的時間延遲設(shè)定時間20秒, 一般認為用戶可以接受及偶 爾發(fā)生響應(yīng)用戶請求的時間延遲20秒的事件,因此,認為設(shè)定時間為20秒時, 不影響動態(tài)數(shù)據(jù)的實時同步。
步驟D2、主控模塊接收到同步請求消息后,將主控模塊內(nèi)存數(shù)據(jù)庫中存在 未同步成功的變化內(nèi)容的動態(tài)表回復(fù)至業(yè)務(wù)處理模塊。
a2、業(yè)務(wù)處理才莫塊發(fā)送攜帶本業(yè)務(wù)處理模塊的模塊號和動態(tài)數(shù)據(jù)版本號的 通知消息給主控模塊的更新進程;
b2、主動模塊更新進程接收到所述通知消息后,比較包含通知消息所攜帶 模塊號的局部數(shù)組中的動態(tài)數(shù)據(jù)版本號與通知消息所攜帶動態(tài)數(shù)據(jù)版本號是否 相同,如果相同,將該局部數(shù)組中同步標記的值置為TRUE,并查詢是否存在 所包含同步標記為FALSE的局部數(shù)組,如果不存在,清除動態(tài)表上的失步標記, 結(jié)束本次對所述業(yè)務(wù)處理模塊的定時同步流程;如果存在執(zhí)行步驟c2;如果不 相同,不改變該局部數(shù)組中同步標記的值,執(zhí)行步驟c2;
c2、發(fā)送應(yīng)答通知消息至業(yè)務(wù)處理模塊,該應(yīng)答通知消息中攜帶包含該業(yè) 務(wù)處理模塊的模塊號的局部數(shù)組中的動態(tài)數(shù)據(jù)版本號;d2、業(yè)務(wù)處理模塊比較接收到的應(yīng)答通知消息所攜帶的動態(tài)數(shù)據(jù)版本號與 自身的動態(tài)數(shù)據(jù)版本號是否一致,如果不一致,則將預(yù)先設(shè)置的同步變量的值 置為FALSE,并將自身的動態(tài)數(shù)據(jù)版本號更新為應(yīng)答通知消息所攜帶的動態(tài)數(shù) 據(jù)版本號,認為主控模塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成 功的變化內(nèi)容,執(zhí)行步驟e2;如果一致,則同步變量的值為FALSE時,認為 主控模塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容, 執(zhí)行步驟e2;同步變量的值為TRUE時,認為主控模塊向該業(yè)務(wù)處理模塊同步 的變化內(nèi)容中不存在還未同步成功的變化內(nèi)容,結(jié)束本次定時同步操作。
步驟e2、業(yè)務(wù)處理模塊向主控模塊的更新進程發(fā)送同步請求消息;主控模 塊的更新進程接收到該同步請求消息后,將打上失步標記的動態(tài)表發(fā)送給業(yè)務(wù) 處理模塊;業(yè)務(wù)處理模塊接收所述動態(tài)表,由所接收到的動態(tài)表替換本業(yè)務(wù)處 理模塊內(nèi)存數(shù)據(jù)庫中相應(yīng)的動態(tài)表,并將同步變量的值置為TRUE,向主控模 塊的更新進程發(fā)送同步成功消息,結(jié)束本次定時同步揭:作。
主控模塊重啟時,本發(fā)明實施例還可包括靜態(tài)數(shù)據(jù)同步操作,具體步驟如
下
步驟A3、業(yè)務(wù)處理模塊檢測到主控模塊重啟完畢后,向主控一莫塊發(fā)送靜態(tài) 數(shù)據(jù)同步請求消息;
步驟B3、主控模塊接收到靜態(tài)數(shù)據(jù)同步請求消息后,向業(yè)務(wù)處理模塊發(fā)送 攜帶主控模塊靜態(tài)數(shù)據(jù)版本號的靜態(tài)數(shù)據(jù)同步應(yīng)答消息;
步驟C3、業(yè)務(wù)處理模塊接收到靜態(tài)數(shù)據(jù)同步應(yīng)答消息后,比較本業(yè)務(wù)處理 模塊的靜態(tài)數(shù)據(jù)版本號和靜態(tài)數(shù)據(jù)同步應(yīng)答消息攜帶的靜態(tài)數(shù)據(jù)版本號是否一 致,如果一致,結(jié)束本次靜態(tài)同步流程;如果不一致,執(zhí)行步驟D。
步驟D3、將靜態(tài)數(shù)據(jù)同步至各業(yè)務(wù)處理模塊,具體為
a3、業(yè)務(wù)處理模塊向主控模塊發(fā)送獲取數(shù)據(jù)配置消息;
這里,還可以設(shè)置配置信息失敗定時器和超時重發(fā)定時器,配置信息失敗 定時器的定時時長大于超時重發(fā)定時器;如果超時重發(fā)定時器超時時,仍未收 到配置應(yīng)答消息,則重發(fā)獲取數(shù)據(jù)配置消息;如果配置信息失敗定時器超時時,仍未收到配置應(yīng)答消息,則認為主控模塊未啟動或者與主控;漠塊通訊異常,結(jié) 束本次靜態(tài)數(shù)椐同步操作。
b3、主控模塊接收到獲取數(shù)據(jù)配置消息后,回復(fù)業(yè)務(wù)處理模塊攜帶主控模 塊的靜態(tài)數(shù)據(jù)版本號的配置應(yīng)答消息。
c3、業(yè)務(wù)處理模塊接收到配置應(yīng)答消息后,根據(jù)配置應(yīng)答消息攜帶的靜態(tài) 數(shù)據(jù)版本號,更新該業(yè)務(wù)處理^f莫塊的靜態(tài)數(shù)據(jù)版本號,并回復(fù)主控模塊攜帶該 業(yè)務(wù)模塊要同步的表名的數(shù)據(jù)同步請求消息。
d3、主控模塊接收到數(shù)據(jù)同步請求消息后,將數(shù)據(jù)同步請求消息攜帶的表 名所對應(yīng)的靜態(tài)表發(fā)送給業(yè)務(wù)處理模塊。
e3、業(yè)務(wù)處理模塊將接收到的所述靜態(tài)表加載到該業(yè)務(wù)處理模塊的內(nèi)存數(shù) 據(jù)庫中,并回復(fù)主控模塊數(shù)據(jù)同步成功消息,結(jié)束本次靜態(tài)數(shù)據(jù)同步操作。
為實現(xiàn)上述方案,本發(fā)明實施例IPTV系統(tǒng)模塊間數(shù)據(jù)同步的系統(tǒng)的結(jié)構(gòu) 包括
主控模塊,用于根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新自身內(nèi)存數(shù)據(jù)庫中動態(tài)表的 記錄;并用于發(fā)送同步消息至業(yè)務(wù)處理模塊;
業(yè)務(wù)處理模塊,用于根據(jù)接收到的同步消息中所攜帶的操作類型,更新同 步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主控 模塊應(yīng)答同步消息。
其中,所述主控模塊包括業(yè)務(wù)進程單元和更新進程單元;其中,
業(yè)務(wù)進程單元,用于根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)對動態(tài)表中的記錄進行刪除、 插入或^f'務(wù)改,更新動態(tài)表中的記錄;并用于發(fā)送攜帶該動態(tài)表的表名、記錄號、 該記錄的關(guān)44字、對該記錄所進行操作的操作類型和該記錄的字段變化標記的 更新請求消息至更新進,呈;
更新進程單元,用于確定接收到的更新請求消息所攜帶操作類型是插入、 修改還是刪除,為插入或修改時,確定主控模塊的內(nèi)存數(shù)據(jù)庫中存在接收到的 更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記錄,并將該記錄中字段變化 標記所對應(yīng)元素作為該記錄的變化內(nèi)容,并發(fā)送攜帶所述表名、記錄號、操作類型、字段變化標記和變化內(nèi)容的同步消息至在線的業(yè)務(wù)處理;f莫塊;為刪除時, 發(fā)送同步消息至在線的業(yè)務(wù)處理模塊。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范
閣
權(quán)利要求
1、一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于,該方法包括主控模塊根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新自身內(nèi)存數(shù)據(jù)庫中動態(tài)表的記錄,并發(fā)送同步消息;收到同步消息的業(yè)務(wù)處理模塊,根據(jù)同步消息中所攜帶的操作類型,更新同步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主控模塊應(yīng)答同步消息。
2、 根據(jù)權(quán)利要求1所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 所述同步消息中還攜帶有字段變化標記和變化內(nèi)容;所述更新為業(yè)務(wù)處理模塊根據(jù)同步消息中所攜帶的操作類型、字段變化 標記和變化內(nèi)容,更新同步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù) 庫中的記錄。
3、 根據(jù)權(quán)利要求1或2所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征 在于,所述主控模塊更新動態(tài)表中的記錄并發(fā)送同步消息具體為動態(tài)數(shù)據(jù)發(fā)生變化后,主控模塊的業(yè)務(wù)進程根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)對動 態(tài)表中的記錄進行刪除、插入或修改,更新動態(tài)表中的記錄,并發(fā)送攜帶所述 動態(tài)表的表名、記錄號、所述記錄的關(guān)^fe字、對所述記錄進行操作的操作類型 和所述記錄的字段變化標記的更新請求消息至主控模塊的更新進程;主控模塊的更新進程確定收到的更新請求消息所攜帶操作類型是插入、修 改還是刪除,如果是插入或修改,則主控模塊的更新進程判斷主控模塊的內(nèi)存 數(shù)據(jù)庫中是否存在收到的更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記 錄,如果存在,則將該記錄中字段變化標記所對應(yīng)元素作為該記錄的變化內(nèi)容, 并發(fā)送攜帶所述表名、記錄號、操作類型、字段變化標記和變化內(nèi)容的同步消 息至在線的業(yè)務(wù)處理才莫塊;如果不存在,則結(jié)束本次同步流程;如果是刪除, 主控模塊的更新進程發(fā)送同步消息至在線的業(yè)務(wù)處理才莫塊。
4、 根據(jù)權(quán)利要求3所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 該方法進一步包括主控才莫塊預(yù)先分配全局數(shù)據(jù)區(qū);將變化內(nèi)容所屬記錄的相關(guān)信息、以及各業(yè)務(wù)處理模塊對該變化內(nèi)容的同步狀態(tài)存儲至所述全局數(shù)據(jù)區(qū);定時遍歷全局數(shù)據(jù)區(qū),如果存在為失敗的業(yè)務(wù) 處理模塊對變化內(nèi)容的同步狀態(tài),則重新同步該變化內(nèi)容至該業(yè)務(wù)處理模塊。
5、 根據(jù)權(quán)利要求4所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 所述存儲變化內(nèi)容所屬記錄的相關(guān)信息、以及各業(yè)務(wù)處理^f莫塊對該變化內(nèi)容的 同步狀態(tài)包括設(shè)置全局數(shù)組,所述全局數(shù)組包括表名、記錄的關(guān)鍵字、操作類型、字 段變化標記、變化的記錄內(nèi)容、由模塊號組成的數(shù)組和由模塊號、同步標記和 重發(fā)次數(shù)的對應(yīng)關(guān)系;相應(yīng)的,主控模塊的內(nèi)存數(shù)據(jù)庫中存在接收到的更新請求消息所攜帶表名 和記錄的關(guān)4建字對應(yīng)的記錄時,該方法進一步包括主控模塊的更新進程根據(jù)所確定的記錄、所述更新請求消息攜帶的表名、 記錄的關(guān)鍵字、操作類型、字段變化標記、以及在線的業(yè)務(wù)處理模塊的模塊號 為所設(shè)置的全局數(shù)組中的相應(yīng)成員賦值,并分別設(shè)置所述同步標記、重發(fā)次數(shù) 的初始值,得到所確定的記錄對應(yīng)的全局數(shù)組,并存儲在所述全局數(shù)據(jù)區(qū);回復(fù)主控模塊應(yīng)答消息后,該方法進一步包括主控模塊的更新進程查詢?nèi)謹?shù)據(jù)區(qū)中下標與接收到的應(yīng)答消息所攜帶數(shù) 組下標一致的全局數(shù)組,將所述全局數(shù)組中接收到的應(yīng)答消息所攜帶模塊號對 應(yīng)的同步標記的值改為TRUE;確定所述全局數(shù)組中所有同步標記的值均為 TRUE時,清除所述全局數(shù)組。
6、 根據(jù)權(quán)利要求5所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 主控模塊在發(fā)送同步消息至業(yè)務(wù)處理模塊時,設(shè)置同步定時器;同步定時器超 時時,所述定時遍歷全局數(shù)據(jù)區(qū)時,如果存在的業(yè)務(wù)處理模塊對變化內(nèi)容的同 步狀態(tài)為失敗,則重新同步該變化內(nèi)容為A、主控模塊的更新進程遍歷全局數(shù)據(jù)區(qū),確定全局數(shù)據(jù)區(qū)中全局數(shù)組中 是否存在值為FALSE的同步標記,如果不存在,則清除該全局數(shù)組,結(jié)束本次 超時同步操作;如果存在,則執(zhí)行步驟B;B、確定所述同步標記對應(yīng)的重發(fā)次數(shù)的值小于預(yù)先設(shè)定的重發(fā)次數(shù)的閾 值,則判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該全局數(shù)組所包括的表名和記錄 的關(guān)鍵字對應(yīng)的記錄,如果存在,則將該記錄中字^:變化標記所對應(yīng)元素作為 該記錄的變化內(nèi)容,并發(fā)送同步消息至在線的各業(yè)務(wù)處理模塊,將所述同步標 記對應(yīng)的重發(fā)次數(shù)的值加1,并重置所述同步定時器,結(jié)束本次超時同步操作; 如果不存在,則清除該全局數(shù)組,結(jié)束本次超時同步操作。
7、 根據(jù)權(quán)利要求6所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 該方法進一步包括定時同步,具體為每隔設(shè)定時間,確定主控模塊向業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未 同步成功的變化內(nèi)容,業(yè)務(wù)處理模塊向主控模塊發(fā)送同步請求消息;主控模塊接收到同步請求消息后,將主控才莫塊內(nèi)存數(shù)據(jù)庫中存在未同步成 功的變化內(nèi)容的動態(tài)表回復(fù)至業(yè)務(wù)處理模塊。
8、 根據(jù)權(quán)利要求7所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 所述定時同步進一步包括預(yù)先設(shè)置包括變量模塊號、動態(tài)數(shù)據(jù)版本號和同步標記的局部數(shù)組;所述 同步定時器超時,主控模塊的更新進程遍歷全局數(shù)據(jù)區(qū),確定全局數(shù)據(jù)區(qū)中全 局數(shù)組中存在值為FALSE的同步標記后,該方法進一步包括確定所述同步標記對應(yīng)的重發(fā)次數(shù)的值等于預(yù)先設(shè)定的重發(fā)次數(shù)的閾值, 判斷主控模塊的內(nèi)存數(shù)據(jù)庫中是否存在該全局數(shù)組所包括的表名和記錄的關(guān)鍵 字對應(yīng)的記錄,如果存在,則將所述全局數(shù)組的表名對應(yīng)的動態(tài)表打上失步標 記,形成打上失步標記的動態(tài)表,將同步標記和重發(fā)次數(shù)所對應(yīng)的模塊號、同 步標記的值、和主控模塊的動態(tài)數(shù)據(jù)版本號加1后的值賦值給所設(shè)置的局部數(shù) 組的相應(yīng)變量,將得到的局部數(shù)組存儲在全局數(shù)據(jù)區(qū),并清除該全局數(shù)組;如 果不存在,則清除該全局數(shù)組。
9、 根據(jù)權(quán)利要求8所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于, 所述確定主控模塊向業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功的變化 內(nèi)容包括a、 業(yè)務(wù)處理模塊發(fā)送攜帶本業(yè)務(wù)處理模塊的模塊號和動態(tài)數(shù)據(jù)版本號的通 知消息給主控模塊的更新進程;b、 主動模塊更新進程接收到所述通知消息后,比較包含通知消息所攜帶模 塊號的局部數(shù)組中的動態(tài)數(shù)據(jù)版本號與通知消息所攜帶動態(tài)數(shù)據(jù)版本號是否相 同,如果相同,將該局部數(shù)組中同步標記的值置為TRUE,并查詢是否存在所 包含同步標記為FALSE的局部數(shù)組,如果不存在,清除動態(tài)表上的失步標記, 結(jié)束本次對所述業(yè)務(wù)處理模塊的定時同步流程;如果存在執(zhí)行步驟c;如果不 相同,不改變該局部數(shù)組中同步標記的值,執(zhí)行步驟c;c、 發(fā)送應(yīng)答通知消息至業(yè)務(wù)處理模塊,該應(yīng)答通知消息中攜帶包含該業(yè)務(wù) 處理模塊的模塊號的局部數(shù)組中的動態(tài)數(shù)據(jù)版本號;d、 業(yè)務(wù)處理模塊比較接收到的應(yīng)答通知消息所攜帶的動態(tài)數(shù)據(jù)版本號與自 身的動態(tài)數(shù)據(jù)版本號是否一致,如果不一致,則將預(yù)先設(shè)置的同步變量的值置 為FALSE,并將自身的動態(tài)數(shù)據(jù)版本號更新為應(yīng)答通知消息所攜帶的動態(tài)數(shù)據(jù) 版本號,認為主控i^塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中存在還未同步成功 的變化內(nèi)容;如果一致,則同步變量的值為FALSE時,認為主控模塊向該業(yè)務(wù) 處理模塊同步的變化內(nèi)容中存在還未同步成功的變化內(nèi)容,同步變量的值為 TRUE時,認為主控模塊向該業(yè)務(wù)處理模塊同步的變化內(nèi)容中不存在還未同步 成功的變化內(nèi)容。
10、 根據(jù)權(quán)利要求9所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在 于,所述將主控模塊內(nèi)存數(shù)據(jù)庫中存在未同步成功的變化內(nèi)容的動態(tài)表回復(fù)至 業(yè)務(wù)處理模塊包括業(yè)務(wù)處理模塊向主控沖莫塊的更新進程發(fā)送同步請求消息;主控模塊的更新 進程接收到該同步請求消息后,將打上失步標記的動態(tài)表發(fā)送給業(yè)務(wù)處理模塊;業(yè)務(wù)處理模塊接收所述動態(tài)表,由所接收到的動態(tài)表替換本業(yè)務(wù)處理模塊內(nèi)存 數(shù)據(jù)庫中相應(yīng)的動態(tài)表,并將同步變量的值置為TRUE,向主控模塊的更新進 程發(fā)送同步成功消息。
11、 根據(jù)權(quán)利要求1所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,其特征在于,主控模塊重啟時,該方法進一步包括靜態(tài)數(shù)據(jù)同步,具體為業(yè)務(wù)處理模塊檢測到主控模塊重啟后,向主控模塊發(fā)送靜態(tài)數(shù)據(jù)同步請求消息;主控模塊接收到靜態(tài)數(shù)據(jù)同步請求消息后,向業(yè)務(wù)處理模塊發(fā)送攜帶主控模塊靜態(tài)數(shù)據(jù)版本號的靜態(tài)數(shù)據(jù)同步應(yīng)答消息;業(yè)務(wù)處理模塊接收到靜態(tài)數(shù)據(jù)同步應(yīng)答消息后,比較本業(yè)務(wù)處理模塊的靜態(tài)數(shù)據(jù)版本號和靜態(tài)數(shù)據(jù)同步應(yīng)答消息攜帶的靜態(tài)數(shù)據(jù)版本號是否一致,如果一致,結(jié)束本次靜態(tài)同步流程;如果不一致,則將靜態(tài)數(shù)據(jù)同步至各業(yè)務(wù)處理模塊。
12、 一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的系統(tǒng),其特征在于,該系統(tǒng)包括主控模塊,用于根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新自身內(nèi)存數(shù)據(jù)庫中動態(tài)表的記錄;并用于發(fā)送同步消息;業(yè)務(wù)處理模塊,用于根據(jù)接收到的同步消息中所攜帶的操作類型,更新同步消息中攜帶的表名和記錄號所對應(yīng)的自身內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主控模塊應(yīng)答同步消息。
13、 根據(jù)權(quán)利要求12所述的IPTV系統(tǒng)模塊間數(shù)據(jù)同步的系統(tǒng),其特征在于,所述主控模塊包括業(yè)務(wù)進程單元和更新進程單元;其中,業(yè)務(wù)進程單元,用于根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)對動態(tài)表中的記錄進行刪除、插入或修改,更新動態(tài)表中的記錄;并用于發(fā)送攜帶該動態(tài)表的表名、記錄號、該記錄的關(guān)鍵字、對該記錄所進行操作的操作類型和該記錄的字段變化標記的更新請求消息至更新進程;更新進程單元,用于確定接收到的更新請求消息所攜帶操作類型是插入、修改還是刪除,為插入或修改時,確定主控模塊的內(nèi)存數(shù)據(jù)庫中存在接收到的更新請求消息所攜帶表名和記錄的關(guān)鍵字對應(yīng)的記錄,并將該記錄中字段變化標記所對應(yīng)元素作為該記錄的變化內(nèi)容,并發(fā)送攜帶所述表名、記錄號、操作類型、字段變化標記和變化內(nèi)容的同步消息至在線的業(yè)務(wù)處理模塊;為刪除時,發(fā)送同步消息至在線的業(yè)務(wù)處理模塊。
全文摘要
本發(fā)明公開了一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的方法,該方法包括主控模塊根據(jù)發(fā)生變化的動態(tài)數(shù)據(jù)更新動態(tài)表中的記錄;發(fā)送同步消息至業(yè)務(wù)處理模塊;業(yè)務(wù)處理模塊接收到同步消息后,根據(jù)同步消息所攜帶操作類型、或同步消息所攜帶操作類型、字段變化標記和變化內(nèi)容,更新同步消息攜帶的表名和記錄號所對應(yīng)本業(yè)務(wù)處理模塊內(nèi)存數(shù)據(jù)庫中的記錄,并回復(fù)主控模塊應(yīng)答同步消息。本發(fā)明還公開一種IPTV系統(tǒng)模塊間數(shù)據(jù)同步的系統(tǒng),包括主控模塊和業(yè)務(wù)處理模塊。采用本發(fā)明所述的方法和系統(tǒng),能夠提高同步的實時性,并降低所需同步的數(shù)據(jù)量。
文檔編號G06F17/30GK101526958SQ200910081760
公開日2009年9月9日 申請日期2009年4月9日 優(yōu)先權(quán)日2009年4月9日
發(fā)明者毅 丁, 朱紅軍, 雷愛民 申請人:中興通訊股份有限公司