聯(lián)邦式數(shù)據(jù)交換與共享技術(shù)研究與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
當(dāng)今鐵路快速發(fā)展,帶動(dòng)了信號(hào)技術(shù)的跨越式進(jìn)步。大量先進(jìn)的信號(hào)系統(tǒng)與技術(shù)投入運(yùn)營(yíng)。如裝備監(jiān)測(cè)設(shè)備可進(jìn)行實(shí)時(shí)狀態(tài)信息采集,并利用這些采集的實(shí)時(shí)信息進(jìn)行故障診斷和及時(shí)報(bào)警,可以在極大程度上提高鐵路的運(yùn)行效率。然而這些監(jiān)測(cè)信息、狀態(tài)信息等大都存儲(chǔ)于各個(gè)地區(qū)不同的監(jiān)測(cè)站點(diǎn),而這些站點(diǎn)維護(hù)著自己的監(jiān)測(cè)系統(tǒng),使用著彼此互不兼容的存儲(chǔ)格式,形成了一個(gè)個(gè)“信息孤島”[1]。所以要想充分利用這些監(jiān)測(cè)信息、狀態(tài)信息,進(jìn)行計(jì)算機(jī)輔助故障診斷、判斷故障、開展智能化研究、預(yù)測(cè)設(shè)備健康狀況等工作時(shí),就必須對(duì)現(xiàn)有的互不兼容的異構(gòu)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)集成。目前,現(xiàn)有的數(shù)據(jù)集成方案已日趨成熟,然而國(guó)內(nèi)乃至世界范圍內(nèi)將數(shù)據(jù)集成技術(shù)運(yùn)用到鐵路電務(wù)綜合檢測(cè)上的成功案例基本沒有。本研究在充分分析各個(gè)監(jiān)測(cè)站點(diǎn)數(shù)據(jù)格式的基礎(chǔ)上,提出一套基于各個(gè)監(jiān)測(cè)站點(diǎn)的聯(lián)邦式管理方法,用以實(shí)現(xiàn)各個(gè)站點(diǎn)間的透明訪問[2,3]、成員間歷史數(shù)據(jù)交換、成員實(shí)時(shí)數(shù)據(jù)的訂閱與即時(shí)推送[4]。在保證現(xiàn)有各個(gè)數(shù)據(jù)源獨(dú)立性的同時(shí),以一個(gè)統(tǒng)一的視角對(duì)當(dāng)前的所有監(jiān)測(cè)信息、狀態(tài)信息等進(jìn)行綜合利用。為電務(wù)綜合監(jiān)測(cè)系統(tǒng)進(jìn)行高效的智能故障診斷提供良好的數(shù)據(jù)基礎(chǔ)。
電務(wù)綜合監(jiān)測(cè)聯(lián)邦式數(shù)據(jù)交換與共享系統(tǒng)設(shè)計(jì)
電務(wù)綜合監(jiān)測(cè)聯(lián)邦式數(shù)據(jù)庫管理系統(tǒng)要求系統(tǒng)內(nèi)的兩個(gè)成員之間可以進(jìn)行數(shù)據(jù)互操作,即聯(lián)邦內(nèi)的任意一個(gè)成員可以調(diào)閱聯(lián)邦內(nèi)其他成員的數(shù)據(jù),可以訂閱聯(lián)邦內(nèi)其他成員更新的實(shí)時(shí)數(shù)據(jù)。要求當(dāng)一個(gè)聯(lián)邦成員有數(shù)據(jù)更新時(shí),可以將該更新內(nèi)容推送給其它訂閱了該數(shù)據(jù)的成員。
系統(tǒng)主要分為以下幾個(gè)模塊:
(1) 注冊(cè)模塊
所有想要加入聯(lián)邦系統(tǒng)的數(shù)據(jù)源都需要向聯(lián)邦控制中心申請(qǐng)注冊(cè),成功后才能以一個(gè)邦員的身份做其他操作。
(2) 數(shù)據(jù)定義模塊
根據(jù)數(shù)據(jù)源結(jié)構(gòu)的不同可以手動(dòng)或者自動(dòng)定義本地?cái)?shù)據(jù)庫全部數(shù)據(jù)的基本信息,為控制中心制定全局?jǐn)?shù)據(jù)庫提供基本信息。
(3) 數(shù)據(jù)發(fā)布模塊
該模塊負(fù)責(zé)信息定義邦員的數(shù)據(jù)發(fā)布,并將該信息提交至控制中心的數(shù)據(jù)容器。
(4) 數(shù)據(jù)訂閱模塊
該模塊負(fù)責(zé)定義邦員的數(shù)據(jù)訂閱情況,并將該信息提交至控制中心的數(shù)據(jù)容器 。
(5) 數(shù)據(jù)自動(dòng)推送模塊
在邦員有數(shù)據(jù)更新時(shí),會(huì)將這些更新推送給訂閱了該數(shù)據(jù)的其他邦員。
(6) 透明訪問模塊
提供對(duì)全局?jǐn)?shù)據(jù)的訪問,聯(lián)邦系統(tǒng)自動(dòng)根據(jù)查詢請(qǐng)求分解成針對(duì)各個(gè)邦員的子查詢,并匯總結(jié)果,返回給請(qǐng)求發(fā)起方, 在不知道系統(tǒng)內(nèi)其他成員的情況下獲取對(duì)應(yīng)的數(shù)據(jù)。
該系統(tǒng)流程主要分為成員注冊(cè)初始化、成員之間的數(shù)據(jù)共享交換、系統(tǒng)透明訪問三個(gè)部分。成員注冊(cè)初始化過程如圖 1 所示。
1.1 注冊(cè)及初始化流程
(1) 注冊(cè)
填寫自身注冊(cè)名稱、自身IP、聯(lián)邦控制中心 IP,根據(jù)控制中心IP 發(fā)出注冊(cè)請(qǐng)求。如果符合注冊(cè)資格則返回注冊(cè)成功的消息。
(2) 邦員數(shù)據(jù)定義
定義自身的全部數(shù)據(jù)基礎(chǔ)信息,形成 LDM(Local Data Model,LDM)文件發(fā)送給控制中心,控制中心匯總各個(gè)邦員的 LDM 文件形成 GDM(Global Data Model,GDM)文件。GDM 文件包含當(dāng)前系統(tǒng)所有成員的全部數(shù)據(jù)信息。
(3) 邦員數(shù)據(jù)發(fā)布
定義邦員的數(shù)據(jù)發(fā)布信息,并提交至控制中心。控制中心匯總各個(gè)邦員的發(fā)布信息形成GPM(Global Publish Model, GPM)文件,即全局發(fā)布文件。
(4) 邦員數(shù)據(jù)訂閱
定義邦員的數(shù)據(jù)訂閱信息,提交至控制中心。控制中心匯總各個(gè)邦員的數(shù)據(jù)訂閱信息形成 GSM(Global SubscribeModel,GSM)文件,即全局訂閱文件。
1.2 聯(lián)邦成員數(shù)據(jù)共享交換流程
控制中心通過數(shù)據(jù)容器來描述整個(gè)聯(lián)邦的全局?jǐn)?shù)據(jù)及各個(gè)邦員的數(shù)據(jù)訂閱/發(fā)布情況,并將最新副本冗余存儲(chǔ)到各個(gè)邦員。數(shù)據(jù)容器總共包含三大配置文件:GDM(全局?jǐn)?shù)據(jù)模型), GPM(全局發(fā)布模型),GSM(全局訂閱模型)。
GDM:記錄聯(lián)邦系統(tǒng)中的所有數(shù)據(jù)基本信息。
GPM:記錄各個(gè)邦員的數(shù)據(jù)發(fā)布情況。
GSM:記錄各個(gè)邦員的數(shù)據(jù)訂閱情況。
當(dāng)數(shù)據(jù)容器的內(nèi)容有變更時(shí),控制中心會(huì)將變動(dòng)情況推送給各個(gè)邦員,各邦員會(huì)根據(jù)該變動(dòng)修改自身維護(hù)的訂閱發(fā)布文件以和控制中心保持一致。
此外,在邦員有實(shí)時(shí)數(shù)據(jù)更新時(shí),會(huì)根據(jù)自己維護(hù)的訂閱發(fā)布配置文件,將這些更新推送給訂閱了該數(shù)據(jù)的其他邦員。數(shù)據(jù)容器主要構(gòu)成如圖2 所示。聯(lián)邦成員數(shù)據(jù)交換如圖3 所示。
1.3 透明訪問流程
系統(tǒng)內(nèi)成員之間的數(shù)據(jù)共享和交換如圖 4 所示。
當(dāng)用戶在訪問聯(lián)邦系統(tǒng)的全局?jǐn)?shù)據(jù)時(shí),邦員可以根據(jù)自身維護(hù)的數(shù)據(jù)容器配置文件副本或這些數(shù)據(jù)所在數(shù)據(jù)源對(duì)應(yīng) IP,并向其發(fā)送命令請(qǐng)求。其他邦員接收并執(zhí)行這些查詢請(qǐng)求 然后返回查詢結(jié)果,查詢發(fā)起者將這些查詢結(jié)果匯總并呈獻(xiàn) 給用戶,用戶只需知道該系統(tǒng)可以提供哪些數(shù)據(jù)即可,無需知 道這些數(shù)據(jù)具體由誰提供,達(dá)到將整個(gè)系統(tǒng)看成一個(gè)數(shù)據(jù)源 實(shí)現(xiàn)透明訪問的效果。
2 關(guān)鍵技術(shù)
2.1 虛擬全局?jǐn)?shù)據(jù)定義
虛擬全局?jǐn)?shù)據(jù)庫是整個(gè)系統(tǒng)正常運(yùn)行的基石。每個(gè)新加入的邦員都可以選擇手動(dòng)或者自動(dòng)添加自身數(shù)據(jù)生成 LOM 文件并提交至控制中心生成GOM 文件。LOM 文件應(yīng)當(dāng)包含本地?cái)?shù)據(jù)源中擁有的全部數(shù)據(jù)的基本信息??紤]到各個(gè)數(shù)據(jù)源之間存在結(jié)構(gòu)上的差異,擬采用XML 來描述數(shù)據(jù)容器內(nèi)的各種文件、數(shù)據(jù)消息、命令消息等中間數(shù)據(jù)交換介質(zhì)[5,6]。
XML 具有非常高的自描述性,可有效提高在不同應(yīng)用、不同模塊間數(shù)據(jù)交換的可操作性。通過XML 可實(shí)現(xiàn)數(shù)據(jù)的標(biāo)準(zhǔn)化、結(jié)構(gòu)化,解決不同平臺(tái)、不同系統(tǒng)之間的數(shù)據(jù)結(jié)構(gòu)/ 模式的差異問題,使得數(shù)據(jù)層在XML 技術(shù)的支持下統(tǒng)一起來[7,8]。
2.2 數(shù)據(jù)發(fā)布與訂閱關(guān)系定義
每個(gè)邦員都可以通過發(fā)布模塊和訂閱模塊來制定對(duì)應(yīng)的發(fā)布/ 訂閱文件。pub_sub.txt 用來表示自身發(fā)布和自身訂閱的數(shù)據(jù),并提交給控制中心[9]。該文件具體內(nèi)容如圖 5 所示,表明需要發(fā)布或訂閱的數(shù)據(jù)名稱即可,其他信息可在數(shù)據(jù)容器的GOM 文件中得到補(bǔ)充??刂浦行氖盏礁鱾€(gè)邦員的 pub_sub.txt 內(nèi)容后與自身保留的各個(gè)邦員的注冊(cè)信息進(jìn)行匯總并將對(duì)應(yīng)的內(nèi)容收納進(jìn) GPM 文件和GSM 文件中。
2.3 數(shù)據(jù)的自動(dòng)發(fā)布
每個(gè)邦員自身的數(shù)據(jù)有更新時(shí),會(huì)在數(shù)據(jù)容器的GSM 中查詢哪些邦員訂閱了該數(shù)據(jù),同時(shí)獲取對(duì)應(yīng)邦員的IP 地址。使用底層封裝好的Socket 接口向這些IP 地址發(fā)送對(duì)應(yīng)的內(nèi)容更新。
2.4 數(shù)據(jù)透明訪問
外界訪問聯(lián)邦數(shù)據(jù)庫系統(tǒng)時(shí),直接針對(duì)數(shù)據(jù)容器中的虛擬全局?jǐn)?shù)據(jù)庫進(jìn)行訪問,在接受到請(qǐng)求后,控制中心分局GOM中的內(nèi)容分解為針對(duì)各個(gè)邦員的子查詢,子查詢返回結(jié)果后由控制中心匯總結(jié)果并對(duì)外返回?cái)?shù)據(jù),訪問者只需要知道虛擬全局?jǐn)?shù)據(jù)庫中有哪些數(shù)據(jù),而不需要知道聯(lián)邦系統(tǒng)中具體有哪些邦員。對(duì)外屏蔽系統(tǒng)內(nèi)其他邦員的存在,從而達(dá)到透明訪問的效果。
3 系統(tǒng)演示
在本地?cái)?shù)據(jù)定義階段,邦員可進(jìn)行全局?jǐn)?shù)據(jù)的定義,可以選擇曾經(jīng)定義過的LDM(Local Data Model,LDM)文件或者手動(dòng)添加新數(shù)據(jù)覆蓋原有的LDM 文件。數(shù)據(jù)定義界面如圖 6 所示。
邦員可以在圖 7 所示的透明訪問界面里看到當(dāng)前系統(tǒng)的所有全局?jǐn)?shù)據(jù),通過輸入指定的查詢條件查詢到對(duì)應(yīng)的數(shù)據(jù), 而不需要知道這些數(shù)據(jù)的具體來源[10]。
4 結(jié) 語
電務(wù)綜合監(jiān)測(cè)系統(tǒng)需要綜合多個(gè)監(jiān)測(cè)站點(diǎn)的監(jiān)測(cè)數(shù)據(jù)來做故障診斷及智能分析,然而各個(gè)監(jiān)測(cè)站點(diǎn)之間的差異性異常復(fù)雜,使得這個(gè)場(chǎng)合的數(shù)據(jù)集成變?yōu)橐粋€(gè)難題。使用聯(lián)邦式的管理方式結(jié)合XML 在結(jié)構(gòu)上可以比較清晰地描述整個(gè)系統(tǒng)結(jié)構(gòu),便于維護(hù)管理。