騾子力氣比馬大:一個ESB集成框架CodeHaus Mule
Mule 是一個基于ESB架構(gòu)理念的消息平臺。Mule 的核心是一個基于SEDA的服務(wù)容器,該容器管理被稱為通用消息對象(Universal Message Objects /UMO)的服務(wù)對象,而這些對象都是POJO。所有UMO和其他應(yīng)用之間的通信都是通過消息端點(message endpoint)來進(jìn)行的。這些端點為眾多的分立的技術(shù),比如Jms, Smtp, Jdbc, Tcp, Http, Xmpp, file等等,提供了簡單和一致的接口。
Mule 應(yīng)用通常是由網(wǎng)絡(luò)中的許多Mule 實例組成。每一個實例都是一個駐留一個或者多個UMO組件的輕量級容器。每一個UMO 組件都有一個或者多個通過它(們)發(fā)送和接收事件的端點。
容器通過UMO組件提供各種各樣的服務(wù),比如事務(wù)管理、事件轉(zhuǎn)換,路由,事件關(guān)聯(lián)、日志、審計和管理等等。Mule將對象構(gòu)造從管理手段中分離出來,通常流行框架和IoC/DI 容器,如Spring, PicoContainer 或者 Plexus 可用這種管理手段來構(gòu)建你的UMO 組件。
很多人認(rèn)為, "Mule是一個Jms 實現(xiàn)"。實際上,Mule 不是一個Jms server,但是可以配置來使用任何你覺得非常漂亮的Jms server。Mule 的理念是,如果已經(jīng)有了穩(wěn)定和廣泛接受的實現(xiàn),就不會直接實現(xiàn)任何傳輸。例如,Mule 就重用了Axis 和 GLUE 的SOAP棧而不是重新實現(xiàn)一個。Mule 提供了一個一致的服務(wù)集來管理任何類型的連接的事件流、關(guān)聯(lián)、事務(wù)、安全和審計。
下面是Mule Server 組件的簡單圖示:
Mule Manager
Mule Manager是Mule server 實例的中心(也稱為一個節(jié)點戶或者M(jìn)ule Node)。其主要的角色是管理各種對象,比如Mule實例的連接器、端點和轉(zhuǎn)換器。這些對象然后被用來控制進(jìn)出你的服務(wù)組件的消息流,并且為Model和它所管理的組件提供服務(wù)。
model 是管理和執(zhí)行組件的容器。它控制進(jìn)出組件的消息流,管理線程、生命周期和緩充池。默認(rèn)的MuleModel是基于SEDA的,它使用一個有效的基于事件的隊列模型來獲取的最大的性能和直通性。
UMO代表Universal Message Object;它是一個可以接收來自于任何地方的消息的對象。UMO 組件就是你的業(yè)務(wù)對象。它們是執(zhí)行引入的事件之上的具體業(yè)務(wù)邏輯的組件。這些組件是標(biāo)準(zhǔn)的JavaBean,組件中并沒有任何Mule特定的代碼。Mule 基于你的組件的配置處理所有進(jìn)出組件的事件的路由和轉(zhuǎn)換。
Endpoint是Mule的通信能力的基礎(chǔ)。一個Endpoint定義了兩個或者多個組建應(yīng)用或者存儲庫之間的通信渠道。并且提供了一個強(qiáng)大的機(jī)制來允許你的對象在一個統(tǒng)一的方式上再多種協(xié)議之上進(jìn)行交談。端點可以通過消息過濾器、安全攔截器和事務(wù)信息進(jìn)行配置來控制什么消息,在何時,以及怎樣通過端點進(jìn)行發(fā)送和接收。
外部應(yīng)用可以使任何應(yīng)用,從應(yīng)用服務(wù)器到遺留的傳統(tǒng)應(yīng)用,主機(jī)程序,或者C/S系統(tǒng)。基本上是任何可以產(chǎn)生和操縱數(shù)據(jù)的應(yīng)用。因為Mule通過endpoints執(zhí)行所有通信,UMO 組件并不打算在其中包含應(yīng)用產(chǎn)生數(shù)據(jù),以及應(yīng)用主流,以及使用傳輸協(xié)議的部分。
- 基于J2EE 1.4的企業(yè)消息總線( Enterprise Service Bus (ESB))和消息代理(broker)
- 可插入性連接,比如Jms (1.0.2b 和 1.1), vm (嵌入), jdbc, tcp, udp, multicast, http, servlet, smtp, pop3, file, xmpp等
- 支持任何傳輸之上的異步,同步和請求響應(yīng)事件處理機(jī)制
- 支持Axis或者Glue的Web Service.
- 靈活的部署結(jié)構(gòu)[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network.
- 支持聲明性和編程性事務(wù),包括XA 支持
- 對事件的路由、傳輸和轉(zhuǎn)換的斷到端支持
- Spring 框架集成。可用作ESB 容器,而Mule c也可以很容易的嵌入到Spring 應(yīng)用中。
- 使用基于SEDA處理模型的高度可伸縮的企業(yè)服務(wù)器
- 支持REST API 來提供技術(shù)獨立和語言中立的基于web的對Mule 事件的訪問
- 強(qiáng)大的基于EIP模式的事件路由機(jī)制
- 動態(tài)、聲明性的,基于內(nèi)容和基于規(guī)則的路由選項
- 非入侵式的方式。任何對象都可以通過ESB 容器管理
- 強(qiáng)大的應(yīng)用集成框架
- 完整的可擴(kuò)展的開發(fā)模式
一般在這些情形下使用Mule -
- 集成兩個或者多個需要互相通信的或者多個現(xiàn)有的系統(tǒng).
- 需要完全和周圍環(huán)境去耦合的應(yīng)用,或者需要在系統(tǒng)中伸縮不止一個組件的系統(tǒng)
- 開發(fā)人員不知道未來是否會將其應(yīng)用分發(fā)或者伸縮需求的單VM 應(yīng)用。
posted on 2005-05-18 13:22 鐵手 閱讀(4644) 評論(1) 編輯 收藏 所屬分類: Java 、企業(yè)架構(gòu) 、WS/SOA/ESB