文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.024
中文引用格式: 史耀政,庫流亨. 一種分布式SCADA消息中間件設(shè)計方案[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)場的運行設(shè)備進行實時數(shù)據(jù)監(jiān)視和控制,實現(xiàn)數(shù)據(jù)采集、設(shè)備控制、測量分析、參數(shù)調(diào)節(jié)以及各類信號報警等功能。隨著分布式技術(shù)在SCADA系統(tǒng)中應(yīng)用的不斷推廣,SCADA系統(tǒng)各個子系統(tǒng)之間以及與其他異構(gòu)系統(tǒng)之間的消息傳遞變得更加復(fù)雜化、多樣化[1]。
本文針對分布式環(huán)境下SCADA系統(tǒng)復(fù)雜的應(yīng)用場景,提出了一套高效可靠的分布式消息中間件設(shè)計方案。該方案采用N-Tree結(jié)構(gòu)[2]對分布式系統(tǒng)節(jié)點進行消息區(qū)域劃分,各個子區(qū)域的消息根據(jù)應(yīng)用需求進行收集和傳遞。系統(tǒng)采用經(jīng)典的Publisher-Subscriber(發(fā)布/訂閱)模式設(shè)計,產(chǎn)生消息的節(jié)點稱之為Publisher(發(fā)布者),獲取并處理消息的節(jié)點稱之為Subscriber(訂閱者)。訂閱者首先需要對特定的消息區(qū)域進行“消息訂閱”,發(fā)布者會自動將訂閱的消息推送到各訂閱節(jié)點。
系統(tǒng)采用了特殊設(shè)計的分布式一致性算法,確保系統(tǒng)中分布式節(jié)點之間的消息一致性和完整性,同時提高了分布式消息訪問的效率。本文將重點描述消息分發(fā)系統(tǒng)設(shè)計和分布式一致性算法設(shè)計。
1 分布式SCADA系統(tǒng)
SCADA系統(tǒng)在鐵路電氣化遠動系統(tǒng)上的應(yīng)用較早,近些年來隨著中國鐵路的迅猛發(fā)展,也帶動了鐵路電氣化遠動系統(tǒng)向更高的目標(biāo)發(fā)展。當(dāng)前我國SCADA系統(tǒng)發(fā)展處于第三階段,即基于分布式計算機網(wǎng)絡(luò)以及關(guān)系數(shù)據(jù)庫技術(shù)的、能夠?qū)崿F(xiàn)大范圍聯(lián)網(wǎng)的SCADA系統(tǒng)[3]。
一個典型的鐵路供電調(diào)度SCADA系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖中每一個方框僅標(biāo)示了一種分布式SCADA系統(tǒng)功能角色,在實際的SCADA系統(tǒng)中,每一種系統(tǒng)角色一般均對應(yīng)了多臺分布式計算機節(jié)點。每一個系統(tǒng)節(jié)點根據(jù)實際應(yīng)用情況的不同負責(zé)相應(yīng)的計算任務(wù),完成各自所屬角色的功能。
2 消息分發(fā)系統(tǒng)設(shè)計
(1)角色分類
在分布式SCADA系統(tǒng)中,按照消息的收集與分發(fā)功能的不同,劃分為兩種角色:消息供應(yīng)者與消息訂閱者。
消息供應(yīng)者負責(zé)按照N-Tree結(jié)構(gòu)對系統(tǒng)中的消息進行區(qū)域劃分,并注冊、收集指定區(qū)域的消息,主動推送給訂閱節(jié)點或者等待消息訂閱者查詢。消息訂閱者則根據(jù)實際應(yīng)用需求,通過指定機器節(jié)點名、區(qū)域名去“訂閱”消息內(nèi)容,在消息訂閱時可以指定是否需要由消息供應(yīng)者主動推送。
(2)消息分類與確認
按照消息緊急程度的不同,可以劃分為兩大類消息:緊急消息和一般消息。這兩大類消息都可以根據(jù)實際應(yīng)用需求的不同來劃分應(yīng)用子類,其區(qū)別在于:緊急消息具有“告警”和“正常”兩種狀態(tài)且需要消息訂閱者進行“確認”,而一般消息則沒有狀態(tài)區(qū)分且不需要被確認。
(3)消息緩存與傳遞
系統(tǒng)針對不同類型消息的應(yīng)用特點,設(shè)計了兩種緩存方式:“鏈?zhǔn)疥犃小本彌_和“環(huán)形隊列”緩沖。對于重要程度較高的且需要等待確認的緊急消息,則應(yīng)采用“鏈?zhǔn)疥犃小本彌_模式,確保消息不會丟失;對于一般性消息則可以采用“環(huán)形隊列”緩沖模式,在極端情況下早期的消息可能會丟失,但同樣保證了最新的消息被緩存。
系統(tǒng)中每一個節(jié)點均需要維護自己的消息緩沖區(qū)和消息訂閱需求列表,消息節(jié)點之間的通信采用TCP/IP網(wǎng)絡(luò)傳輸。消息訂閱與傳遞遵循以下步驟:
(1)消息訂閱者將訂制的消息請求(包括指定優(yōu)先級、消息區(qū)域等)傳遞給消息供應(yīng)者進行“訂閱”操作;
(2)消息供應(yīng)者維護自身節(jié)點和遠程節(jié)點的消息訂閱請求,當(dāng)產(chǎn)生新的消息時,根據(jù)消息訂閱請求進行篩選;
(3)消息訂閱者的消息緩沖區(qū)中的內(nèi)容得到更新,可以根據(jù)應(yīng)用需求定制后續(xù)行為(例如報警、打印、存庫等)。
消息分發(fā)系統(tǒng)模型見圖2。
3 分布式一致性算法
本文提出采用基于“Quorum-Based算法”[4]與消息區(qū)域模型相結(jié)合的機制,對分布式消息中間件的數(shù)據(jù)一致性做出保證。這里采用的方案能夠保證分布式SCADA系統(tǒng)中的消息緩沖數(shù)據(jù)“最終一致性”,而不是滿足“強一致性”。所謂“強一致性”指的是當(dāng)消息訂閱者對系統(tǒng)消息進行獲取或確認時,必須檢查或更新相關(guān)節(jié)點的所有消息副本狀態(tài)是否一致,只有保證所有消息副本狀態(tài)一致才能完成讀寫操作。而最終一致性的概念是:在每次獲取或更新數(shù)據(jù)狀態(tài)時,并不保證所有節(jié)點上的數(shù)據(jù)副本均保持一致,而是根據(jù)設(shè)定的策略保證部分?jǐn)?shù)據(jù)是最新的,剩余不同步的副本則由系統(tǒng)內(nèi)部負責(zé)自行同步,系統(tǒng)保證在沒有后續(xù)更新的情況下最終返回上一次更新的最新狀態(tài)。
由于本文設(shè)計的分布式一致性算法不屬于強一致性算法,且經(jīng)過了特殊優(yōu)化,因此系統(tǒng)工作的效率較高,且能夠確保分布式SCADA系統(tǒng)的數(shù)據(jù)一致可靠性。本文設(shè)計的分布式一致性算法描述如下:
(1)系統(tǒng)中每一個消息區(qū)域的消息供應(yīng)者(總數(shù)量V)均可以對訪問(讀)操作和確認(寫)操作進行授權(quán)許可,每次授權(quán)尚未完成的情況下不可重復(fù)授權(quán)其他操作,防止出現(xiàn)讀寫沖突的情況;
(2)每一次消息訪問(讀)操作必須獲得Vr個節(jié)點授權(quán)許可才能進行,同樣,每一次消息確認(寫)操作必須獲得Vw個節(jié)點授權(quán)才能進行;
(3)系統(tǒng)中各項操作的授權(quán)許可數(shù)量滿足如下關(guān)系:
式(1)表示一次讀操作所需授權(quán)數(shù)與一次寫操作所需授權(quán)數(shù)之和應(yīng)該大于系統(tǒng)授權(quán)總數(shù),這樣可以保證同一份數(shù)據(jù)拷貝不會發(fā)生并行讀寫的情況,因為一旦讀操作獲得了授權(quán),就不可能存在足夠的寫操作授權(quán)了,反之亦然。式(2)表示一次寫操作必須獲得半數(shù)以上的授權(quán),確保同一份數(shù)據(jù)拷貝不會同時被2個及以上請求修改,這樣就能保證系統(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)者會對某個消息邏輯區(qū)域提供訂閱功能,而這樣的節(jié)點一般可以存在多個,提供相同消息區(qū)域供應(yīng)的多個節(jié)點構(gòu)成了分布式節(jié)點群集。當(dāng)消息供應(yīng)者需要訪問或確認某區(qū)域消息時,需要遵循本文描述的分布式一致性算法規(guī)則。而SCADA系統(tǒng)中的消息區(qū)域狀態(tài)與各消息供應(yīng)者之間的同步,則由系統(tǒng)在操作完成后自動進行。
4 實踐結(jié)果分析
本文利用GT-ITM提供的Transit-Stub(TS)模型[5],構(gòu)建一個分層結(jié)構(gòu)網(wǎng)絡(luò)對此消息中間件進行性能測試。
仿真系統(tǒng)根據(jù)鐵路SCADA系統(tǒng)實際應(yīng)用需求劃分角色區(qū)域,每個區(qū)域有多個系統(tǒng)節(jié)點。假設(shè)消息供應(yīng)者每200 ms新增一條消息,每條消息為128 B的數(shù)據(jù)包,每一個消息訂閱者都訂閱所有區(qū)域消息以模擬最大負載情況。通常,服務(wù)器節(jié)點既充當(dāng)消息供應(yīng)者又充當(dāng)消息訂閱者。仿真實驗測試在不同應(yīng)用規(guī)模下的系統(tǒng)負載情況。實驗結(jié)果如表1所示。
從表1中可以看出,相同消息供應(yīng)者的情況下,消息訂閱者數(shù)量的增加會導(dǎo)致網(wǎng)絡(luò)吞吐量線性增長,但是增量不會呈現(xiàn)倍數(shù)關(guān)系。這說明本方案的設(shè)計有效地降低了相同節(jié)點上多個消息訂閱者的消息傳遞負載。消息供應(yīng)者數(shù)量的增加會使得網(wǎng)絡(luò)吞吐量和CPU負載呈現(xiàn)比率上升趨勢,這是因為消息供應(yīng)者需要維護和更新各消息訂閱者隊列,實時推送消息內(nèi)容。當(dāng)消息供應(yīng)者和消息訂閱者的數(shù)量按照同等規(guī)模擴大時,系統(tǒng)表現(xiàn)出穩(wěn)定的線性增長趨勢。這表明系統(tǒng)能夠穩(wěn)定有效地控制分布式消息傳遞,具有良好的運行效率。
5 結(jié)束語
本文針對鐵路牽引供電SCADA系統(tǒng)中消息傳遞效率較低、接口復(fù)雜不統(tǒng)一的問題,設(shè)計并實現(xiàn)了一套通用的消息中間件方案。該方案對系統(tǒng)角色、消息內(nèi)容進行區(qū)域劃分,對消息傳遞的機制進行了改進,利用Quorum-Based改進算法確保了分布式節(jié)點之間的消息一致性。仿真實驗及實踐結(jié)果表明,本方案設(shè)計的消息中間件能夠適應(yīng)不同規(guī)模的SCADA系統(tǒng)應(yīng)用,具有良好的可靠性和運行效率。
參考文獻
[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].計算機科學(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.