中間件(middleware)是基礎軟件的一大類,屬于可復用的軟件范疇。中間件在操作系統(tǒng)軟件,網(wǎng)絡和數(shù)據(jù)庫之上,應用軟件之下,總的作用是為處于自己上層的應用軟件提供運行于開發(fā)的環(huán)境,幫助用戶靈活、高效的開發(fā)和集成復雜的應用軟件。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-487516.html
IDC對中間件的定義為:中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件定位于客戶機服務器的操作系統(tǒng)之上,管理計算機資源和網(wǎng)絡通信。
因而中間件是指一類軟件,是基于分布式處理的軟件,最突出的特點是其網(wǎng)絡通信功能。也可認為中間件是位于平臺和應用之間的通用服務,這些服務具有標準的程序接口和協(xié)議。針對不同的操作系統(tǒng)和硬件平臺,可以有符合接口和協(xié)議的多種實現(xiàn)。
?
?
消息中間件的原理
?
1、消息中間件簡單介紹
此類中間件是指利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環(huán)境下擴展進程間的通信。
消息中間件可以即支持同步方式,又支持異步方式。異步中間件比同步中間件具有更強的容錯性,在系統(tǒng)故障時可以保證消息的正常傳輸。異步中間件技術又分為兩類:廣播方式和發(fā)布/訂閱方式。由于發(fā)布/訂閱方式可以指定哪種類型的用戶可以接受哪種類型的消息,更加有針對性,事實上已成為異步中間件的非正式標準。目前主流的消息中間件產品有IBM的MQSeries,BEA的MessageQ和Sun的JMS等
2、消息中間件原理
面向消息的中間件(MOM),提供了以松散耦合的靈活方式集成應用程序的一種機制。它們提供了基于存儲和轉發(fā)的應用程序之間的異步數(shù)據(jù)發(fā)送,即應用程序彼此不直接通信,而是與作為中介的MOM通信。MOM提供了有保證的消息發(fā)送(至少是在盡可能地做到這一點),應用程序開發(fā)人員無需了解遠程過程調用(PRC)和網(wǎng)絡/通信協(xié)議的細節(jié)。
?
消息中間件利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。通過提供消息傳遞和消息排隊模型,它可以在分布式環(huán)境下擴展進程間的通信。
消息中間件適用于需要可靠的數(shù)據(jù)傳送的分布式環(huán)境。采用消息中間件機制的系統(tǒng)中,不同的對象之間通過傳遞消息來激活對方的事件,完成相應的操作。發(fā)送者將消息發(fā)送給消息服務器,消息服務器將消息存放在若干隊列中,在合適的時候再將消息轉發(fā)給接收者。消息中間件能在不同平臺之間通信,它常被用來屏蔽掉各種平臺及協(xié)議之間的特性,實現(xiàn)應用程序之間的協(xié)同,其優(yōu)點在于能夠在客戶和服務器之間提供同步和異步的連接,并且在任何時刻都可以將消息進行傳送或者存儲轉發(fā),這也是它比遠程過程調用更進一步的原因。
如下圖所示,應用程序A與應用程序B通過使用 MOM 的應用程序編程接口(API)發(fā)送消息進行通信。
?
MOM將消息路由給應用程B,這樣消息就可以存在于完全不同的計算機上,MOM 負責處理網(wǎng)絡通信。如果網(wǎng)絡連接不可用,MOM會存儲消息,直到連接變得可用時,再將消息轉發(fā)給應用程序B。
靈活性的另一方面體現(xiàn)在,當應用程序A發(fā)送其消息時,應用程序B甚至可以不處于執(zhí)行狀態(tài)。MOM將保留這個消息,直到應用程序B開始執(zhí)行并試著檢索消息為止。這還防止了應用程序A因為等待應用程序B檢索消息而出現(xiàn)阻塞。 這種異步通信要求應用程序的設計與現(xiàn)在大多數(shù)應用程序不同,不過,對于時間無關或并行處理,它可能是一個極其有用的方法
?
消息中間件與分布式對象調用的比較
?
分布式對象調用,如CORBA,RMI和DCOM,提供了一種通訊機制,透明地在異構的分布式計算環(huán)境中傳遞對象請求,而這些對象可以位于本地或遠程機器。它通過在對象與對象之間提供一種統(tǒng)一的接口,使對象之間的調用和數(shù)據(jù)共享不再關心對象的位置、實現(xiàn)語言及所駐留的操作系統(tǒng)。這個接口就是面向對象的中間件。
盡管面向對象的中間件是一種很強大的規(guī)范被廣泛應用,但是面對大規(guī)模的復雜分布式系統(tǒng),這些技術也顯示出了局限性:
1.同步通信:客戶發(fā)出調用后,必須等待服務對象完成處理并返回結果后才能繼續(xù)執(zhí)行。
2.客戶和服務對象的生命周期緊密耦合:客戶進程和服務對象進程都必須正常運行,如果由于服務對象崩潰或網(wǎng)絡故障導致客戶的請求不可達,客戶會接收到異常。
?
為了解決這些問題,出現(xiàn)了面向消息的中間件,它較好地解決了以上的問題。
消息中間件作為一個中間層軟件,它為分布式系統(tǒng)中創(chuàng)建、發(fā)送、接收消息提供了一套可靠通用的方法,實現(xiàn)了分布式系統(tǒng)中可靠的、高效的、實時的跨平臺數(shù)據(jù)傳輸。消息中間件減少了開發(fā)跨平臺和網(wǎng)絡協(xié)議軟件的復雜性,它屏蔽了不同操作系統(tǒng)和網(wǎng)絡協(xié)議的具體細節(jié),面對規(guī)模和復雜度都越來越高的分布式系統(tǒng),消息中間件技術顯示出了它的優(yōu)越性:
1.采用異步通信模式:發(fā)送消息者可以在發(fā)送消息后進行其它的工作,不用等待接收者的回應,而接收者也不必在接到消息后立即對發(fā)送者的請求進行處理;
2.客戶和服務對象生命周期的松耦合關系:客戶進程和服務對象進程不要求都正常運行,如果由于服務對象崩潰或者網(wǎng)絡故障導致客戶的請求不可達,客戶不會接收到異常,消息中間件能保證消息不會丟失。
?
消息中間件的傳遞模式
?
1. 點對點模型(PTP)
點對點模型用于消息生產者和消息消費者之間點到點的通信。消息生產者將消息發(fā)動到由某個名字標識的特定消費者。這個名字實際上對應于消息服務中的一個隊列(Queue),在消息傳動給消費者之前它被存儲在這個隊列中。隊列可以是持久的,以保證在消息服務出現(xiàn)故障時仍然能夠傳遞消息。
2. 發(fā)布-訂閱模型(Pub/Sub)
發(fā)布-訂閱模型用稱為主題(topic)的內容分層結構代替了PTP模型中的惟一目的地,發(fā)送應用程序發(fā)布自己的消息,指出消息描述的是有關分層結構中的一個主題的信息。希望接收這些消息的應用程序訂閱了這個主題。訂閱包含子主題的分層結構中的主題的訂閱者可以接收該主題和其子主題發(fā)表的所有消息。
下圖展示了發(fā)布和訂閱模型:
?
多個應用程序可以就一個主題發(fā)布和訂閱消息,而應用程序對其他人仍然是匿名的。MOM 起著代理(broker)的作用,將一個主題已發(fā)表的消息路由給該主題的所有訂閱者。文章來源:http://www.zghlxwxcb.cn/news/detail-487516.html
?
到了這里,關于中間件定義的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!