文獻標識碼: 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.
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ù)調節(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)采用經典的Publisher-Subscriber(發(fā)布/訂閱)模式設計,,產生消息的節(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ā)展處于第三階段,,即基于分布式計算機網絡以及關系數(shù)據(jù)庫技術的,、能夠實現(xiàn)大范圍聯(lián)網的SCADA系統(tǒng)[3]。
一個典型的鐵路供電調度SCADA系統(tǒng)結構圖如圖1所示,。
圖中每一個方框僅標示了一種分布式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ū)域名去“訂閱”消息內容,,在消息訂閱時可以指定是否需要由消息供應者主動推送,。
(2)消息分類與確認
按照消息緊急程度的不同,可以劃分為兩大類消息:緊急消息和一般消息,。這兩大類消息都可以根據(jù)實際應用需求的不同來劃分應用子類,,其區(qū)別在于:緊急消息具有“告警”和“正常”兩種狀態(tài)且需要消息訂閱者進行“確認”,,而一般消息則沒有狀態(tài)區(qū)分且不需要被確認,。
(3)消息緩存與傳遞
系統(tǒng)針對不同類型消息的應用特點,設計了兩種緩存方式:“鏈式隊列”緩沖和“環(huán)形隊列”緩沖,。對于重要程度較高的且需要等待確認的緊急消息,,則應采用“鏈式隊列”緩沖模式,確保消息不會丟失,;對于一般性消息則可以采用“環(huán)形隊列”緩沖模式,,在極端情況下早期的消息可能會丟失,,但同樣保證了最新的消息被緩存。
系統(tǒng)中每一個節(jié)點均需要維護自己的消息緩沖區(qū)和消息訂閱需求列表,,消息節(jié)點之間的通信采用TCP/IP網絡傳輸,。消息訂閱與傳遞遵循以下步驟:
(1)消息訂閱者將訂制的消息請求(包括指定優(yōu)先級、消息區(qū)域等)傳遞給消息供應者進行“訂閱”操作,;
(2)消息供應者維護自身節(jié)點和遠程節(jié)點的消息訂閱請求,,當產生新的消息時,根據(jù)消息訂閱請求進行篩選,;
(3)消息訂閱者的消息緩沖區(qū)中的內容得到更新,,可以根據(jù)應用需求定制后續(xù)行為(例如報警、打印,、存庫等),。
消息分發(fā)系統(tǒng)模型見圖2。
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)內部負責自行同步,,系統(tǒng)保證在沒有后續(xù)更新的情況下最終返回上一次更新的最新狀態(tài)。
由于本文設計的分布式一致性算法不屬于強一致性算法,,且經過了特殊優(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ù)量滿足如下關系:
式(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)消息供應者與消息訂閱者之間的訪問關系,。
在圖3中,,消息供應者會對某個消息邏輯區(qū)域提供訂閱功能,而這樣的節(jié)點一般可以存在多個,,提供相同消息區(qū)域供應的多個節(jié)點構成了分布式節(jié)點群集,。當消息供應者需要訪問或確認某區(qū)域消息時,需要遵循本文描述的分布式一致性算法規(guī)則,。而SCADA系統(tǒng)中的消息區(qū)域狀態(tài)與各消息供應者之間的同步,,則由系統(tǒng)在操作完成后自動進行。
4 實踐結果分析
本文利用GT-ITM提供的Transit-Stub(TS)模型[5],,構建一個分層結構網絡對此消息中間件進行性能測試,。
仿真系統(tǒng)根據(jù)鐵路SCADA系統(tǒng)實際應用需求劃分角色區(qū)域,每個區(qū)域有多個系統(tǒng)節(jié)點,。假設消息供應者每200 ms新增一條消息,,每條消息為128 B的數(shù)據(jù)包,每一個消息訂閱者都訂閱所有區(qū)域消息以模擬最大負載情況,。通常,,服務器節(jié)點既充當消息供應者又充當消息訂閱者。仿真實驗測試在不同應用規(guī)模下的系統(tǒng)負載情況,。實驗結果如表1所示,。
從表1中可以看出,相同消息供應者的情況下,,消息訂閱者數(shù)量的增加會導致網絡吞吐量線性增長,,但是增量不會呈現(xiàn)倍數(shù)關系。這說明本方案的設計有效地降低了相同節(jié)點上多個消息訂閱者的消息傳遞負載,。消息供應者數(shù)量的增加會使得網絡吞吐量和CPU負載呈現(xiàn)比率上升趨勢,,這是因為消息供應者需要維護和更新各消息訂閱者隊列,實時推送消息內容,。當消息供應者和消息訂閱者的數(shù)量按照同等規(guī)模擴大時,,系統(tǒng)表現(xiàn)出穩(wěn)定的線性增長趨勢。這表明系統(tǒng)能夠穩(wěn)定有效地控制分布式消息傳遞,具有良好的運行效率,。
5 結束語
本文針對鐵路牽引供電SCADA系統(tǒng)中消息傳遞效率較低,、接口復雜不統(tǒng)一的問題,設計并實現(xiàn)了一套通用的消息中間件方案,。該方案對系統(tǒng)角色,、消息內容進行區(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.