開源ESB對比分析
Mule ESB
Mule是一個基于Java的輕量級企業服務總線和集成平臺。Mule通過Transports/Connectors與外圍的異構系統連接, 提供Routing(路由)、Transaction Management(事務管理)、Transformation(轉換)、Message Broker(消息代理)、Transportation Management(傳輸管理)、Security(安全)等核心模塊。Mule可以單獨使用,也可以架設在常用的應用服務器上。
外圍系統的服務請求通過Mule ESB的Transport接入,Mule通過Transformer進行數據的格式轉換,然后經過Inbound Router進行消息過濾(內部通過配置filter實現)后交給Mule的Component進行業務邏輯處理,處理后的結果通過Outbound Router確定傳遞給哪個接收方,然后通過Transformer進行數據格式轉換,通過Transport連接至接收方,傳遞信息。
- 基于J2EE1.4的企業消息總線(ESB)和消息代理(broker);
- 可插入的連接性,支持20多種傳輸協議,比如:jms、jdbc、tcp、udp、multicast、http、servlet、smtp、pop3、file、xmpp等;
- 支持任何傳輸之上的異步,同步和請求響應事件處理機制;
- 支持Axis或者Glue的Web Service;
- 靈活的部署結構,包括Client/Server, P2P, ESB 和Enterprise Service Network;
- 與Spring 框架集成:可用作ESB 容器,也可以很容易的嵌入到Spring應用中;
- 使用基于SEDA處理模型的高度可伸縮的企業服務器;
- 強大的基于EIP模式的事件路由機制等。
主要優點
- 在開源ESB中,活躍程度最高,用戶量大,不斷推出新版本。
- 基于模式的配置以及熱部署;Mule IDE3.0,將支持圖元拖拽,簡化開發。
- 擴展性:增加一個新協議非常簡單,只需實現5個接口類。
- 管理性:推出Console(收費),管理、部署和監控應用。
- 文檔:文檔非常豐富,降低了使用門檻。
主要缺點
- 集群非常弱,只能配置一個主實例和一個從實例,不支持flow和基于模式的配置
- 目前的IDE只提供XML級別的編輯,還不能實現圖元的拖拽
- 穩定性:開源項目的通病,需要在測試場景下進行驗證
Apache ServiceMix
ServiceMix是Apache基金會下的一個ESB總線,同時也是一個獨立的JBI容器(也就是說它支持完整的JBI規范)。說它是一個獨立的JBI容器,是因為它擁有自己獨立的運行環境,能像應用服務器一樣啟動,并支持動態的熱部署等,這一點則區別于CXF。
ServiceMix的容器運行環境采用內核的架構,并以Geronimo關于J2EE方面的實現為基礎(當然也就支持J2EE的各方面規范, 例如 安全性方面的JAAS等),所以在性能上還是較為出色的。在通信上,整合了ActiveMQ,也支持多種的通信協議,例如HTTP和JMS。同時在管理組 件上采用了JMX的管理架構,從而能夠對部署在總線上的各種組件進行動態的配置和管理,或通過Web的形式,或通過JMX遠程訪問均可。 ServiceMix內核能夠整合到所處的操作系統中,從而作為OS的對外提供的服務。區別與其他總線的是,ServiceMix還提供了自己的腳本命令 控制臺,并通過一些簡單命令來管理應用組件以及ServiceMix內核實例。
主要優點:
- JBI的優勢:組件BC,SE可以在任何JBI容器(比限于ServiceMix)中直接運行,復用性強
- 基于OSGi:具備OSGi的優勢:模塊化,熱部署,易擴展
- 基于Karaf:提供了非常豐富的命令,管理、部署和監控ServiceMix
主要缺點:
- JBI規范太復雜,已被主流中間件廠商拋棄,沒有受到業界的青睞
- 架構復雜,由于JBI的復雜性所致,其架構并非輕量級
- 缺少IDE的支持,必須手寫大量的XML配置文件
- 學習門檻高,用戶文檔和相關資料比較少
Apache Synapse/WSO2
由Axis構成底層支持的Web Service總線,WSO2基于Synapse。
主要優點:
- 借助于Axiss的特性,能非常好的支持WS及WS-*。因此非常適合Web Service的場景
- 支持集群,集群中節點間的通信框架基于Apache Tribes(組通信框架)
- 支持一個主節點和多個從節點,支持Failover Routing
- 在集群環境中,所有的請求只能被主節點接收,從節點只能作為備份節點。
- 支持流量控制,在單個ESB實例或者集群中,可以在服務級別配置流量控制。
- 持數據緩存,集群中的各個ESB實例共享緩存的數據。
主要缺點:
- 架構不夠清晰,顯得有點臃腫、不簡潔、不夠優雅
- 擴展性差,新增一個協議/transport非常困難
- 組件比較凌亂,對多種協議(HTTP,WebService,JMS,FTP,EMAIL)的支持,部分依賴于Axis2,部分依賴于synapse
JBOSS ESB
JBoss ESB是JBoss社區為面向SOA而提出的一個EAI系統平臺。它提供了很多EAI本身所應具有的功能,例如業務流程監控、集成開發環境、工作流用戶接 口、業務流程管理、分布式計算架構以及作為應用容器的功能等。可以說JBossESB在功能上是較為強大的。但相對于上面的總線而言,它的技術架構方案是 最獨立的。因為它除了支持J2EE標準外,對于JBI規范壓根就不沾邊。當然也就不存在JBI規范中的規范化消息路由、服務引擎和綁定組件了。 JBossESB除了支持 Web Service外,還支持多種的遠程調用協議,例如JMS。只是相對于ServiceMix和CXF而言,如果要對JBossESB進行擴展,可能要花費 較大的時間和精力。
JBossESB相對上述的開源項目而言,一個很大的優勢在于文檔資料是最為豐富和完備的。所以在開發和擴展上減小了不小的阻力。它并且依托于成熟的JBoss社區,周圍齊全的開源項目支持,為后期的平臺擴展提供了豐富的選擇空間。
Ultra ESB
UltraESB 是一個開源的企業服務總線 ESB 項目,特點是高性能和易用。提供一個強大而具備良好伸縮性的架構,在性能方面表現優異,根據性能測試數據可以看到,其性能優于常見Mule和WSO2,對 于TPS數據可以達到3000TPS以上。而且輕量級,易于使用和管理。
支持傳輸層:
HTTP/S
JMS
Email (POP3/IMAP/SMTP)
AMQP
File/SFTP/FTP/FTPS/Samba
Timer (Scheduled Job)
TCP/S
MLLP/S
支持協議:
REST
SOAP
Hessian
FastInfoset
AS2
Protocol Buffers
OpenESB是Sun公司提出來的開源ESB項目,所以對JBI規范的支持程度就不用多說了。而GlassFish ESB則是將OpenESB的核心運行環境與GlassFish應用服務器以及NetBean的集成開發環境整合在一起的有一個ESB項目,當然其中還包 含了一些OpenESB中已有的組件(子集)。
在OpenESB中提供了能夠支持WS-BPEL2.0的引擎。但是現在這個組件支持WSDL1.1,暫不支持WSDL2.0。而且這個引擎要 依托與NetBean集成開發平臺,起碼只能得到基于NetBean的相應開發包和組件包。但是這個組件對BPEL提供了強大的支持,其中包括支持端點狀 態的監控、支持多線程執行、業務流程的調試、系統錯誤的可靠性恢復中各個業務流程實例的數據庫持久化以及負載均衡等。