《電子技術應用》
您所在的位置:首頁 > 電源技術 > 設計應用 > 一種分布式SCADA消息中間件設計方案
一種分布式SCADA消息中間件設計方案
2016年電子技術應用第3期
史耀政1,庫流亨2
1.呼和浩特鐵路局,內(nèi)蒙古 呼和浩特010020;2.華北計算機系統(tǒng)工程研究所,北京100083
摘要: 隨著分布式SCADA系統(tǒng)在鐵路牽引供電應用的不斷推廣,SCADA系統(tǒng)節(jié)點之間以及與其他異構系統(tǒng)之間進行消息數(shù)據(jù)傳遞面臨著效率降低、接口不統(tǒng)一等問題。針對此問題,提出一種基于發(fā)布/訂閱模式的分布式SCADA消息中間件的設計方案,該方案使用了N-Tree結構將系統(tǒng)消息進行邏輯區(qū)域劃分,設計了一套完善的消息傳遞與反饋處理機制,方案中利用Quorum-Based改進型算法確保了分布式節(jié)點的消息一致性。實踐及仿真實驗證明,本方案提高了SCADA系統(tǒng)的消息傳遞效率,降低了分布式系統(tǒng)的運行負載和通信開銷。
中圖分類號: TP274+.2
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.024
中文引用格式: 史耀政,庫流亨. 一種分布式SCADA消息中間件設計方案[J].電子技術應用,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.
A design scheme of distributed message middleware for SCADA system
Shi Yaozheng1,Ku Liuheng2
1.Hohhot Railway Bureau,Hohhot 010020,China; 2.National Computer System Engineering Research Institute of China,Beijing 100083,China
Abstract: With the development of distributed SCADA system in railway traction power supply application, the data transfer between nodes in SCADA system and other heterogeneous systems is faced with the problems such as lower efficiency, and the interface is not uniform. Aiming at this problem, this paper proposes a design scheme of distributed SCADA message oriented middleware based on publish / subscribe model. The scheme uses the N-Tree structure to divide the system message into a logical area, and designs a set of perfect message passing and feedback processing mechanism. In the scheme, the Quorum-Based algorithm is used to ensure the consistency of the distributed nodes. Practice and simulation experiments prove that this scheme improves the message passing efficiency of SCADA system, and reduces the running load and communication overhead of the distributed system.
Key words : SCADA;Quorum;distributed system;middleware

0 引言

    數(shù)據(jù)采集與監(jiān)視控制(Supervisory Control And Data Acquisition,SCADA)系統(tǒng)在鐵路牽引供電及其他工業(yè)控制系統(tǒng)領域占據(jù)著重要地位,可以對現(xiàn)場的運行設備進行實時數(shù)據(jù)監(jiān)視和控制,實現(xiàn)數(shù)據(jù)采集、設備控制、測量分析、參數(shù)調(diào)節(jié)以及各類信號報警等功能。隨著分布式技術在SCADA系統(tǒng)中應用的不斷推廣,SCADA系統(tǒng)各個子系統(tǒng)之間以及與其他異構系統(tǒng)之間的消息傳遞變得更加復雜化、多樣化[1]。

    本文針對分布式環(huán)境下SCADA系統(tǒng)復雜的應用場景,提出了一套高效可靠的分布式消息中間件設計方案。該方案采用N-Tree結構[2]對分布式系統(tǒng)節(jié)點進行消息區(qū)域劃分,各個子區(qū)域的消息根據(jù)應用需求進行收集和傳遞。系統(tǒng)采用經(jīng)典的Publisher-Subscriber(發(fā)布/訂閱)模式設計,產(chǎn)生消息的節(jié)點稱之為Publisher(發(fā)布者),獲取并處理消息的節(jié)點稱之為Subscriber(訂閱者)。訂閱者首先需要對特定的消息區(qū)域進行“消息訂閱”,發(fā)布者會自動將訂閱的消息推送到各訂閱節(jié)點。

    系統(tǒng)采用了特殊設計的分布式一致性算法,確保系統(tǒng)中分布式節(jié)點之間的消息一致性和完整性,同時提高了分布式消息訪問的效率。本文將重點描述消息分發(fā)系統(tǒng)設計和分布式一致性算法設計。

1 分布式SCADA系統(tǒng)

    SCADA系統(tǒng)在鐵路電氣化遠動系統(tǒng)上的應用較早,近些年來隨著中國鐵路的迅猛發(fā)展,也帶動了鐵路電氣化遠動系統(tǒng)向更高的目標發(fā)展。當前我國SCADA系統(tǒng)發(fā)展處于第三階段,即基于分布式計算機網(wǎng)絡以及關系數(shù)據(jù)庫技術的、能夠實現(xiàn)大范圍聯(lián)網(wǎng)的SCADA系統(tǒng)[3]。

    一個典型的鐵路供電調(diào)度SCADA系統(tǒng)結構圖如圖1所示。

ck5-t1.gif

    圖中每一個方框僅標示了一種分布式SCADA系統(tǒng)功能角色,在實際的SCADA系統(tǒng)中,每一種系統(tǒng)角色一般均對應了多臺分布式計算機節(jié)點。每一個系統(tǒng)節(jié)點根據(jù)實際應用情況的不同負責相應的計算任務,完成各自所屬角色的功能。

2 消息分發(fā)系統(tǒng)設計

    (1)角色分類

    在分布式SCADA系統(tǒng)中,按照消息的收集與分發(fā)功能的不同,劃分為兩種角色:消息供應者與消息訂閱者。

    消息供應者負責按照N-Tree結構對系統(tǒng)中的消息進行區(qū)域劃分,并注冊、收集指定區(qū)域的消息,主動推送給訂閱節(jié)點或者等待消息訂閱者查詢。消息訂閱者則根據(jù)實際應用需求,通過指定機器節(jié)點名、區(qū)域名去“訂閱”消息內(nèi)容,在消息訂閱時可以指定是否需要由消息供應者主動推送。

    (2)消息分類與確認

    按照消息緊急程度的不同,可以劃分為兩大類消息:緊急消息和一般消息。這兩大類消息都可以根據(jù)實際應用需求的不同來劃分應用子類,其區(qū)別在于:緊急消息具有“告警”和“正?!眱煞N狀態(tài)且需要消息訂閱者進行“確認”,而一般消息則沒有狀態(tài)區(qū)分且不需要被確認。

    (3)消息緩存與傳遞

    系統(tǒng)針對不同類型消息的應用特點,設計了兩種緩存方式:“鏈式隊列”緩沖和“環(huán)形隊列”緩沖。對于重要程度較高的且需要等待確認的緊急消息,則應采用“鏈式隊列”緩沖模式,確保消息不會丟失;對于一般性消息則可以采用“環(huán)形隊列”緩沖模式,在極端情況下早期的消息可能會丟失,但同樣保證了最新的消息被緩存。

    系統(tǒng)中每一個節(jié)點均需要維護自己的消息緩沖區(qū)和消息訂閱需求列表,消息節(jié)點之間的通信采用TCP/IP網(wǎng)絡傳輸。消息訂閱與傳遞遵循以下步驟:

    (1)消息訂閱者將訂制的消息請求(包括指定優(yōu)先級、消息區(qū)域等)傳遞給消息供應者進行“訂閱”操作;

    (2)消息供應者維護自身節(jié)點和遠程節(jié)點的消息訂閱請求,當產(chǎn)生新的消息時,根據(jù)消息訂閱請求進行篩選;

    (3)消息訂閱者的消息緩沖區(qū)中的內(nèi)容得到更新,可以根據(jù)應用需求定制后續(xù)行為(例如報警、打印、存庫等)。

    消息分發(fā)系統(tǒng)模型見圖2。

ck5-t2.gif

3 分布式一致性算法

    本文提出采用基于“Quorum-Based算法”[4]與消息區(qū)域模型相結合的機制,對分布式消息中間件的數(shù)據(jù)一致性做出保證。這里采用的方案能夠保證分布式SCADA系統(tǒng)中的消息緩沖數(shù)據(jù)“最終一致性”,而不是滿足“強一致性”。所謂“強一致性”指的是當消息訂閱者對系統(tǒng)消息進行獲取或確認時,必須檢查或更新相關節(jié)點的所有消息副本狀態(tài)是否一致,只有保證所有消息副本狀態(tài)一致才能完成讀寫操作。而最終一致性的概念是:在每次獲取或更新數(shù)據(jù)狀態(tài)時,并不保證所有節(jié)點上的數(shù)據(jù)副本均保持一致,而是根據(jù)設定的策略保證部分數(shù)據(jù)是最新的,剩余不同步的副本則由系統(tǒng)內(nèi)部負責自行同步,系統(tǒng)保證在沒有后續(xù)更新的情況下最終返回上一次更新的最新狀態(tài)。

    由于本文設計的分布式一致性算法不屬于強一致性算法,且經(jīng)過了特殊優(yōu)化,因此系統(tǒng)工作的效率較高,且能夠確保分布式SCADA系統(tǒng)的數(shù)據(jù)一致可靠性。本文設計的分布式一致性算法描述如下:

    (1)系統(tǒng)中每一個消息區(qū)域的消息供應者(總數(shù)量V)均可以對訪問(讀)操作和確認(寫)操作進行授權許可,每次授權尚未完成的情況下不可重復授權其他操作,防止出現(xiàn)讀寫沖突的情況;

    (2)每一次消息訪問(讀)操作必須獲得Vr個節(jié)點授權許可才能進行,同樣,每一次消息確認(寫)操作必須獲得Vw個節(jié)點授權才能進行;

    (3)系統(tǒng)中各項操作的授權許可數(shù)量滿足如下關系:

    ck5-gs1-3.gif

    式(1)表示一次讀操作所需授權數(shù)與一次寫操作所需授權數(shù)之和應該大于系統(tǒng)授權總數(shù),這樣可以保證同一份數(shù)據(jù)拷貝不會發(fā)生并行讀寫的情況,因為一旦讀操作獲得了授權,就不可能存在足夠的寫操作授權了,反之亦然。式(2)表示一次寫操作必須獲得半數(shù)以上的授權,確保同一份數(shù)據(jù)拷貝不會同時被2個及以上請求修改,這樣就能保證系統(tǒng)數(shù)據(jù)寫入的串行化和一致性。式(3)屬于優(yōu)化的可選策略,表示一次讀操作所需授權數(shù)應當盡可能小,以提高系統(tǒng)數(shù)據(jù)訪問效率。

    圖3中給出了本系統(tǒng)中描述的分布式SCADA系統(tǒng)消息供應者與消息訂閱者之間的訪問關系。

ck5-t3.gif

    在圖3中,消息供應者會對某個消息邏輯區(qū)域提供訂閱功能,而這樣的節(jié)點一般可以存在多個,提供相同消息區(qū)域供應的多個節(jié)點構成了分布式節(jié)點群集。當消息供應者需要訪問或確認某區(qū)域消息時,需要遵循本文描述的分布式一致性算法規(guī)則。而SCADA系統(tǒng)中的消息區(qū)域狀態(tài)與各消息供應者之間的同步,則由系統(tǒng)在操作完成后自動進行。

4 實踐結果分析

    本文利用GT-ITM提供的Transit-Stub(TS)模型[5],構建一個分層結構網(wǎng)絡對此消息中間件進行性能測試。

    仿真系統(tǒng)根據(jù)鐵路SCADA系統(tǒng)實際應用需求劃分角色區(qū)域,每個區(qū)域有多個系統(tǒng)節(jié)點。假設消息供應者每200 ms新增一條消息,每條消息為128 B的數(shù)據(jù)包,每一個消息訂閱者都訂閱所有區(qū)域消息以模擬最大負載情況。通常,服務器節(jié)點既充當消息供應者又充當消息訂閱者。仿真實驗測試在不同應用規(guī)模下的系統(tǒng)負載情況。實驗結果如表1所示。

ck5-b1.gif

    從表1中可以看出,相同消息供應者的情況下,消息訂閱者數(shù)量的增加會導致網(wǎng)絡吞吐量線性增長,但是增量不會呈現(xiàn)倍數(shù)關系。這說明本方案的設計有效地降低了相同節(jié)點上多個消息訂閱者的消息傳遞負載。消息供應者數(shù)量的增加會使得網(wǎng)絡吞吐量和CPU負載呈現(xiàn)比率上升趨勢,這是因為消息供應者需要維護和更新各消息訂閱者隊列,實時推送消息內(nèi)容。當消息供應者和消息訂閱者的數(shù)量按照同等規(guī)模擴大時,系統(tǒng)表現(xiàn)出穩(wěn)定的線性增長趨勢。這表明系統(tǒng)能夠穩(wěn)定有效地控制分布式消息傳遞,具有良好的運行效率。

5 結束語

    本文針對鐵路牽引供電SCADA系統(tǒng)中消息傳遞效率較低、接口復雜不統(tǒng)一的問題,設計并實現(xiàn)了一套通用的消息中間件方案。該方案對系統(tǒng)角色、消息內(nèi)容進行區(qū)域劃分,對消息傳遞的機制進行了改進,利用Quorum-Based改進算法確保了分布式節(jié)點之間的消息一致性。仿真實驗及實踐結果表明,本方案設計的消息中間件能夠適應不同規(guī)模的SCADA系統(tǒng)應用,具有良好的可靠性和運行效率。

參考文獻

[1] 張平.我國高速鐵路牽引供電SCADA系統(tǒng)的分析與探討[J].鐵道建筑技術,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].新課程學習(學術教育),2010(10):30-31.

[4] 熊庭剛,盧正鼎,張家宏,等.基于Quorum系統(tǒng)的分布式訪問控制框架研究[J].計算機科學,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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。