李 丹,劉 惠,關 一
(國家海洋技術中心,天津 300112)
消息中間件在船載監(jiān)控系統(tǒng)中的應用研究
李 丹,劉 惠,關 一
(國家海洋技術中心,天津 300112)
消息中間件技術是近幾年來比較熱門的技術。采用面向服務體系的架構與消息中間件相結合的技術,在船載監(jiān)控系統(tǒng)中設計一種標準的集成框架結構,使用異步消息傳送機制,保證消息可靠同步的同時,降低分布式系統(tǒng)各部分之間的耦合度,提高船載監(jiān)控系統(tǒng)集成的可擴展性及系統(tǒng)展示的多樣性。
消息中間件;面向服務體系的架構;監(jiān)控系統(tǒng);企業(yè)服務總線
近幾年來,海洋災害頻發(fā),沿海污染造成的生態(tài)環(huán)境破壞越來越嚴重,使得我國越來越重視海洋監(jiān)測系統(tǒng)的建設?!熬盼濉逼陂g的海洋監(jiān)測高技術研究,已取得了一批成果,研制了一批海洋監(jiān)測關鍵儀器設備。在船舶這樣的特殊環(huán)境中,工作人員是有限的,所以需要船載監(jiān)控集成系統(tǒng)將各類設備集成到一起,更好地進行監(jiān)測管理。在監(jiān)控設備多的情況下如何很好地將監(jiān)控信息展示出來是集成系統(tǒng)需要考慮的問題。而且對于不同的人員,他們的關注點也是不同的,所以需要根據(jù)他們關注的不同,顯示不同的信息 ,也就是說要有多種界面顯示形式,多種界面在顯示時信息必須同步。隨著信息化的不斷深入,現(xiàn)在的船舶配有船務管理系統(tǒng),視頻監(jiān)控系統(tǒng)等等各種應用系統(tǒng),如何將各種孤立的系統(tǒng)有機地結合起來,并能夠方便地提供不同需求的應用顯示界面,以實現(xiàn)工作效率的最大化,也是現(xiàn)在船載集成系統(tǒng)所要解決的技術難點。
本文在船載集成系統(tǒng)中引入基于SOA的架構和服務總線的技術——意在設計一種標準框架,將船舶上的各類儀器設備和船務管理系統(tǒng)、視頻監(jiān)控系統(tǒng)等各類系統(tǒng)通過服務總線方式良好地集成于船載集成系統(tǒng)平臺,以便能夠提供多樣化的表現(xiàn)形式,大大提高船載系統(tǒng)的集成效率。
面向服務的體系結構 (Service-Oriented Architecture,SOA)是一種系統(tǒng)框架,最早是由Gartner公司在1996年為了實現(xiàn)每個IT系統(tǒng)各自的自由發(fā)展空間且又能隨需共享而提出的。Service-architecture.com將SOA定義為:“本質上是服務的集合。服務間彼此通信,這種通信可能是簡單的數(shù)據(jù)傳送,也可能是兩個或更多的服務協(xié)調進行某些活動。服務間需要某些方法進行連接。所謂服務就是精確定義、封裝完善、獨立于其他服務所處環(huán)境和狀態(tài)的函數(shù)。”
企業(yè)服務總線(Enterprise Service Bus,ESB)的概念是從SOA發(fā)展而來的一種新型系統(tǒng)集成模式。企業(yè)服務總線本質上是一種可以提供可靠的、有保證的消息服務的中間件技術。ESB中間件產品利用的是Web服務標準和消息中間件協(xié)議接口,例如:IBM的 WebSphere MQ,Tibco的Rendezvous和Sonic Software的SoniCMQ等。ESB產品的共有特性包括:連接異構的信息系統(tǒng)、利用Web服務描述語言接口封裝消息中間件協(xié)議,以及在消息中間件傳輸層上傳送簡單對象應用協(xié)議(SOAP)傳輸流的能力。
消息中間件(Message Oriented Middleware,MOM)利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于消息數(shù)據(jù)通信來實現(xiàn)分布式系統(tǒng)集成。
消息中間件適用于需要高可靠的數(shù)據(jù)傳送的分布式環(huán)境。采用消息中間件后,系統(tǒng)中不同對象之間可以通過傳遞消息來激活對方的事件,完成相應的操作,它能夠在不同平臺之間進行通信,常被用來屏蔽掉各種平臺及協(xié)議之間的特殊性,實現(xiàn)應用程序之間的協(xié)同。因此,其優(yōu)點在于能夠在客戶和服務器之間提供同步和異步的連接,并且在任何時刻都可以將消息進行傳送或者存儲轉發(fā),遠遠優(yōu)越于過程調用。
本文在船載集成系統(tǒng)設計中采用了服務總線技術,采用異步消息傳送機制,通過總線路由發(fā)布服務組件、響應服務請求、調用響應服務等功能實現(xiàn),使船載集成系統(tǒng)具有很好的伸縮性。采用服務總線的架構設計系統(tǒng)時,將船載集成系統(tǒng)的基礎功能模塊所提供的功能封裝成服務,發(fā)布到服務總線上,集成系統(tǒng)在需要某個服務時,發(fā)送服務請求消息到服務總線,服務總線根據(jù)消息中的服務描述信息找到相應服務,并執(zhí)行服務處理,處理完成后將結果再發(fā)送到總線,集成系統(tǒng)在從總線上取出結果。
圖1AMTSB體系結構圖
圖1為AMTSB中的主要功能模塊,實際上每個功能模塊又包含多個子模塊,下面將介紹主要功能模塊的設計。
總線服務器負責接收服務請求,返回服務響應;保證服務消息傳輸和服務適配,實現(xiàn)各類異構應用之間的互操作??偩€上包含消息和消息處理函數(shù)的接口、消息處理的基類,還有發(fā)布訂閱、詢問應答、延遲消息處理等方法。
分配器是均衡負載、提高系統(tǒng)工作效率的關鍵。起到了隊列管理器的作用。它包括兩個隊列,一個是消息隊列,用來存放消息;一個是處理隊列,用來存放處理消息函數(shù)的地址。
分配器的工作過程是當有消息通過傳輸管理器的封裝后到達總線上,監(jiān)聽器監(jiān)聽到總線上收到消息后觸發(fā)分配器,分配器查找是否有可以工作的節(jié)點,如果有再通過傳輸管理器進行后續(xù)過程;如果沒有可用節(jié)點則等待一段時間后繼續(xù)查找。
在消息的傳輸過程中任何的操作都需要有一個線程去執(zhí)行操作。傳輸管理器可以設置用于工作的線程數(shù)量,在工作過程中可以改變線程數(shù)量。然而傳輸管理器最主要的功能是發(fā)送和接收消息。在傳輸管理器中消息的發(fā)送和接收是通過消息隊列實現(xiàn)的。本文使用微軟消息隊列 (Microsoft Message Queue,MSMQ)來實現(xiàn)隊列的創(chuàng)建與刪除,消息的發(fā)送與接收。之所以選用MSMQ,是因為它是微軟公司的主流通訊技術之一。MSMQ采用異步傳輸模式,允許通信的雙方在離線的狀態(tài)下進行通信,它提供了一整套易于使用的API,并且已經集成到.NET框架中,Windows 2000及以上的操作系統(tǒng)都可以方便地使用它。在AMTSB的框架中,支持異步通信是非常重要的一點,因為在系統(tǒng)的運行過程中,并不能保證通信的另一端處于可用的狀態(tài)。
消息的接收是從接收隊列中取出可用的第一條消息,消息成功取出后觸發(fā)消息接收事件,這是一個消息接收的完整過程。在這個過程中如果有任何意想不到的錯誤,傳輸管理器會根據(jù)設置好的最大重傳次數(shù)重復進行上述操作,當?shù)竭_最大重傳次數(shù)而還沒執(zhí)行完上述過程時,將從接收隊列中取得的消息發(fā)送到失敗隊列中。
本文討論的發(fā)布訂閱管理器是基于消息類型的發(fā)布訂閱管理器,在這種模式下,當發(fā)布訂閱管理器收到一個消息時,不對消息的內容進行解析,只關注消息的對象類型,然后根據(jù)訂閱者訂閱的消息對象類型把對應的消息發(fā)送到訂閱者那里。
發(fā)布訂閱管理器的實現(xiàn)需要一個記錄訂閱信息的記錄表,只有獲得訂閱信息表,發(fā)布訂閱管理器才知道某個消息類型的所有訂閱者。所以訂閱信息記錄表是最為重要的。由于本文采用的是消息隊列的形式,所以所有的訂閱消息都發(fā)送到一個專門用來存放訂閱信息的隊列中。通過SubMsgRegisterRecord類實現(xiàn)了訂閱消息存儲隊列的創(chuàng)建,并且實現(xiàn)了訂閱消息的入隊列和出隊列,提供功能接口給上層類。PubSubManage類通過API調用SubMsgRegisterRecord類的方法實現(xiàn)了獲取訂閱信息表,消息的訂閱和退訂。
日志管理是指AMTSB系統(tǒng)在運行時,它將具體傳送的消息數(shù)據(jù)信息,系統(tǒng)的運行步驟和報警、錯誤等信息到記錄到日志中。
安全管理是現(xiàn)代網絡系統(tǒng)的不可缺少的組成部分,特別是消息中間件,安全管理更是其中重要的功能。AMTSB的安全管理包括用戶數(shù)據(jù)的加密/解密、用戶的身份認證等。
AMTSB使用了 Spring.Net,使用控制反轉(IoC,Inversion of Control),把傳統(tǒng)上由程序代碼直接操控的對象的調用權交給容器,通過容器來實現(xiàn)對象組件的裝配和管理。AMTSB中使用依賴注入的方式來實現(xiàn)IoC。依賴注入意味著一個對象的依賴關系可以通過外部“注入”不需要為對象查找任何內容——它只是簡單地為依賴關系聲明了私有字段,允許它們能夠被外部提供,提供的方式可以是構造函數(shù)或者通過屬性的設置器(Setter)。
在發(fā)布/訂閱模式中,使用MSMQ把訂閱信息表存儲在一個消息隊列中。消息的發(fā)布者不需要知道誰在接受消息,他們之間只是共享抽象的服務定義而不是具體的端點信息,所以兩者之間是松耦合的,當發(fā)布者發(fā)送消息時,所有訂閱該消息的訂閱者都會收到消息,發(fā)生相應的變化。
在詢問-應答模式中,服務消費者發(fā)出服務請求,服務提供者監(jiān)聽到服務請求后,查找是否有匹配的服務,如果有則返回響應消息。AMTSB中設計的詢問-應答模式使用單向消息通道,即只傳遞服務請求或服務響應消息。詢問-應答模式的機制是通過隊列,按照先進先出的原則實現(xiàn)的。
AMTSB中最主要的是采用了服務消息的異步代理調用機制,它的實現(xiàn)原理如下:服務的使用者有兩個線程,一個線程用來發(fā)送請求,另一個線程用來接收響應。這樣做的好處是使用者不必阻塞線程以等待響應,而且可以同時執(zhí)行其他工作。因此,使用者對花多長時間執(zhí)行服務不太敏感。在ATMSB中使用消息隊列來發(fā)送請求和接收響應。這一對消息隊列擔當使用者用來調用服務的單個地址。其具體工作步驟如下:
(1)使用者發(fā)送服務請求到請求隊列。釋放發(fā)送請求的線程,使用者可以執(zhí)行其他工作。
(2)每個服務提供者都可以看到請求隊列中的使用者,分配器確定哪一個服務提供者能夠接收消息,并確保只有一個服務提供者接收消息。
(3)獲勝的服務提供者從請求隊列中接收消息。
(4)服務提供者執(zhí)行服務。
(5)服務提供者發(fā)送服務響應到應答隊列中。釋放服務提供者線程,服務提供者可以執(zhí)行其他的工作(例如等待另一個請求)。
(6)使用者的偵聽器線程接收包含服務響應的消息。
AMTSB采用異步消息機制,一個應用通過AMTSB向其他應用發(fā)出一個請求,請求的應用程序不必正在運行或是可到達的,無論何時,只要請求的應用程序再次可達,就會收到請求。在可恢復模式中,如果在文件傳輸?shù)倪^程中由于某種原因產生的網絡故障使傳輸中斷,那么故障排除后AMTSB可以根據(jù)可靠隊列中保存的信息對文件失敗點進行重傳。對傳輸?shù)南⑹褂脙?yōu)先級管理,滿足不同需求的消息的各種傳輸要求。具有超時管理的功能,避免資源浪費。
AMTSB使服務功能和數(shù)據(jù)表現(xiàn)相分離,這樣做有多個顯著的優(yōu)勢:
(1)各個服務功能之間耦合度低、可擴展性強。當有新的設備需要集成到系統(tǒng)時,只要在AMTSB中增加一個服務,就可以接入系統(tǒng),而不影響其他的功能。
(2)多樣性個性化展示。在表現(xiàn)層上可以有多種形式展現(xiàn),如:Web形式,F(xiàn)orm形式,或是把同一個信息以不同的形式展現(xiàn)等等。
(3)界面可定制性,開發(fā)人員可根據(jù)用戶需求開發(fā)具有個性的界面。
(4)具有通用性,可以很簡單的移植到其他船只上。減少因為重復開發(fā)系統(tǒng)帶來的時間和金錢的浪費,同時也提高了工作效率。
(5)用戶功能需求管理模式。實現(xiàn)為不同的用戶提供其關注的功能服務。例如:船員登錄該系統(tǒng)時就可以查看航行的一些信息而科考人員可以查看儀器設備狀態(tài)。
(6)充分利用船載網絡資源實現(xiàn)分布式數(shù)據(jù)采集與處理功能。
(7)有利于促進儀器設備數(shù)據(jù)采集接口規(guī)范的形成,實現(xiàn)即插即用能力。
總之,采用異步消息傳輸服務總線的架構開發(fā)的船載集成系統(tǒng)降低了各組件之間的耦合度,提高了復用率,更主要的是能夠有多種不同的表現(xiàn)形式。
本文實現(xiàn)了在“向陽紅08”上的船載海洋生態(tài)環(huán)境現(xiàn)場數(shù)據(jù)采集監(jiān)測系統(tǒng)中應用服務總線的體系架構,通過異步消息服務總線(AMTSB)將表現(xiàn)層與業(yè)務層無縫集成,實現(xiàn)一個應用服務系統(tǒng)多種表現(xiàn)形式。例如:對于總協(xié)調人看到的是所有設備的監(jiān)控界面;對于各科研設備的操作員看到的是針對某臺設備的專項監(jiān)控;而對于船長他們只是關心船舶航行的GPS、電羅經等等設備的數(shù)據(jù);對一般人員只是通過WEB的方式登錄到系統(tǒng)瀏覽信息、下載數(shù)據(jù)。因此面對不同的使用用戶,系統(tǒng)通過AMTSB架構方式,將已封裝的不同的服務,展示給不同的用戶,大大提高了船載監(jiān)控系統(tǒng)集成的可擴展性及系統(tǒng)展示的多樣性。如圖2所示。
圖2 船載集成系統(tǒng)體系架構
在系統(tǒng)平臺上,本系統(tǒng)采用Windows server 2003作為底層操作系統(tǒng),SQL Server 2005數(shù)據(jù)庫作為信息存儲數(shù)據(jù)庫,系統(tǒng)編程環(huán)境采用Microsoft Visual Studio 2005。
船載監(jiān)控系統(tǒng)的主要功能是根據(jù)航次任務的總體目標,編制待測站位信息,對任務和站位進行管理;監(jiān)視GPS、電羅經、船用氣象儀、姿態(tài)儀、航程計等通用儀器設備的運行狀態(tài);當船舶到達待測站位后,向各類科研儀器發(fā)出工作指令,監(jiān)視各類科研設備的運行狀態(tài)并將測量數(shù)據(jù)錄入數(shù)據(jù)庫;提供測量數(shù)據(jù)的查詢下載和設備告警信息的查詢下載功能,以此實現(xiàn)資源共享。
船載集成系統(tǒng)整體架構如圖3所示,在傳統(tǒng)的三層架構中增加了消息總線層。
異步消息服務總線(AMTSB)是整個系統(tǒng)架構中最為重要的部分,它降低了業(yè)務處理層與數(shù)據(jù)展示層的耦合度,使表現(xiàn)形式靈活多樣。AMTSB也可以起到負載均衡的作用。表現(xiàn)層的頻繁數(shù)據(jù)交互不是直接與應用服務器進行,而是通過AMTSB在應用服務器空閑時對其進行訪問,表現(xiàn)層再通過AMTSB獲得數(shù)據(jù),避免因大批量并發(fā)操作導致的系統(tǒng)崩潰,從而保證應用服務器正常工作。
圖3 船載集成系統(tǒng)系統(tǒng)架構圖
圖4 配置設備流程
下面以某個串口打開操作為例說明異步消息總線在船載集成系統(tǒng)中的對消息的處理流程。如圖4所示,用戶在Web配置界面中,點擊打開分析儀串口,這時相關信息被封裝成請求消息(Request)發(fā)送到AMTSB,AMTSB經過解析找到處理該消息的應用服務器,應用服務器首先查找設備配置緩存,如果該設備串口沒有被打開,則調用串口驅動層接口,并將當前串口操作的結果信息同步配置應用服務器緩存。Web配置界面再從AMTSB獲得串口打開結果消息(Response)。在集成系統(tǒng)的其他監(jiān)控模式中,定時向AMTSB發(fā)送讀取設備狀態(tài)請求消息 (Request),AMTSB查詢設備狀態(tài)緩存獲取設備狀態(tài)信息,監(jiān)控界面再從AMTSB中取出設備狀態(tài)信息(Response),同步更新顯示。通過以上消息流向的展示、消息處理流程說明,證實AMTSB架構體系引入船載監(jiān)控平臺可以真正實現(xiàn)業(yè)務處理層與數(shù)據(jù)展示層的隔離,便于實現(xiàn)多種監(jiān)控界面表現(xiàn)形式,易于設備擴展與業(yè)務需求的擴充,利于研發(fā)團隊同步開發(fā)。
異步消息服務總線很好地把監(jiān)控系統(tǒng)中的各類系統(tǒng)和科研設備連接起來,對采集到的數(shù)據(jù)做統(tǒng)一的分析處理,有效地降低了系統(tǒng)在各部分之間的耦合度,使系統(tǒng)具有良好的靈活性、開放性,能夠有效地減少系統(tǒng)異構和需求變化帶來的影響。為船載監(jiān)控系統(tǒng)集成的可擴展性及系統(tǒng)展示的多樣性提供了堅實的技術手段。
[1]龍麗萍.ESB_SOA架構在企業(yè)應用集成中的研究和應用[D].長沙:中南大學,2009.
[2]杜萬雅.基于ESB的SOA框架的設計與實現(xiàn)[D].北京:北京交通大學,2008.
[3]James Snell使用企業(yè)服務總線簡化集成體系結構[OL].2005[2005-11-01].http://www.ibm.com/developerworks/cn/webservices/ws-esbia/.
[4]周澤華,黃濤,李京.消息中間件管理器的設計和實現(xiàn)[J].計算機研究與發(fā)展,2002,39(3):318-323.
[5]Bunge R.An Operational Framework for Service Oriented Architecture Network Security[J].Hawaii International Conference on System Sciences,2008(1):312.
Application of Message Oriented Middleware in Ship Monitoring System
LI Dan,LIU Hui,GUAN Yi
(National Ocean Technology Center,Tianjin 300112,China)
In recent years,message oriented middleware (MOM)becomes more and more popular.The service oriented architecture(SOA)combined with MOM architecture is applied in ship monitoring system to design a standard integrated architecture.The asynchronous message is used to assure the reliability and reduce the coupling between components of the distributed system.At the same time,ship monitoring system could improve its integrated expansibility and diversity of display.
message oriented middleware;Service-Oriented Architecture;monitoring system;Enterprise Service Bus
P71,TP311
B
1003-2029(2011)02-0113-05
2011-04-15
國家高技術研究發(fā)展計劃(863計劃)資助項目(2007AA092101)