文獻(xiàn)標(biāo)識(shí)碼: 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é)以及各類信號(hào)報(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)了多臺(tái)分布式計(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.