,基于該同步消息生成對(duì)應(yīng)的消息操作命令和該消息操作命令的命令標(biāo)識(shí),并保存到命令執(zhí)行文件,應(yīng)用節(jié)點(diǎn)獲取命令執(zhí)行文件中最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí),并判斷獲取的命令標(biāo)識(shí)與本地緩存的命令標(biāo)識(shí)是否不相同,確定不相同時(shí),獲取該最新的消息操作命令,基于該最新的消息操作命令對(duì)應(yīng)用節(jié)點(diǎn)的內(nèi)存進(jìn)行數(shù)據(jù)處理。這樣,應(yīng)用節(jié)點(diǎn)主動(dòng)獲取消息操作命令,不需要同步控制節(jié)點(diǎn)主動(dòng)推送到應(yīng)用節(jié)點(diǎn),保證了應(yīng)用的消息同步一致性,降低了同步控制節(jié)點(diǎn)的負(fù)載,提高了同步控制節(jié)點(diǎn)的工作效率,在增加新的應(yīng)用時(shí),不需要同步控制節(jié)點(diǎn)增加新的調(diào)用配置,降低了系統(tǒng)的維護(hù)工作。
【附圖說明】
[0063]圖1為本發(fā)明實(shí)施例提供的一種SOA分布式網(wǎng)絡(luò)架構(gòu)示意圖;
[0064]圖2為本發(fā)明實(shí)施例提供的一種終端設(shè)備結(jié)構(gòu)示意圖;
[0065]圖3為本發(fā)明實(shí)施例提供的一種同步節(jié)點(diǎn)的消息同步方法的具體流程圖;
[0066]圖4為本發(fā)明實(shí)施例提供的一種應(yīng)用節(jié)點(diǎn)的消息同步方法的具體流程圖;
[0067]圖5為本發(fā)明實(shí)施例提供的一種消息同步方法的流程圖;
[0068]圖6為本發(fā)明實(shí)施例提供的一種同步節(jié)點(diǎn)的消息同步裝置的結(jié)構(gòu)示意圖;
[0069]圖7為本發(fā)明實(shí)施例提供的一種應(yīng)用節(jié)點(diǎn)的消息同步裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0070]采用本發(fā)明提供的消息同步方法,通過同步節(jié)點(diǎn)接收同步控制節(jié)點(diǎn)發(fā)送的同步消息后,基于該同步消息生成對(duì)應(yīng)的消息操作命令和該消息操作命令的命令標(biāo)識(shí),并保存到命令執(zhí)行文件,應(yīng)用節(jié)點(diǎn)獲取命令執(zhí)行文件中最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí),并判斷獲取的命令標(biāo)識(shí)與本地緩存的命令標(biāo)識(shí)是否不相同,確定不相同時(shí),獲取該最新的消息操作命令,基于該最新的消息操作命令對(duì)應(yīng)用節(jié)點(diǎn)的內(nèi)存進(jìn)行數(shù)據(jù)處理。這樣,應(yīng)用節(jié)點(diǎn)主動(dòng)獲取消息操作命令,不需要同步控制節(jié)點(diǎn)主動(dòng)推送到應(yīng)用節(jié)點(diǎn),保證了應(yīng)用的消息同步一致性,降低了同步控制節(jié)點(diǎn)的負(fù)載,提高了同步控制節(jié)點(diǎn)的工作效率,在增加新的應(yīng)用時(shí),不需要同步控制節(jié)點(diǎn)增加新的調(diào)用配置,降低了系統(tǒng)的維護(hù)工作。
[0071]本發(fā)明實(shí)施例提供的消息同步方法,適用于SOA分布式網(wǎng)絡(luò)架構(gòu),由于SOA分布式網(wǎng)絡(luò)的組網(wǎng)布局采用多機(jī)分布式,相同的應(yīng)用節(jié)點(diǎn)需要部署多臺(tái)主機(jī)上,每個(gè)主機(jī)上部署多個(gè)應(yīng)用節(jié)點(diǎn),參閱圖1所示,在SOA分布式網(wǎng)絡(luò)中,包含一個(gè)同步控制節(jié)點(diǎn)101,用于對(duì)同步節(jié)點(diǎn)103進(jìn)行管理控制,并向所有同步節(jié)點(diǎn)103發(fā)送同步消息;每個(gè)同步節(jié)點(diǎn)103部署在一個(gè)主機(jī)102上;每個(gè)同步節(jié)點(diǎn)103用于對(duì)所在的主機(jī)102中所有應(yīng)用節(jié)點(diǎn)104進(jìn)行消息同步。其中應(yīng)用節(jié)點(diǎn)104為部署于主機(jī)102中的各類應(yīng)用、軟件、程序等功能單元,在此,本發(fā)明實(shí)施例不做具體限定。
[0072]本發(fā)明實(shí)施例提供了一種終端設(shè)備200,該終端為攜帶各類應(yīng)用的計(jì)算機(jī)等設(shè)備。參閱圖2所示,該設(shè)備包括:收發(fā)器201、處理器202以及總線203,其中:
[0073]收發(fā)器201、處理器202和存儲(chǔ)器204通過總線203相互連接;總線203可以是外設(shè)部件互連標(biāo)準(zhǔn)(peripheral component interconnect,簡稱PCI)總線或擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(extended industry standard architecture,簡稱 EISA)總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖2中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
[0074]收發(fā)器201用于接收同步控制節(jié)點(diǎn)發(fā)送的同步消息。
[0075]處理器202可以實(shí)現(xiàn)本發(fā)明實(shí)施例圖3所示的消息同步方法,包括:
[0076]接收同步控制節(jié)點(diǎn)發(fā)送的同步消息;
[0077]基于同步消息生成對(duì)應(yīng)的消息操作命令和該消息操作命令的命令標(biāo)識(shí),將該消息操作命令和對(duì)應(yīng)的命令標(biāo)識(shí)保存至命令執(zhí)行文件;其中,命令執(zhí)行文件用于終端設(shè)備中的應(yīng)用進(jìn)行內(nèi)存數(shù)據(jù)處理。
[0078]可選的,接收同步控制節(jié)點(diǎn)發(fā)送的同步消息,包括:
[0079]接收同步控制節(jié)點(diǎn)通過持久化消息總線Persist Message Bus發(fā)送的同步消息。
[0080]可選的,接收同步控制節(jié)點(diǎn)發(fā)送的同步消息后,還包括:
[0081 ] 將同步消息持久化保存。
[0082]將消息操作命令和對(duì)應(yīng)的命令標(biāo)識(shí)保存至命令執(zhí)行文件后,還包括:
[0083]向同步控制節(jié)點(diǎn)返回同步響應(yīng)消息。
[0084]處理器202還可以實(shí)現(xiàn)本發(fā)明實(shí)施例圖4所示的消息同步方法,包括:
[0085]獲取命令執(zhí)行文件中的最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí);
[0086]判斷所述最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí)是否與本地緩存的命令標(biāo)識(shí)不相同;并確定該最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí)與本地緩存的命令標(biāo)識(shí)不相同時(shí),獲取該最新的消息操作命令;
[0087]基于該最新的消息操作命令對(duì)該終端設(shè)備200中的應(yīng)用的內(nèi)存進(jìn)行數(shù)據(jù)處理。
[0088]可選的,獲取命令執(zhí)行文件中的最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí),包括:
[0089]對(duì)該命令執(zhí)行文件進(jìn)行監(jiān)控;
[0090]在監(jiān)控到最新的消息操作命令和對(duì)應(yīng)的命令標(biāo)識(shí)保存至該命令執(zhí)行文件中時(shí),獲取該最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí)。
[0091]可選的,基于最新的消息操作命令對(duì)該終端設(shè)備200中的應(yīng)用的內(nèi)存進(jìn)行數(shù)據(jù)處理,包括:
[0092]解析該最新的消息操作命令,獲取對(duì)應(yīng)的數(shù)據(jù)處理指令;
[0093]根據(jù)該數(shù)據(jù)處理指令從指定位置讀取對(duì)應(yīng)的數(shù)據(jù),將讀取的數(shù)據(jù)添加至應(yīng)用的內(nèi)存;或者將該數(shù)據(jù)處理指令中攜帶的數(shù)據(jù)添加至應(yīng)用的內(nèi)存;或者根據(jù)該數(shù)據(jù)處理指令,將應(yīng)用的內(nèi)存中的指定數(shù)據(jù)進(jìn)行刪除。
[0094]可選的,基于最新的消息操作命令對(duì)該終端設(shè)備200中的應(yīng)用的內(nèi)存進(jìn)行數(shù)據(jù)處理后,還包括:
[0095]使用該最新的消息操作命令對(duì)應(yīng)的命令標(biāo)識(shí)對(duì)本地緩存的命令標(biāo)識(shí)進(jìn)行更新。
[0096]可選的,還包括:
[0097]對(duì)終端設(shè)備200中的應(yīng)用的內(nèi)存進(jìn)行周期性檢測,若檢測結(jié)果為異?;蛟搼?yīng)用重啟時(shí),則獲取預(yù)設(shè)在應(yīng)用中的對(duì)內(nèi)存進(jìn)行初始化的消息操作命令;
[0098]根據(jù)該消息操作命令從指定位置讀取數(shù)據(jù)對(duì)該內(nèi)存進(jìn)行初始化;
[0099]使用該消息操作命令對(duì)應(yīng)的預(yù)設(shè)命令標(biāo)識(shí),對(duì)本地緩存的命令標(biāo)識(shí)進(jìn)行更新。
[0100]該終端設(shè)備200還包括存儲(chǔ)器204,用于存放程序、持久化數(shù)據(jù)以及命令執(zhí)行文件。具體地,程序可以包括程序代碼,該程序代碼包括計(jì)算機(jī)操作指令。處理器202執(zhí)行存儲(chǔ)器204所存放的應(yīng)用程序,實(shí)現(xiàn)如上消息同步方法。
[0101]本發(fā)明實(shí)施例提供了一種消息同步方法,應(yīng)用于SOA分布式網(wǎng)絡(luò)架構(gòu)中的終端設(shè)備中,下面結(jié)合附圖對(duì)本發(fā)明優(yōu)選的實(shí)施方式進(jìn)行詳細(xì)說明。
[0102]參閱圖3所示,本發(fā)明實(shí)施例提供的一種在同步節(jié)點(diǎn)的消息同步方法,該方法的具體處理流程包括:
[0103]步驟301:同步節(jié)點(diǎn)接收同步控制節(jié)點(diǎn)發(fā)送的同步消息。
[0104]其中,具體的,在執(zhí)行步驟301時(shí),包括:
[0105]接收同步控制節(jié)點(diǎn)通過持久化消息總線Persist Message Bus發(fā)送的同步消息。同步控制節(jié)點(diǎn)將同步消息通過該P(yáng)ersist Message Bus發(fā)送到同步節(jié)點(diǎn)時(shí),該P(yáng)ersistMessage Bus首先將同步消息進(jìn)行持久化保存,然后將同步節(jié)點(diǎn)廣播發(fā)送至每個(gè)同步節(jié)點(diǎn)。
[0106]通過執(zhí)行步驟301,完成跨機(jī)器消息同步。
[0107]步驟302:同步節(jié)點(diǎn)基于同步消息生成對(duì)應(yīng)的消息操作命令和該消息操作命令的命令標(biāo)識(shí),將該消息操作命令和對(duì)應(yīng)的命令標(biāo)識(shí)保存至命令執(zhí)行文件;其中,命令執(zhí)行文件用于同步節(jié)點(diǎn)對(duì)應(yīng)的應(yīng)用節(jié)點(diǎn)進(jìn)行內(nèi)存數(shù)據(jù)處理。
[0108]每個(gè)主機(jī)/同步節(jié)點(diǎn)均對(duì)應(yīng)一個(gè)命令執(zhí)行文件,用于存儲(chǔ)同步消息生成的消息操作命令。命令執(zhí)行文件中持久化保存有所有消息操作命令。
[0109]同步節(jié)點(diǎn)接收同步控制節(jié)點(diǎn)發(fā)送的同步消息后,還包括:
[0110]同步節(jié)點(diǎn)將同步消息持久化保存。每個(gè)主機(jī)/同步節(jié)點(diǎn)還對(duì)應(yīng)一個(gè)數(shù)據(jù)倉庫,如本地磁盤等存儲(chǔ)設(shè)備,因此,同步節(jié)點(diǎn)會(huì)將同步消息保存到數(shù)據(jù)倉庫中。
[0111]消息操縱命令的命令標(biāo)識(shí)通常為消息操作命令的游標(biāo)值,生成方法通常為,將當(dāng)前消息操作命令與命令執(zhí)行文件中的上一次保存的消息操作命令相比,若相同,則當(dāng)前消息操作命令的游標(biāo)值不變,與命令執(zhí)行文件中的上一次保存的消息操作命令的游標(biāo)值相同;否則,則相對(duì)于命令執(zhí)行文件中的上一次保存的消息操作命令的游標(biāo)值,當(dāng)前消息操作命令的游標(biāo)值增加I。
[0112]消息操作命令的類型包括刷新refresh、增加define、刪除delete以及更新update。具體的消息操作命令如refresh all,表示從本地?cái)?shù)據(jù)倉庫中加載所有數(shù)據(jù)。
[0113]在執(zhí)行步驟302時(shí),