
摘要:電信機房用的動力環境監控系統需要有很高的性能及可擴展性,電信部門對于系統互聯協議有自己的標準,但這些協議僅針對系統作為一個整體與其他系統互操作而設計,沒有充分考慮大型系統的架構,沒有定義與水平可擴展性等相關的內容。本文旨在研究設計一種消息傳輸協議,以滿足動力環境監控系統內部各子系統之間的數據交換要求。
關鍵詞:分布式動力環境監控系統;消息傳輸;協議;消息中間件
1 研究背景
分布式集中監控系統廣泛應用于電力、通信等行業。這類系統通常很龐大,有很多的子系統,比如數據采集子系統、數據處理子系統、告警服務子系統、備份子系統等,這些子系統彼此之間需要通信和數據交換。出于系統擴容能力及對其他系統的接入能力的考慮,需要一種松散耦合的接口;并且由于對性能要求高,在協議設計時應盡可能考慮支持異步操作。
舉例:發生“告警雪崩”的時候,可能會有數千甚至于上萬條告警,需要在短時間內被處理。如果采用中間件來傳輸,勢必導致整個系統處于掛起狀態:系統忙于處理傳輸告警而導致監控界面無法響應操作員的指令,不能及時處理新的數據。
電信部門對于系統互聯協議有自己的標準,但這些協議僅針對系統作為一個整體與其他系統互操作而設計,沒有定義與水平可擴展性等相關的內容,直接使該標準將顯著增加實現的難度。
鑒于以上原因,研究設計一套適用于監控系統的消息傳輸協議是必須的。本文所討論的協議借鑒了MOM的架構,但又除去了MOM的復雜性,再在消息處理方式上盡可能使用異步方式,大大地提高了性能;而在協議實現方面使用分層實現,即分為原語層、消息傳輸層,以API共享庫的形式實現。使用協議的各子系統只需調用原語層接口,消息傳輸層可以TCP/IP、MOM等技術實現。這樣一來,可以根據實際情況選取底層傳輸技術。
2 系統的總體架構
系統總體結構同使用MOM的情形相同,如圖1所示。消息服務器是整個消息傳遞系統的中心,一般只需一個,可以增加備機避免單點失效。對特別大的系統可設多個,并設單獨的通道以便在消息服務器間路由消息。圖中除消息服務器外的其他系統均可以有多個,以便擴容之需。
每個連接到消息服務器的系統都在消息服務器上開設一個單獨的隊列來緩存消息。
數據采集服務器。擔負采集現場FSU的數據的任務,負載受擴容的影響最大。提供操作臺要查看的實時數據,產生狀態變化事件,歷史數據等消息。
告警服務器。根據數據采集服務器的狀態變化事件執行告警邏輯。由于數據采集服務器負擔很重,系統中又配置了很多邏輯告警,于是為了減輕數據采集服務器的負擔,將告警邏輯移到單獨的子系統上執行。
數據存儲服務器。執行存儲數據的動作。數據入庫是一類非常耗時的工作,為了避免執行入庫阻塞其他任務,盡可能采取異步作業的形式以提升性能。利用消息服務器的隊列的緩存功能,數據存儲服務器可以以一個合適的速率將短期內產生的大量數據存入關系數據庫。
C接口接入服務器。提供規范[1]要求的對外部系統的接口。
操作臺。執行日常的四遙、告警處理、查詢等功能。
系統監視器。監視系統運行,提供疹斷信息??捎脕肀O測消息發送的情況。
其他子系統。
3 主要原語
3.1 管理原語
訂閱/退訂消息原語。訂閱感興趣的公告消息。消息體需包括要訂閱的消息標簽、數據ID清單或設置訂閱/退訂全部選項。消息服務器為每一客戶端維護一個訂閱清單,據此清單處理訂閱;數據的提供者將負責公告被訂閱的數據,如數據采集服務器公告事件,告警服務器訂閱事件并公告告警,操作臺訂閱并顯示告警。
配置變更原語。在運行中的系統仍需在不停止生產的情況下變更配置,因此在業務操作臺處理完配置變更之后,由處理的那臺業務操作臺發出變更消息,通知各子系統應用新的配置。因此,任一子系統都必須訂閱此類消息。
3.2 事件通知原語
數據采集服務器在檢測到監控量發生變化,達到設定的觸發條件時,發出狀態變更事件,通知需要用到相關事件的子系統。告警服務器是事件通知的主要使用者之一,其二是用于與外部系統聯動。
3.3 告警原語
當事件足以觸發一條告警時,由告警服務器發出,主要由操作臺接收,也用于聯動。
3.4 數據請求/響應原語
數據請求/響應原語可以公告或點對點的方式發出,主要用于下列情形:
操作臺查看實時監控數據。由于操作臺的界面一次能顯示的數據非常有限,因此只需要請求要顯示的數據即可,不必發送全部的數據到監控臺。監控臺根據配置信息找到所要數據屬于哪個數據采集服務器,再發出數據請求原語。原語內容應包括消息標簽、接收者標識、接收者業務系統類型。接收者標識不應入配置數據庫。如果操作臺初次啟動,可能沒有接收者標識信息,這時應以公告方式發出數據請求,待得到響應之后,從響應信息中得到接收者標識;得到標識以后的請求應以點對點方式發出,以減少公告方式帶來的性能損失。接收者標識不入配置數據庫,這樣服務器出故障時可以用備機快速替代。
操作臺查看當前活動的告警。如果操作臺在告警發出之后啟動,就再也收不到通知;而使用數據請求原語可從告警服務器取得已經發過通知的當前活動的告警。
告警服務器查詢數據采集服務器,查詢與告警邏輯相關監控量的狀態。如果狀態已經公告過就不會再次公告,通過此原語可以使當告警服務器在通告發出之后啟動時仍然可以得到監控量的狀態 ;如果數據采集服務器曾經停機,告警可能已經在停機期間解除或者產生,因此數據采集服務器不可能再發出解除告警的通知,使用數據請求原語可以執行數據同步(對于操作臺查看實時數據的情形同樣如此)。
3.5 操作原語
操作原語主要用于遙控被監控的對象,或遙調其運行參數。一次成功的操作包括:查詢被操作對象—發出操作指令—檢查操作結果。查詢使用公告方式,發操作指令及檢查結果用點到點方式。
4 結束語
通過本協議,使得系統之間的耦合度降到最低,擴容只需增加機器即可,擴容能力幾乎不受限制,接入方法簡便。異步數據處理方式能極大地提高數據吞吐量;事件通知方式僅發送發生變更的數據,將需要發送的數據減至最少,輔以同步功能消除數據的不一致性;子系統標識動態查詢方式可以方便地替代故障機而無需整個系統停機;配置變更通知可使系統配置變更時無需重新啟動。協議可以多種技術實現,更換不同的技術只需更換與協議的程序庫,無需修改系統。因此,該協議充分考慮到了大型系統的架構,能較好地適應省一級大型分布式動力環境監控系統。
參考文獻
[1]中國移動通信有限公司網絡部.中國移動通信動力及環境集中監控系統技術規范:C接口規范:3.5.0版,2009.
[2]中國移動通信有限公司網絡部.中國移動通信動力及環境集中監控系統技術規范:B接口規范:1.0.0版,1996.
[3]王常力,羅安.分布式控制系統(DCS)設計與應用實例[M].北京:電子工業出版社,2004.