消息代理(Message Broker)是一種在數(shù)據(jù)源與目的地之間移動數(shù)據(jù)使信息處理流暢的軟件技術(shù),數(shù)據(jù)源與目的地包括已有的應(yīng)用、文件、數(shù)據(jù)庫、對象(如CORBA、COM)、硬拷貝輸出及Web客戶端等。消息代理技術(shù)實現(xiàn)之后的產(chǎn)品形式就是一種中間件。
作為面向消息的中間件(MOM)的一部分,消息代理中間件在企業(yè)應(yīng)用集成(Enterprise Application Integration ,EAI)中的作用日趨明顯。分布式環(huán)境下,業(yè)務(wù)單位四處散布,包羅萬象的應(yīng)用運行在不同的軟、硬件平臺上,消息代理中間件主要提供應(yīng)用集成所必須的數(shù)據(jù)的遞送、收集、翻譯、過濾、映射和路由等功能,屏蔽不同的硬件平臺、數(shù)據(jù)庫、消息格式、通信協(xié)議之間的鴻溝與差異,提供應(yīng)用到應(yīng)用之間的高效、便捷的通信能力。
消息代理典型的應(yīng)用環(huán)境包括:
-
有許多程序,特別是混合多種語言;
-
多個數(shù)據(jù)源以及/或異構(gòu)的數(shù)據(jù)庫;
-
應(yīng)用的生命周期期望在3年以上
-
處理的高吞吐量,復(fù)雜的系統(tǒng)設(shè)計
-
在客戶/服務(wù)器天地中存在"老的"或者已有的應(yīng)用
-
行將進(jìn)行系統(tǒng)的增強、增加和修改
-
復(fù)雜的應(yīng)用間的通信既有企業(yè)內(nèi)部的通信,又有企業(yè)間的通信
Gartner Group根據(jù)調(diào)查統(tǒng)計,企業(yè)在開發(fā)應(yīng)用的過程中,30%-40%的費用都浪費在開發(fā)和維護(hù)與企業(yè)業(yè)務(wù)邏輯無關(guān)的各種接口上。隨著企業(yè)或企業(yè)間應(yīng)用數(shù)量上的增加,應(yīng)用間的通信接口日益增多,不同的平臺、不同的語言與技術(shù)所帶來的難度成倍的增長。1996年,Gartner Group就預(yù)測:消息代理中間件由于降低了企業(yè)/機構(gòu)內(nèi)部應(yīng)用的復(fù)雜交互,將變得和數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)倉庫一樣重要。
歸納起來,基于消息代理中間件實現(xiàn)應(yīng)用集成的主要理由有以下幾個方面:
-
通過點對點的應(yīng)用接口完成應(yīng)用的集成復(fù)雜度高,花費大,嚴(yán)重地限制企業(yè)的靈活性。消息代理中間件如同一個軟件的HUB,連接需要交互的各個應(yīng)用系統(tǒng),減少了應(yīng)用系統(tǒng)接口的數(shù)量、相互的技術(shù)依賴性。
-
應(yīng)用與應(yīng)用間傳遞的數(shù)據(jù)需要轉(zhuǎn)換,傳遞需要按照優(yōu)先級、實時地或批處理的方式進(jìn)行。消息代理中間件提供與各種資源的接口、數(shù)據(jù)轉(zhuǎn)換能力和消息處理能力,高效地實現(xiàn)應(yīng)用之間的消息傳遞。
-
復(fù)雜的業(yè)務(wù)處理邏輯帶來應(yīng)用間、應(yīng)用與人之間交互的復(fù)雜性,要求提供一種支持流管理、處理智能化開發(fā)的簡便性。新一代的消息代理中間件以"商件(businessware)"形式,提供商務(wù)邏輯層開發(fā)能力。
-
集成應(yīng)用的體系結(jié)構(gòu)必須能適應(yīng)業(yè)務(wù)邏輯、組織機構(gòu)的變化,地減少對已有應(yīng)用的修改。消息代理中間件構(gòu)造了一個基于消息的代理骨干,其基于API的適配器以及包裝程序完全適應(yīng)這一要求。
消息代理中間件的基本特征
構(gòu)件化的結(jié)構(gòu)
一個典型的消息代理中間件的基本結(jié)構(gòu)見下圖:

消息代理中間件一般不是單一引擎,通常由一組構(gòu)件組成,基于構(gòu)件的結(jié)構(gòu)是消息代理中間件的關(guān)鍵特征。構(gòu)件化的結(jié)構(gòu)能充分利用SMP和MPP技術(shù),以增加吞吐量,同時也使環(huán)境是可伸縮的,可以根據(jù)需要配置不同構(gòu)件。多個消息代理引擎分布在多處但可以通過一點統(tǒng)一管理。
可恢復(fù)性、易于管理、靈活性等對關(guān)鍵軟件結(jié)構(gòu)的要求同樣適合于消息代理中間件。
具有數(shù)據(jù)轉(zhuǎn)換設(shè)施
消息代理中間件的核心是一個消息的路由程序,它接收和分發(fā)消息并基于預(yù)先定義好的消息處理流確保轉(zhuǎn)發(fā)給正確的應(yīng)用。消息的路由程序通常能執(zhí)行多段的路由("基于HUB的路由"),對于一個單個的消息,可以根據(jù)消息的源、目的地、類型等定義許多個處理段或?qū)ο蟆ο罂梢园ㄏ⒌霓D(zhuǎn)換、數(shù)據(jù)的格式轉(zhuǎn)換、查詢數(shù)據(jù)庫、記錄日志和定時傳送等。應(yīng)用間的互通可以是一對一、一對多或多向的。
消息代理中間件的核心還包括一個單獨的通信與消息傳遞協(xié)議層,實現(xiàn)組織內(nèi)部或組織間的實際的網(wǎng)絡(luò)通信,有一個專門的消息格式庫保存所有的消息定義,并提供建造和維護(hù)組織內(nèi)部和組織間消息類型的工具。路由程序終通過這一層實現(xiàn)消息的接收與分發(fā)。
消息代理中間件的數(shù)據(jù)轉(zhuǎn)換設(shè)施負(fù)責(zé)在應(yīng)用之間對傳輸?shù)臄?shù)據(jù)進(jìn)行轉(zhuǎn)換,提供數(shù)據(jù)轉(zhuǎn)換需要的API。數(shù)據(jù)的規(guī)范化(normalization)或稱數(shù)據(jù)的標(biāo)準(zhǔn)化,是使數(shù)據(jù)在交換過程中轉(zhuǎn)換成標(biāo)準(zhǔn)狀態(tài)的技術(shù)。消息代理中間件有內(nèi)置的數(shù)據(jù)規(guī)范化工具,替換一個應(yīng)用時,不會影響到與其它數(shù)據(jù)交換伙伴的應(yīng)用接口。
消息代理中間件的數(shù)據(jù)轉(zhuǎn)換可以是實時的、接近實時的或批處理的。批處理方式基于文件到文件的數(shù)據(jù)轉(zhuǎn)換方式。消息代理中間件有一個實時的請求/應(yīng)答設(shè)施來執(zhí)行同步的關(guān)鍵任務(wù)消息的處理,通過一個消息隊列機制提供接近實時的數(shù)據(jù)轉(zhuǎn)換。消息代理中間件管理傳遞各個服務(wù)應(yīng)用的并發(fā)路徑,即使在企業(yè)需求時也能提供的性能。
可靠高效的通信
消息代理中間件支持?jǐn)?shù)據(jù)報和可靠傳輸("確保傳輸")通信方式。可靠傳輸通信是基于消息隊列機制的,發(fā)送和接收消息分別通過不同的消息隊列。對應(yīng)用來講,可靠傳輸確保"一次并且只有一次"的遞送。消息的傳遞可以選擇壓縮或/和加密傳輸方式。
消息代理中間件有消息優(yōu)先級支持,高優(yōu)先級的消息不必在隊列中等待,可以優(yōu)先得到處理。
消息代理中間件支持基于內(nèi)容的消息路由,消息產(chǎn)生后按類型歸類時,路經(jīng)就確定了,消息代理能夠根據(jù)消息的內(nèi)容把消息路由到不同的目的點。
消息代理中間件能管理復(fù)雜的處理流,可以協(xié)調(diào)需要一系列復(fù)雜處理過程的交易處理,通過可配置的計時器和告警器處理異常的情況。消息代理中間件內(nèi)部的規(guī)則機制與可配置的計時器和報警器一起,確保交易處理的時效性,交易跟蹤程序存儲和顯示檢測單個交易的狀態(tài)。
多樣的管理能力
消息代理中間件的管理是分層次的,分別對應(yīng)操作員和管理員。運行界面提供了一個對消息代理運行的高層次的視角,保證消息代理的正常運作。操作員可能不知道消息代理中間件運作的細(xì)節(jié),管理員則可以控制消息代理中間件的每個方面,管理界面是給管理員支持操作員用的。
多個消息代理分布在多處但可以通過一點獲得消息代理引擎的企業(yè)級的單一的視點,進(jìn)行統(tǒng)一的管理,可以基于SNMP進(jìn)行處理監(jiān)控,可以使用瀏覽器運行管理系統(tǒng)
豐富的應(yīng)用開發(fā)環(huán)境
消息代理中間件的開發(fā)環(huán)境主要涉及數(shù)據(jù)轉(zhuǎn)換和與資源的接口的構(gòu)造。消息代理中間件提供靈活、高效的結(jié)構(gòu)化的消息處理腳本語言(4GL)和其它面向?qū)ο蟮脑O(shè)計工具,支持基于對象的、3GL或是腳本語言來進(jìn)行數(shù)據(jù)的轉(zhuǎn)換。
消息處理腳本語言包含流控制、例外處理、數(shù)據(jù)抽取(基于SQL等)機制,能夠靈活地構(gòu)造高效的數(shù)據(jù)轉(zhuǎn)換、校驗、翻譯和條件邏輯。消息代理中間件提供便利的數(shù)據(jù)庫訪問接口,直接訪問流行的關(guān)系型數(shù)據(jù)庫和3GL接口
消息代理中間件的對象控制系統(tǒng),提供企業(yè)級的開發(fā)與部署,允許大量的開發(fā)人員通過共享數(shù)據(jù)庫并發(fā)地工作,從而限度地實現(xiàn)可重用性。基于對象的開發(fā)結(jié)果,通常是消息代理中間件所支持的腳本開發(fā)語言。腳本語言編譯后生成的偽碼可以在任意一個腳本語言環(huán)境(開發(fā)工具)中運行,保證了開發(fā)結(jié)果的可遷移性
應(yīng)用測試可以離線進(jìn)行,不必掛接到消息代理中間件上,引入新的應(yīng)用接口或/和轉(zhuǎn)換規(guī)則,也不需要停下消息代理中間件的運行。
消息代理中間件的另一個主要功能是與各種形式的信息資源接口,如果一個消息代理中間件只提供接口,但不提供建造這些接口的工具是完全不適用的。消息代理中間件的開發(fā)環(huán)境是基于對象的,能夠不用構(gòu)造程序邏輯就建立與各種資源的接口。
消息代理中間件通常包括一些標(biāo)準(zhǔn)的接口,如SAP ALE、HL7、FTP、Lotus Notes等,如壓縮包裝的接口,構(gòu)造接口的工具應(yīng)支持TCP/IP socket接口/SNA CPIC接口/TTY接口/SQL接口/基于會話的接口/基于文件的接口/HTML接口等等。
完備的安全機制
消息代理中間件的安全控制,能識別冒名頂替者的消息。消息代理中間件引擎,對來自接口、進(jìn)行數(shù)據(jù)轉(zhuǎn)換過程中的消息執(zhí)行身份驗證、授權(quán)和防抵賴處理。
消息代理中間件具有內(nèi)置的數(shù)字簽名功能,一組利用非對稱秘鑰或/和對稱秘鑰算法的安全功能的集合,可以在應(yīng)用開發(fā)中調(diào)用這些功能。數(shù)字簽名基于非對稱秘鑰體系結(jié)構(gòu)(PKI),可以有效地保證消息的完整性、發(fā)送方、接收方身份可鑒別以及不可抵賴性。
對稱與非對稱加/解密體制的結(jié)合,可以方便地實現(xiàn)消息在傳輸中的保密性。
未來走向
消息代理中間件作為企業(yè)應(yīng)用集成的有效工具,發(fā)展極為迅速。消息代理中間件一種新的趨勢是,增加協(xié)同處理、處理自動化等"商件"(Businessware)模快,比較直觀地支持在商務(wù)邏輯層上的應(yīng)用集成與開發(fā)。與商件的結(jié)合,是消息代理產(chǎn)品的一個重要的技術(shù)走向。