初步認識消息中間件

首先介紹消息中間件的原理,而後介紹了目前流行的消息中間件產品和一些開源實現。數據庫


中間件的定義


中間件(middleware)是基礎軟件的一大類,屬於可複用的軟件範疇。中間件在操做系統軟件,網絡和數據庫之上,應用軟件之下,總的做用是爲處於本身上層的應用軟件提供運行於開發的環境,幫助用戶靈活、高效的開發和集成複雜的應用軟件。
IDC對中間件的定義爲:中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源,中間件定位於客戶機服務器的操做系統之上,管理計算機資源和網絡通訊。
於是中間件是指一類軟件,是基於分佈式處理的軟件,最突出的特色是其網絡通訊功能。也可認爲中間件是位於平臺和應用之間的通用服務,這些服務具備標準的程序接口和協議。針對不一樣的操做系統和硬件平臺,能夠有符合接口和協議的多種實現。


消息中間件的原理


一、消息中間件簡單介紹

此類中間件是指利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通訊來進行分佈式系統的集成。經過提供消息傳遞和消息排隊模型,它能夠在分佈式環境下擴展進程間的通訊。
消息中間件能夠即支持同步方式,又支持異步方式。異步中間件比同步中間件具備更強的容錯性,在系統故障時能夠保證消息的正常傳輸。異步中間件技術又分爲兩類:廣播方式和發佈/訂閱方式。因爲發佈/訂閱方式能夠指定哪一種類型的用戶能夠接受哪一種類型的消息,更加有針對性,事實上已成爲異步中間件的非正式標準。目前主流的消息中間件產品有IBM的MQSeries,BEA的MessageQ和Sun的JMS等

二、消息中間件原理

面向消息的中間件(MOM),提供了以鬆散耦合的靈活方式集成應用程序的一種機制。它們提供了基於存儲和轉發的應用程序之間的異步數據發送,即應用程序彼此不直接通訊,而是與做爲中介的MOM通訊。MOM提供了有保證的消息發送(至少是在儘量地作到這一點),應用程序開發人員無需瞭解遠程過程調用(PRC)和網絡/通訊協議的細節。

消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數據交流,並基於數據通訊來進行分佈式系統的集成。經過提供消息傳遞和消息排隊模型,它能夠在分佈式環境下擴展進程間的通訊。
消息中間件適用於須要可靠的數據傳送的分佈式環境。採用消息中間件機制的系統中,不一樣的對象之間經過傳遞消息來激活對方的事件,完成相應的操做。發送者將消息發送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發給接收者。消息中間件能在不一樣平臺之間通訊,它常被用來屏蔽掉各類平臺及協議之間的特性,實現應用程序之間的協同,其優勢在於可以在客戶和服務器之間提供同步和異步的鏈接,而且在任什麼時候刻均可以將消息進行傳送或者存儲轉發,這也是它比遠程過程調用更進一步的緣由。
以下圖所示,應用程序A與應用程序B經過使用 MOM 的應用程序編程接口(API)發送消息進行通訊。

MOM將消息路由給應用程B,這樣消息就能夠存在於徹底不一樣的計算機上,MOM 負責處理網絡通訊。若是網絡鏈接不可用,MOM會存儲消息,直到鏈接變得可用時,再將消息轉發給應用程序B。
靈活性的另外一方面體如今,當應用程序A發送其消息時,應用程序B甚至能夠不處於執行狀態。MOM將保留這個消息,直到應用程序B開始執行並試着檢索消息爲止。這還防止了應用程序A由於等待應用程序B檢索消息而出現阻塞。 這種異步通訊要求應用程序的設計與如今大多數應用程序不一樣,不過,對於時間無關或並行處理,它多是一個極其有用的方法

消息中間件與分佈式對象調用的比較


分佈式對象調用,如CORBA,RMI和DCOM,提供了一種通信機制,透明地在異構的分佈式計算環境中傳遞對象請求,而這些對象能夠位於本地或遠程機器。它經過在對象與對象之間提供一種統一的接口,使對象之間的調用和數據共享再也不關心對象的位置、實現語言及所駐留的操做系統。這個接口就是面向對象的中間件。
儘管面向對象的中間件是一種很強大的規範被普遍應用,可是面對大規模的複雜分佈式系統,這些技術也顯示出了局限性:
1.同步通訊:客戶發出調用後,必須等待服務對象完成處理並返回結果後才能繼續執行。
2.客戶和服務對象的生命週期緊密耦合:客戶進程和服務對象進程都必須正常運行,若是因爲服務對象崩潰或網絡故障致使客戶的請求不可達,客戶會接收到異常。

爲了解決這些問題,出現了面向消息的中間件,它較好地解決了以上的問題。
消息中間件做爲一箇中間層軟件,它爲分佈式系統中建立、發送、接收消息提供了一套可靠通用的方法,實現了分佈式系統中可靠的、高效的、實時的跨平臺數據傳輸。消息中間件減小了開發跨平臺和網絡協議軟件的複雜性,它屏蔽了不一樣操做系統和網絡協議的具體細節,面對規模和複雜度都愈來愈高的分佈式系統,消息中間件技術顯示出了它的優越性:
1.採用異步通訊模式:發送消息者能夠在發送消息後進行其它的工做,不用等待接收者的迴應,而接收者也沒必要在接到消息後當即對發送者的請求進行處理;
2.客戶和服務對象生命週期的鬆耦合關係:客戶進程和服務對象進程不要求都正常運行,若是因爲服務對象崩潰或者網絡故障致使客戶的請求不可達,客戶不會接收到異常,消息中間件能保證消息不會丟失。

消息中間件的傳遞模式


1. 點對點模型(PTP)
點對點模型用於消息生產者和消息消費者之間點到點的通訊。消息生產者將消息發動到由某個名字標識的特定消費者。這個名字實際上對應於消息服務中的一個隊列(Queue),在消息傳動給消費者以前它被存儲在這個隊列中。隊列能夠是持久的,以保證在消息服務出現故障時仍然可以傳遞消息。
2. 發佈-訂閱模型(Pub/Sub)
發佈-訂閱模型用稱爲主題(topic)的內容分層結構代替了PTP模型中的唯一目的地,發送應用程序發佈本身的消息,指出消息描述的是有關分層結構中的一個主題的信息。但願接收這些消息的應用程序訂閱了這個主題。訂閱包含子主題的分層結構中的主題的訂閱者能夠接收該主題和其子主題發表的全部消息。
下圖展現了發佈和訂閱模型:

多個應用程序能夠就一個主題發佈和訂閱消息,而應用程序對其餘人仍然是匿名的。MOM 起着代理(broker)的做用,將一個主題已發表的消息路由給該主題的全部訂閱者。

簡單介紹WebLogic的特色

WebLogic是BEA公司實現的基於工業標準的J2EE應用服務器,支持大多數企業級JavaAPI,它徹底兼容JMS規範,支持點到點和發佈/訂閱消息模式,它具備如下一些特色: 1) 經過使用管理控制檯設置JMS配置信息; 2) 支持消息的多點廣播; 3) 支持持久消息存儲的文件和數據庫; 4) 支持XML消息,動態建立持久隊列和主題。
相關文章
相關標籤/搜索