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