MB與MQ簡介

今天聽IBM的工程師介紹了MQ和MB的特性,以及他們的區別與聯繫,覺得很通俗易懂,特此記錄,方便將來的初學者可以更快的把握這兩者的特點。


首先從概念上來說,MQ是消息中間件,MB是ESB產品


MQ負責在兩個系統之間傳遞消息,這兩個系統可以是異構的,處於不同硬件、不同操作系統、用不同語言編寫,只需要簡單的調用幾個MQ的API,就可以互相通訊,你不必考慮底層系統和網絡的複雜性。MQ作爲IBM的一個拳頭產品,雖然功能看上去很簡單,就是個消息隊列,但他卻是IBM中間件的核心,也是相比其他廠商(比如BEA)的一個優勢。MQ不僅有很高的性能,而且對各種平臺的支持非常好,幾乎你能想到的硬件和操作系統平臺以及編程語言,MQ都有專門的API支持。


但MQ的功能僅限於消息隊列,至於應用A發給應用B的消息格式是怎樣的、能不能被應用B解析,MQ管不了,他只是盡力將消息發到目的地(MQ能夠應付多種異常情況,例如網絡阻塞、臨時中斷等等)。此外,如果應用的數目多了,那互相之間都要建立MQ連接,網絡拓撲就成了蜘蛛網了(就好像是最初的電話系統)


因此,我們將網絡的星型拓撲引入系統架構中,把一對一的MQ換成一箇中心節點,即ESB,MB即是IBM的ESB產品。


MB處於系統的中心,起到一個總線的作用,所有應用都直接連接到MB,而不是應用之間直接互聯,這樣的好處不言而喻,可以極大的降低應用之間的耦合性。由此引出MB的兩大核心功能:消息路由和數據轉換

因爲各個應用都插入到MB上,所以應用A只管把消息丟給MB,MB自動根據消息字段、以及業務邏輯,判斷要把消息交給誰,這就像路由器一樣,根據數據包的頭把包路由到相應地址。MB內部的業務邏輯由開發人員設定,當然利用MB的Toolkit,編寫業務邏輯也非常簡單:拖一些節點,用箭頭把它們連起來,就像是畫流程圖一樣,非常形象簡單。再用MB的腳本語言(類似sql的腳本)實現邏輯判斷,通俗地說就是判斷要走哪個邏輯分支(if...else.....)。


不過各個應用是怎樣與MB連接的呢?MB提供了三種方式:MQ、文件和web service


MQ方式即是利用MQ將MB與應用互聯;文件方式則是指定某個目錄,MB會自動監視那個文件目錄,一旦文件有改變則認爲是新的消息到來,MB自動讀取指定文件的內容;而web service就不用解釋了,直接利用web service進行通訊。MB支持這些互聯方式也是爲了最大化兼容性,特別是對於那些遺留系統或是不支持主流通訊方式的系統


最後說說一個比較偏門的ESB產品:websphere ESB。聽過的人可能不多,因爲IBM在中國推廣的比較少,這個WESB很像是MB的精簡版,只支持JMS、WS等少數幾種J2EE的通訊方式,所以是爲J2EE專門準備的。不像MB,支持數十種平臺和通訊方式,例如FTP,甚至很多你根本沒聽說過的很古老的通信協議。這兩者的性能相差不少,價格也有三四倍的差距。更要命的是,原先在WESB上開發的東西,是不能遷移到MB使用的,IBM似乎鐵了心要狠狠宰我們,唯一的方法是再買一個MB,然後用MQ把WESB和MB連接起來,各跑各的


漏了一個DataPower,這東西我只是略有了解,它的賣點在於硬件支持XML,所以性能比較好,此外還支持一下web service安全方面的東東。因此,WESB是最小功能集,而MB與datapower功能上有一定重疊,如XML 


最後聲明,我不是在給IBM打廣告


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章