文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.024
中文引用格式: 史耀政,,庫流亨. 一種分布式SCADA消息中間件設(shè)計(jì)方案[J].電子技術(shù)應(yīng)用,2016,,42(3):84-86.
英文引用格式: Shi Yaozheng,,Ku Liuheng. A design scheme of distributed message middleware for SCADA system[J].Application of Electronic Technique,2016,,42(3):84-86.
0 引言
數(shù)據(jù)采集與監(jiān)視控制(Supervisory Control And Data Acquisition,,SCADA)系統(tǒng)在鐵路牽引供電及其他工業(yè)控制系統(tǒng)領(lǐng)域占據(jù)著重要地位,可以對現(xiàn)場的運(yùn)行設(shè)備進(jìn)行實(shí)時(shí)數(shù)據(jù)監(jiān)視和控制,,實(shí)現(xiàn)數(shù)據(jù)采集,、設(shè)備控制、測量分析,、參數(shù)調(diào)節(jié)以及各類信號報(bào)警等功能,。隨著分布式技術(shù)在SCADA系統(tǒng)中應(yīng)用的不斷推廣,,SCADA系統(tǒng)各個(gè)子系統(tǒng)之間以及與其他異構(gòu)系統(tǒng)之間的消息傳遞變得更加復(fù)雜化、多樣化[1],。
本文針對分布式環(huán)境下SCADA系統(tǒng)復(fù)雜的應(yīng)用場景,,提出了一套高效可靠的分布式消息中間件設(shè)計(jì)方案。該方案采用N-Tree結(jié)構(gòu)[2]對分布式系統(tǒng)節(jié)點(diǎn)進(jìn)行消息區(qū)域劃分,,各個(gè)子區(qū)域的消息根據(jù)應(yīng)用需求進(jìn)行收集和傳遞,。系統(tǒng)采用經(jīng)典的Publisher-Subscriber(發(fā)布/訂閱)模式設(shè)計(jì),產(chǎn)生消息的節(jié)點(diǎn)稱之為Publisher(發(fā)布者),,獲取并處理消息的節(jié)點(diǎn)稱之為Subscriber(訂閱者),。訂閱者首先需要對特定的消息區(qū)域進(jìn)行“消息訂閱”,發(fā)布者會(huì)自動(dòng)將訂閱的消息推送到各訂閱節(jié)點(diǎn),。
系統(tǒng)采用了特殊設(shè)計(jì)的分布式一致性算法,,確保系統(tǒng)中分布式節(jié)點(diǎn)之間的消息一致性和完整性,同時(shí)提高了分布式消息訪問的效率,。本文將重點(diǎn)描述消息分發(fā)系統(tǒng)設(shè)計(jì)和分布式一致性算法設(shè)計(jì),。
1 分布式SCADA系統(tǒng)
SCADA系統(tǒng)在鐵路電氣化遠(yuǎn)動(dòng)系統(tǒng)上的應(yīng)用較早,近些年來隨著中國鐵路的迅猛發(fā)展,,也帶動(dòng)了鐵路電氣化遠(yuǎn)動(dòng)系統(tǒng)向更高的目標(biāo)發(fā)展,。當(dāng)前我國SCADA系統(tǒng)發(fā)展處于第三階段,即基于分布式計(jì)算機(jī)網(wǎng)絡(luò)以及關(guān)系數(shù)據(jù)庫技術(shù)的,、能夠?qū)崿F(xiàn)大范圍聯(lián)網(wǎng)的SCADA系統(tǒng)[3]。
一個(gè)典型的鐵路供電調(diào)度SCADA系統(tǒng)結(jié)構(gòu)圖如圖1所示,。
圖中每一個(gè)方框僅標(biāo)示了一種分布式SCADA系統(tǒng)功能角色,,在實(shí)際的SCADA系統(tǒng)中,每一種系統(tǒng)角色一般均對應(yīng)了多臺分布式計(jì)算機(jī)節(jié)點(diǎn),。每一個(gè)系統(tǒng)節(jié)點(diǎn)根據(jù)實(shí)際應(yīng)用情況的不同負(fù)責(zé)相應(yīng)的計(jì)算任務(wù),,完成各自所屬角色的功能。
2 消息分發(fā)系統(tǒng)設(shè)計(jì)
(1)角色分類
在分布式SCADA系統(tǒng)中,,按照消息的收集與分發(fā)功能的不同,,劃分為兩種角色:消息供應(yīng)者與消息訂閱者。
消息供應(yīng)者負(fù)責(zé)按照N-Tree結(jié)構(gòu)對系統(tǒng)中的消息進(jìn)行區(qū)域劃分,,并注冊,、收集指定區(qū)域的消息,主動(dòng)推送給訂閱節(jié)點(diǎn)或者等待消息訂閱者查詢,。消息訂閱者則根據(jù)實(shí)際應(yīng)用需求,,通過指定機(jī)器節(jié)點(diǎn)名、區(qū)域名去“訂閱”消息內(nèi)容,,在消息訂閱時(shí)可以指定是否需要由消息供應(yīng)者主動(dòng)推送,。
(2)消息分類與確認(rèn)
按照消息緊急程度的不同,,可以劃分為兩大類消息:緊急消息和一般消息。這兩大類消息都可以根據(jù)實(shí)際應(yīng)用需求的不同來劃分應(yīng)用子類,,其區(qū)別在于:緊急消息具有“告警”和“正?!眱煞N狀態(tài)且需要消息訂閱者進(jìn)行“確認(rèn)”,而一般消息則沒有狀態(tài)區(qū)分且不需要被確認(rèn),。
(3)消息緩存與傳遞
系統(tǒng)針對不同類型消息的應(yīng)用特點(diǎn),,設(shè)計(jì)了兩種緩存方式:“鏈?zhǔn)疥?duì)列”緩沖和“環(huán)形隊(duì)列”緩沖。對于重要程度較高的且需要等待確認(rèn)的緊急消息,,則應(yīng)采用“鏈?zhǔn)疥?duì)列”緩沖模式,,確保消息不會(huì)丟失;對于一般性消息則可以采用“環(huán)形隊(duì)列”緩沖模式,,在極端情況下早期的消息可能會(huì)丟失,,但同樣保證了最新的消息被緩存。
系統(tǒng)中每一個(gè)節(jié)點(diǎn)均需要維護(hù)自己的消息緩沖區(qū)和消息訂閱需求列表,,消息節(jié)點(diǎn)之間的通信采用TCP/IP網(wǎng)絡(luò)傳輸,。消息訂閱與傳遞遵循以下步驟:
(1)消息訂閱者將訂制的消息請求(包括指定優(yōu)先級、消息區(qū)域等)傳遞給消息供應(yīng)者進(jìn)行“訂閱”操作,;
(2)消息供應(yīng)者維護(hù)自身節(jié)點(diǎn)和遠(yuǎn)程節(jié)點(diǎn)的消息訂閱請求,,當(dāng)產(chǎn)生新的消息時(shí),根據(jù)消息訂閱請求進(jìn)行篩選,;
(3)消息訂閱者的消息緩沖區(qū)中的內(nèi)容得到更新,,可以根據(jù)應(yīng)用需求定制后續(xù)行為(例如報(bào)警、打印,、存庫等),。
消息分發(fā)系統(tǒng)模型見圖2。
3 分布式一致性算法
本文提出采用基于“Quorum-Based算法”[4]與消息區(qū)域模型相結(jié)合的機(jī)制,,對分布式消息中間件的數(shù)據(jù)一致性做出保證,。這里采用的方案能夠保證分布式SCADA系統(tǒng)中的消息緩沖數(shù)據(jù)“最終一致性”,而不是滿足“強(qiáng)一致性”,。所謂“強(qiáng)一致性”指的是當(dāng)消息訂閱者對系統(tǒng)消息進(jìn)行獲取或確認(rèn)時(shí),,必須檢查或更新相關(guān)節(jié)點(diǎn)的所有消息副本狀態(tài)是否一致,只有保證所有消息副本狀態(tài)一致才能完成讀寫操作,。而最終一致性的概念是:在每次獲取或更新數(shù)據(jù)狀態(tài)時(shí),,并不保證所有節(jié)點(diǎn)上的數(shù)據(jù)副本均保持一致,而是根據(jù)設(shè)定的策略保證部分?jǐn)?shù)據(jù)是最新的,,剩余不同步的副本則由系統(tǒng)內(nèi)部負(fù)責(zé)自行同步,,系統(tǒng)保證在沒有后續(xù)更新的情況下最終返回上一次更新的最新狀態(tài)。
由于本文設(shè)計(jì)的分布式一致性算法不屬于強(qiáng)一致性算法,,且經(jīng)過了特殊優(yōu)化,,因此系統(tǒng)工作的效率較高,,且能夠確保分布式SCADA系統(tǒng)的數(shù)據(jù)一致可靠性。本文設(shè)計(jì)的分布式一致性算法描述如下:
(1)系統(tǒng)中每一個(gè)消息區(qū)域的消息供應(yīng)者(總數(shù)量V)均可以對訪問(讀)操作和確認(rèn)(寫)操作進(jìn)行授權(quán)許可,,每次授權(quán)尚未完成的情況下不可重復(fù)授權(quán)其他操作,,防止出現(xiàn)讀寫沖突的情況;
(2)每一次消息訪問(讀)操作必須獲得Vr個(gè)節(jié)點(diǎn)授權(quán)許可才能進(jìn)行,,同樣,,每一次消息確認(rèn)(寫)操作必須獲得Vw個(gè)節(jié)點(diǎn)授權(quán)才能進(jìn)行;
(3)系統(tǒng)中各項(xiàng)操作的授權(quán)許可數(shù)量滿足如下關(guān)系:
式(1)表示一次讀操作所需授權(quán)數(shù)與一次寫操作所需授權(quán)數(shù)之和應(yīng)該大于系統(tǒng)授權(quán)總數(shù),,這樣可以保證同一份數(shù)據(jù)拷貝不會(huì)發(fā)生并行讀寫的情況,,因?yàn)橐坏┳x操作獲得了授權(quán),就不可能存在足夠的寫操作授權(quán)了,,反之亦然,。式(2)表示一次寫操作必須獲得半數(shù)以上的授權(quán),確保同一份數(shù)據(jù)拷貝不會(huì)同時(shí)被2個(gè)及以上請求修改,,這樣就能保證系統(tǒng)數(shù)據(jù)寫入的串行化和一致性,。式(3)屬于優(yōu)化的可選策略,表示一次讀操作所需授權(quán)數(shù)應(yīng)當(dāng)盡可能小,,以提高系統(tǒng)數(shù)據(jù)訪問效率,。
圖3中給出了本系統(tǒng)中描述的分布式SCADA系統(tǒng)消息供應(yīng)者與消息訂閱者之間的訪問關(guān)系。
在圖3中,,消息供應(yīng)者會(huì)對某個(gè)消息邏輯區(qū)域提供訂閱功能,,而這樣的節(jié)點(diǎn)一般可以存在多個(gè),提供相同消息區(qū)域供應(yīng)的多個(gè)節(jié)點(diǎn)構(gòu)成了分布式節(jié)點(diǎn)群集,。當(dāng)消息供應(yīng)者需要訪問或確認(rèn)某區(qū)域消息時(shí),,需要遵循本文描述的分布式一致性算法規(guī)則。而SCADA系統(tǒng)中的消息區(qū)域狀態(tài)與各消息供應(yīng)者之間的同步,,則由系統(tǒng)在操作完成后自動(dòng)進(jìn)行。
4 實(shí)踐結(jié)果分析
本文利用GT-ITM提供的Transit-Stub(TS)模型[5],,構(gòu)建一個(gè)分層結(jié)構(gòu)網(wǎng)絡(luò)對此消息中間件進(jìn)行性能測試,。
仿真系統(tǒng)根據(jù)鐵路SCADA系統(tǒng)實(shí)際應(yīng)用需求劃分角色區(qū)域,每個(gè)區(qū)域有多個(gè)系統(tǒng)節(jié)點(diǎn),。假設(shè)消息供應(yīng)者每200 ms新增一條消息,,每條消息為128 B的數(shù)據(jù)包,每一個(gè)消息訂閱者都訂閱所有區(qū)域消息以模擬最大負(fù)載情況,。通常,,服務(wù)器節(jié)點(diǎn)既充當(dāng)消息供應(yīng)者又充當(dāng)消息訂閱者。仿真實(shí)驗(yàn)測試在不同應(yīng)用規(guī)模下的系統(tǒng)負(fù)載情況,。實(shí)驗(yàn)結(jié)果如表1所示,。
從表1中可以看出,,相同消息供應(yīng)者的情況下,消息訂閱者數(shù)量的增加會(huì)導(dǎo)致網(wǎng)絡(luò)吞吐量線性增長,,但是增量不會(huì)呈現(xiàn)倍數(shù)關(guān)系,。這說明本方案的設(shè)計(jì)有效地降低了相同節(jié)點(diǎn)上多個(gè)消息訂閱者的消息傳遞負(fù)載。消息供應(yīng)者數(shù)量的增加會(huì)使得網(wǎng)絡(luò)吞吐量和CPU負(fù)載呈現(xiàn)比率上升趨勢,,這是因?yàn)橄⒐?yīng)者需要維護(hù)和更新各消息訂閱者隊(duì)列,,實(shí)時(shí)推送消息內(nèi)容。當(dāng)消息供應(yīng)者和消息訂閱者的數(shù)量按照同等規(guī)模擴(kuò)大時(shí),,系統(tǒng)表現(xiàn)出穩(wěn)定的線性增長趨勢,。這表明系統(tǒng)能夠穩(wěn)定有效地控制分布式消息傳遞,具有良好的運(yùn)行效率,。
5 結(jié)束語
本文針對鐵路牽引供電SCADA系統(tǒng)中消息傳遞效率較低,、接口復(fù)雜不統(tǒng)一的問題,設(shè)計(jì)并實(shí)現(xiàn)了一套通用的消息中間件方案,。該方案對系統(tǒng)角色,、消息內(nèi)容進(jìn)行區(qū)域劃分,對消息傳遞的機(jī)制進(jìn)行了改進(jìn),,利用Quorum-Based改進(jìn)算法確保了分布式節(jié)點(diǎn)之間的消息一致性,。仿真實(shí)驗(yàn)及實(shí)踐結(jié)果表明,本方案設(shè)計(jì)的消息中間件能夠適應(yīng)不同規(guī)模的SCADA系統(tǒng)應(yīng)用,,具有良好的可靠性和運(yùn)行效率,。
參考文獻(xiàn)
[1] 張平.我國高速鐵路牽引供電SCADA系統(tǒng)的分析與探討[J].鐵道建筑技術(shù),2010(4):72-74.
[2] Chris Gauthier Dickey,,Virginia Mary Lo,,Daniel Zappala.Using n-trees for scalable event ordering in peer-to-peer games[C].Proceedings of NOSSDAV,2005.
[3] 崔瑞超.淺談中國高速鐵路的發(fā)展[J].新課程學(xué)習(xí)(學(xué)術(shù)教育),,2010(10):30-31.
[4] 熊庭剛,,盧正鼎,張家宏,,等.基于Quorum系統(tǒng)的分布式訪問控制框架研究[J].計(jì)算機(jī)科學(xué),,2010(5).
[5] CALVERT K,EAGAN J,,MERUGU S,,et al.Extending and enhan-cing GT-ITM[C].Proc of ACM SIGCOMM Workshop on Models,Methods and Tools for Reproducible Network Research,,2003.