專利名稱:分布式系統(tǒng)中保持多個數(shù)據(jù)副本一致性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式通訊系統(tǒng),尤其涉及具有復(fù)雜的前后臺分工的、前臺必須依賴于后臺的配置進行工作的分布式通訊系統(tǒng)。
背景技術(shù):
傳送網(wǎng)絡(luò)(包括網(wǎng)管系統(tǒng))是一個復(fù)雜的大型分布式系統(tǒng),其典型的網(wǎng)絡(luò)結(jié)構(gòu)模型如圖1所示,分為網(wǎng)管側(cè)和設(shè)備側(cè)兩大部分;網(wǎng)管側(cè)包括GUI(圖形用戶接口)、MANAGER(管理者)兩部分,設(shè)備側(cè)包括AGENT(代理者)、MCU(微控制單元)兩部分;其中MANAGER同AGENT之間是一對多的關(guān)系,AGENT同MCU之間也是一對多的關(guān)系。在該分布式系統(tǒng)中,GUI-MANAGER之間通過F口操作傳遞消息,MANAGER-AGENT之間通過Qx口操作傳遞消息,而AGENT同各個MCU(微控制單元)在同一背板上通過S口命令進行通訊。
傳送網(wǎng)絡(luò)根據(jù)網(wǎng)管系統(tǒng)的配置進行工作,同時為了能脫離網(wǎng)管系統(tǒng)而工作,網(wǎng)絡(luò)在AGENT(代理者)和MCU(微控制單元)都保存有配置數(shù)據(jù)的副本,這樣一來,系統(tǒng)中實際上有三份網(wǎng)絡(luò)配置數(shù)據(jù),分別保存在網(wǎng)管側(cè)的MANAGER(管理者)、AGENT(代理者)和MCU(微控制單元)。保證這三份數(shù)據(jù)的一致性是整個傳送網(wǎng)絡(luò)穩(wěn)定可靠工作的基本前提。
最初網(wǎng)管和設(shè)備側(cè)的工作過程為圖形用戶接口將F口操作下發(fā)給管理者;管理者進行分析后將對應(yīng)的一條或者多條Qx口操作下發(fā)給代理者并進行配置數(shù)據(jù)副本的保存;代理者收到Qx操作后進行分析,分別將對應(yīng)的S口命令下發(fā)給微控制單元,并刷新自己的配置數(shù)據(jù)副本;微控制單元同樣根據(jù)代理者下發(fā)的命令進行執(zhí)行并刷新數(shù)據(jù)副本。這種方式我們稱之為無應(yīng)答工作方式。
無應(yīng)答工作方式的特點是各個功能實體之間的操作消息傳遞不需要應(yīng)答,只要命令發(fā)送了便認(rèn)為是成功。優(yōu)點是實現(xiàn)簡單;最大的缺點是上游不知道下游的執(zhí)行情況。由于在實際的網(wǎng)絡(luò)配置過程中,導(dǎo)致的某個環(huán)節(jié)執(zhí)行失敗的異常情況不可能完全避免,因此往往會造成數(shù)據(jù)的不一致。為了改進這個缺點,現(xiàn)在網(wǎng)管和設(shè)備側(cè)的工作過程一般為應(yīng)答工作方式。
這種工作方式的特點是應(yīng)答式的,即上游實體只有在收到正確的應(yīng)答后才刷新命令對應(yīng)的配置數(shù)據(jù)并下發(fā)下一條命令,而如果收到的是錯誤的應(yīng)答,則停止進一步執(zhí)行,并認(rèn)為整個命令是失敗的;只有當(dāng)所有分解的命令都執(zhí)行成功后才認(rèn)為整個命令是成功的。應(yīng)答的工作方式一定程度上保證了上下游信息的一致性。
仔細(xì)分析應(yīng)答的工作方式,還是存在著設(shè)計上的先天不足當(dāng)圖形用戶接口下發(fā)給管理者的一個F口操作同時對應(yīng)管理者下發(fā)給代理者的多個Qx口操作時,如果代理者執(zhí)行過程中其中的一條Qx操作失敗,管理者則認(rèn)為整個F口操作失?。坏俏覀兛梢园l(fā)現(xiàn)失敗前代理者執(zhí)行的Qx操作和對應(yīng)的微控制單元執(zhí)行的S口命令實際上已經(jīng)成功了,那么對應(yīng)的數(shù)據(jù)副本也得到了刷新;而管理者由于認(rèn)為F口操作失敗所以未進行任何的數(shù)據(jù)副本更新,所以導(dǎo)致了管理者、代理者、微控制單元的數(shù)據(jù)副本之間產(chǎn)生了部分不一致的現(xiàn)象。這種部分成功部分失敗而導(dǎo)致的數(shù)據(jù)不一致情況在工程實際中是一個很大的安全隱患,可能會造成嚴(yán)重的不良影響。
發(fā)明內(nèi)容
本發(fā)明的所要解決的問題就是現(xiàn)有技術(shù)中分布式系統(tǒng)命令執(zhí)行過程中部分成功部分失敗而導(dǎo)致的各個數(shù)據(jù)副本數(shù)據(jù)不一致的問題,提出一種分布式系統(tǒng)中保持多個數(shù)據(jù)副本一致性的方法。
分布式系統(tǒng)中保持多個數(shù)據(jù)副本一致性的方法,包括下列處理過程管理者的處理過程步驟一、圖形用戶接口下發(fā)F口操作給管理者;
步驟二、管理者接收后進行分析,將該操作分拆成一條或多條到代理者的Qx口操作;步驟三、管理者將帶有序列號的Qx口操作依次下發(fā)給代理者;步驟四、代理者依次接收并執(zhí)行Qx口操作,每執(zhí)行完畢一條Qx口操作后均向管理者反饋操作應(yīng)答信息;步驟五、如果管理者接收到代理者的操作失敗應(yīng)答,則返回錯誤的報文給圖形用戶接口,并結(jié)束本次F口操作;步驟六、否則在收到本次F口操作的全部操作成功應(yīng)答后更新本次F口操作在管理者處對應(yīng)的數(shù)據(jù)副本,并返回執(zhí)行成功的應(yīng)答給圖形用戶接口,結(jié)束本次F口操作;代理者的處理過程步驟A、代理者接收管理者下發(fā)的Qx口操作;步驟B、代理者緩存本次Qx口操作在代理者處所對應(yīng)的前一次操作所產(chǎn)生的數(shù)據(jù)副本;步驟C、代理者分析該Qx口操作,并拆分成相應(yīng)的一條或者多條S口命令;步驟D、代理者將S口命令依次下發(fā)給微控制單元;步驟E、微控制單元依次接收并執(zhí)行S口命令,每執(zhí)行完畢一條S口命令后均向代理者反饋執(zhí)行應(yīng)答信息;步驟F、如果代理者接收到本次Qx口操作所第對應(yīng)的全部S口命令執(zhí)行成功應(yīng)答,則更新本次Qx口操作在代理者處對應(yīng)的數(shù)據(jù)副本,向管理者返回本次Qx口操作成功應(yīng)答;步驟G、如果本次F口操作所對應(yīng)的全部Qx口操作均在代理者處操作成功,則刪除代理者緩存的數(shù)據(jù)副本;步驟H、如果代理者接收到微控制單元的執(zhí)行失敗應(yīng)答,則H1代理者向管理者返回本次Qx口操作失敗應(yīng)答;H2根據(jù)本次Qx口操作的序列號,確定本次F口操作在代理者所對應(yīng)的所有Qx口操作,并確定代理者在本次F口操作過程中所緩存的所有數(shù)據(jù)副本;H3代理者恢復(fù)緩存的所有Qx口操作數(shù)據(jù)副本為實際的數(shù)據(jù)副本;H4代理者根據(jù)緩存的數(shù)據(jù)副本,構(gòu)造對應(yīng)的S口命令,并下發(fā)給微控制單元,恢復(fù)微控制單元的數(shù)據(jù)副本為本次F口操作之前的狀態(tài);H5代理者刪除緩存的數(shù)據(jù)副本;微控制單元的處理過程步驟I微控制單元接收代理者下發(fā)的S口命令;步驟II微控制單元對接收到的S口命令進行分析,根據(jù)分析結(jié)果對設(shè)備執(zhí)行相應(yīng)的操作;步驟III如果執(zhí)行成功,則更新命令所對應(yīng)數(shù)據(jù)副本,向代理者返回執(zhí)行成功的應(yīng)答,結(jié)束本次S口命令執(zhí)行;步驟IV如果執(zhí)行失敗,則向代理者返回執(zhí)行失敗的應(yīng)答,結(jié)束本次S口命令執(zhí)行。
上述的序列號在Qx口操作的報文頭中進行標(biāo)識。
本發(fā)明所述的方法,從原理上完善了現(xiàn)有技術(shù)中一對多命令消息應(yīng)答機制中存在的不足,避免了網(wǎng)管系統(tǒng)與設(shè)備側(cè)存在的數(shù)據(jù)副本不一致問題,從而避免了設(shè)備由于分布式系統(tǒng)命令傳遞機制不完善而造成的網(wǎng)絡(luò)運行安全隱患,保證了設(shè)備穩(wěn)定可靠運行。顯然本發(fā)明也不局限于傳送網(wǎng)絡(luò)領(lǐng)域,本發(fā)明所述的方法還可應(yīng)用于具有類似性質(zhì)的其他分布式系統(tǒng)中。
圖1是分布式傳送網(wǎng)絡(luò)的系統(tǒng)結(jié)構(gòu)示意圖;圖2是本發(fā)明提出方法中管理者的處理流程圖;圖3是本發(fā)明提出方法中代理者的處理流程圖;圖4是本發(fā)明中代理者在S口命令執(zhí)行異常時的工作流程圖;圖5是本發(fā)明提出方法中微控制單元的處理流程圖。
具體實施例方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細(xì)說明。
圖1是分布式傳送網(wǎng)絡(luò)的系統(tǒng)結(jié)構(gòu)示意圖。如圖1所示,分布式傳送網(wǎng)絡(luò)系統(tǒng)包括圖形用戶接口、管理者、代理者、微控制單元四部分;其中管理者同代理者之間是一對多關(guān)系,代理者同微控制單元之間也是一對多的關(guān)系。一般地,稱圖形用戶接口、管理者兩部分為后臺網(wǎng)管系統(tǒng),代理者、微控制單元兩部分則是通訊設(shè)備的主體,數(shù)據(jù)副本分別保存在管理者、代理者和微控制單元三個部分。
圖2是本發(fā)明提出方法中管理者的處理流程圖。如圖2所示,管理者的處理過程包括1、圖形用戶接口下發(fā)一F口操作給管理者;2、管理者進行分析,將該命令分拆成一條或者多條到代理者的Qx口操作;3、管理者將Qx口操作依次下發(fā)給代理者,并在Qx操作報文中標(biāo)明該操作的序列號,對最后一條命令,序列號為0xfefe;4、首先判斷是否所有的Qx口操作都發(fā)送結(jié)束?5、如果沒有結(jié)束,則將下一條Qx操作發(fā)送給代理者;6、如果全部結(jié)束,則更新本F口操作在管理者處對應(yīng)的數(shù)據(jù)副本,并返回執(zhí)行成功的應(yīng)答給圖形用戶接口,結(jié)束本次F口操作。7、管理者收到代理者的應(yīng)答;1)如果是成功的應(yīng)答,則到步驟4;2)如果是失敗的應(yīng)答,則直接返回錯誤的報文給圖形用戶接口,并結(jié)束本次F口操作。其中,序列號可以在Qx口操作的報文頭中進行標(biāo)識,現(xiàn)有技術(shù)中Qx接口命令描述格式為
本發(fā)明中標(biāo)識了序列號后的Qx接口命令描述格式為
圖3是本發(fā)明提出方法中代理者的處理流程圖。如圖3所示,代理者的處理過程包括1、代理者接收到管理者下發(fā)的Qx口操作;2、代理者首先緩存該Qx操作在代理者所對應(yīng)的前一次操作所產(chǎn)生的數(shù)據(jù)副本;3、代理者分析該Qx口操作,并拆分成相應(yīng)的一條或者多條S口命令;4、代理者將S口命令依次發(fā)送給微控制單元;5、首先判斷是否所有的S口操作都發(fā)送結(jié)束?6、如果沒有結(jié)束,則將下一條S口命令發(fā)送給微控制單元;7、如果全部結(jié)束,則更新本Qx口操作在代理者處對應(yīng)的數(shù)據(jù)副本,然后返回執(zhí)行成功的應(yīng)答給管理者;8、如果F口操作對應(yīng)的全部Qx口操作都結(jié)束,則刪除代理者緩存的Qx操作對應(yīng)的數(shù)據(jù)。9、如果代理者接收到微控制單元的執(zhí)行失敗應(yīng)答,則執(zhí)行如圖4所示的S口命令執(zhí)行異常時的工作流程1、首先返回管理者執(zhí)行本Qx口操作失敗的應(yīng)答;2、根據(jù)Qx操作報文中的操作序列號,確定本次F口操作在代理者所對應(yīng)的所有Qx操作,并確定代理者在本次F口操作過程中所緩存的所有數(shù)據(jù)副本;3、代理者恢復(fù)緩存的所有Qx口操作數(shù)據(jù)副本為系統(tǒng)實際的數(shù)據(jù)副本;4、代理者根據(jù)緩存的數(shù)據(jù)副本,構(gòu)造對應(yīng)的S口命令,并下發(fā)給微控制單元,以恢復(fù)微控制單元的數(shù)據(jù)副本為本次F口操作之前的狀態(tài);5、代理者刪除緩存的數(shù)據(jù)。
圖5是本發(fā)明提出方法中微控制單元的處理流程圖。如圖5所示,微控制單元的處理過程包括1、微控制單元接收到代理者下發(fā)的S口命令;2、微控制單元對S口命令進行分析,根據(jù)分析結(jié)果對設(shè)備進行相應(yīng)的操作;3、如果執(zhí)行成功,則更新命令對應(yīng)數(shù)據(jù)副本,并返回成功的應(yīng)答給代理者,結(jié)束本次S口明執(zhí)行。4、如果執(zhí)行失敗,則返回失敗的應(yīng)答給代理者,并結(jié)束本次S口命令執(zhí)行。
下面結(jié)合一個具體的實施例來說明本發(fā)明所述方法的詳細(xì)實現(xiàn)。
結(jié)合圖1所示的傳送網(wǎng)絡(luò)系統(tǒng),以一條圖形用戶接口下發(fā)的F口操作對應(yīng)于三條管理者下發(fā)給代理者的Qx口操作,每一Qx口操作又對應(yīng)于三條S口命令為假設(shè),為了保證在異常發(fā)生時前后臺數(shù)據(jù)副本的一致性,本發(fā)明的主要工作過程如下1、圖形用戶接口下發(fā)一F口配置操作到管理者,管理者進行分析,拆分、轉(zhuǎn)換成三條到代理者的Qx操作;2、管理者將操作的序列號在報文頭中進行標(biāo)識,并下發(fā)第一條Qx操作給代理者;3、代理者收到管理者下發(fā)的Qx操作,(假設(shè)該Qx操作對應(yīng)的數(shù)據(jù)副本為A,本次操作執(zhí)行之前該數(shù)據(jù)副本為A1),首先緩存A1;4、對該Qx操作進行分析,拆分、轉(zhuǎn)換成三條到微控制單元的S口命令;
5、代理者按照順序?qū)⒌谝粭lS口命令下發(fā)給對應(yīng)的微控制單元;6、對應(yīng)的微控制單元收到代理者下發(fā)的S口命令進行執(zhí)行,成功后更改自己的數(shù)據(jù)副本并返回給代理者成功的應(yīng)答;7、代理者收到微控制單元返回的成功應(yīng)答,繼續(xù)第二條S口命令的下發(fā);8、微控制單元收到第二條S口命令執(zhí)行成功更新數(shù)據(jù)副本并返回成功;9、代理者收到微控制單元返回的成功應(yīng)答,繼續(xù)第三條S口命令的下發(fā);10、微控制單元收到第三條S口命令執(zhí)行成功更新數(shù)據(jù)副本并返回成功;11、代理者收到微控制單元返回的成功應(yīng)答,判斷本次Qx操作對應(yīng)的三條S口命令都執(zhí)行成功,刷新自己的數(shù)據(jù)副本,則數(shù)據(jù)副本由A1更新為A2;然后上報管理者成功的應(yīng)答,并結(jié)束本次Qx操作;12、管理者收到代理者的第一條Qx操作成功應(yīng)答,則繼續(xù)下發(fā)第二條Qx口操作給代理者;13、代理者收到管理者下發(fā)的第二條Qx操作,(假設(shè)該Qx操作對應(yīng)的代理者處數(shù)據(jù)副本為B,本次操作執(zhí)行之前該數(shù)據(jù)副本為B1),首先緩存B1;14、第二條Qx操作同樣對應(yīng)三條S口命令;代理者發(fā)送第一條S口命令給微控制單元,微控制單元執(zhí)行成功,更新數(shù)據(jù)副本并返回成功應(yīng)答;15、代理者收到成功的應(yīng)答,發(fā)送第二條S口命令給對應(yīng)的微控制單元;16、微控制單元執(zhí)行S口命令,由于設(shè)備的故障,該命令執(zhí)行失敗,于是返回錯誤的應(yīng)答給代理者;17、代理者收到微控制單元執(zhí)行錯誤的應(yīng)答,返回第二條Qx操作執(zhí)行失敗的應(yīng)答給管理者;同時進行保證數(shù)據(jù)副本一致性的回滾處理1)代理者將第一條Qx口操作對應(yīng)的數(shù)據(jù)由副本A2回滾為執(zhí)行之前的A1;2)以數(shù)據(jù)A1為基礎(chǔ),構(gòu)造第一條Qx口操作對應(yīng)的三條S口命令,并全部下發(fā)給微控制單元,以便恢復(fù)微控制單元上的數(shù)據(jù)副本為本次F口操作之前的狀態(tài);3)以第二條Qx口對應(yīng)的數(shù)據(jù)副本B1為基礎(chǔ),構(gòu)造對應(yīng)的S口命令,并將第一條下發(fā)給對應(yīng)的微控制單元,恢復(fù)微控制單元上的數(shù)據(jù)副本;18、管理者收到代理者的執(zhí)行錯誤的應(yīng)答信息,則不做任何數(shù)據(jù)的更新,直接將F口操作視為執(zhí)行失敗,返回給圖形用戶接口。
權(quán)利要求
1.分布式系統(tǒng)中保持多個數(shù)據(jù)副本一致性的方法,其特征在于包括下列處理過程管理者的處理過程步驟一、圖形用戶接口下發(fā)F口操作給管理者;步驟二、管理者接收后進行分析,將該操作分拆成一條或多條到代理者的Qx口操作;步驟三、管理者將帶有序列號的Qx口操作依次下發(fā)給代理者;步驟四、代理者依次接收并執(zhí)行Qx口操作,每執(zhí)行完畢一條Qx口操作后均向管理者反饋操作應(yīng)答信息;步驟五、如果管理者接收到代理者的操作失敗應(yīng)答,則返回錯誤的報文給圖形用戶接口,并結(jié)束本次F口操作;步驟六、否則在收到本次F口操作的全部操作成功應(yīng)答后更新本次F口操作在管理者處對應(yīng)的數(shù)據(jù)副本,并返回執(zhí)行成功的應(yīng)答給圖形用戶接口,結(jié)束本次F口操作;代理者的處理過程步驟A、代理者接收管理者下發(fā)的Qx口操作;步驟B、代理者緩存本次Qx口操作在代理者處所對應(yīng)的前一次操作所產(chǎn)生的數(shù)據(jù)副本;步驟C、代理者分析該Qx口操作,并拆分成相應(yīng)的一條或者多條S口命令;步驟D、代理者將S口命令依次下發(fā)給微控制單元;步驟E、微控制單元依次接收并執(zhí)行S口命令,每執(zhí)行完畢一條S口命令后均向代理者反饋執(zhí)行應(yīng)答信息;步驟F、如果代理者接收到本次Qx口操作所第對應(yīng)的全部S口命令執(zhí)行成功應(yīng)答,則更新本次Qx口操作在代理者處對應(yīng)的數(shù)據(jù)副本,向管理者返回本次Qx口操作成功應(yīng)答;步驟G、如果本次F口操作所對應(yīng)的全部Qx口操作均在代理者處操作成功,則刪除代理者緩存的數(shù)據(jù)副本;步驟H、如果代理者接收到微控制單元的執(zhí)行失敗應(yīng)答,則H1代理者向管理者返回本次Qx口操作失敗應(yīng)答;H2根據(jù)本次Qx口操作的序列號,確定本次F口操作在代理者所對應(yīng)的所有Qx口操作,并確定代理者在本次F口操作過程中所緩存的所有數(shù)據(jù)副本;H3代理者恢復(fù)緩存的所有Qx口操作數(shù)據(jù)副本為實際的數(shù)據(jù)副本;H4代理者根據(jù)緩存的數(shù)據(jù)副本,構(gòu)造對應(yīng)的S口命令,并下發(fā)給微控制單元,恢復(fù)微控制單元的數(shù)據(jù)副本為本次F口操作之前的狀態(tài);H5代理者刪除緩存的數(shù)據(jù)副本;微控制單元的處理過程步驟I微控制單元接收代理者下發(fā)的S口命令;步驟II微控制單元對接收到的S口命令進行分析,根據(jù)分析結(jié)果對設(shè)備執(zhí)行相應(yīng)的操作;步驟III如果執(zhí)行成功,則更新命令所對應(yīng)數(shù)據(jù)副本,向代理者返回執(zhí)行成功的應(yīng)答,結(jié)束本次S口命令執(zhí)行;步驟IV如果執(zhí)行失敗,則向代理者返回執(zhí)行失敗的應(yīng)答,結(jié)束本次S口命令執(zhí)行。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述的序列號在Qx口操作的報文頭中進行標(biāo)識。
全文摘要
本發(fā)明公開了一種分布式系統(tǒng)中保持多個數(shù)據(jù)副本一致性的方法,通過擴充定義管理者與代理者之間的Qx接口和規(guī)定代理者的運行機制,實現(xiàn)后臺管理者和位于設(shè)備側(cè)的代理者、微控制單元之間的信息交流、協(xié)調(diào),進而保證整個信息交互過程中、尤其在執(zhí)行過程中有失敗存在時的數(shù)據(jù)副本的一致性。本發(fā)明的核心在于代理者先緩存歷史數(shù)據(jù)副本,待執(zhí)行成功后再刪除緩存的副本,如果執(zhí)行失敗,則根據(jù)緩存的數(shù)據(jù)副本進行一致性回滾處理。本發(fā)明所述的方法,從原理上完善了現(xiàn)有技術(shù)中一對多命令消息應(yīng)答機制中存在的不足,避免了網(wǎng)管系統(tǒng)與設(shè)備側(cè)存在的數(shù)據(jù)副本不一致問題,從而避免了設(shè)備由于分布式系統(tǒng)命令傳遞機制不完善而造成的網(wǎng)絡(luò)運行安全隱患,保證了設(shè)備穩(wěn)定可靠運行。
文檔編號H04L12/24GK1758604SQ200410080469
公開日2006年4月12日 申請日期2004年10月10日 優(yōu)先權(quán)日2004年10月10日
發(fā)明者段磊令, 李海龍 申請人:中興通訊股份有限公司