ESB(Enterprise Service Bus)企業服務總線介紹


ESB(Enterprise Service Bus)企業服務總線介紹

ESB全稱為Enterprise Service Bus,即企業服務總線。
它是傳統中間件技術與XML、Web服務等技術結合的產物。ESB提供了網絡中最基本的連接中樞,是構築企業神經系統的必要元素。ESB的出現改變了傳統的軟件架構,可以提供比傳統中間件產品更為廉價的解決方案,同時它還可以消除不同應用之間的技術差異,讓不同的應用服務器協調運作,實現了不同服務之間的通信與整合。從功能上看,ESB提供了事件驅動和文檔導向的處理模式,以及分布式的運行管理機制,它支持基於內容的路由和過濾,具備了復雜數據的傳輸能力,並可以提供一系列的標准接口。

在探討信息系統的SOA架構概念時,一個非常重要的概念是:企業服務總線(ESB)。可以說,企業服務總線也是SOA的核心構成部分。要真正實現應用架構完善的SOA結構,簡化SOA構件間的關系,就一定要建設好信息系統的企業級服務總線。

 

基本功能
1)服務的MetaData管理:在總線范疇內對服務的注冊命名及尋址進行管理。
2)傳輸服務:確保通過企業總線互連的業務流程間的消息的正確交付,還包括基於內容的路由功能。
3)中介:提供位置透明的路由和定位服務;提供多種消息傳遞形式;支持廣泛使用的傳輸協議。
4)多服務集成方式: 如JCA,Web服務,Messaging ,Adapter等。
5)服務和事件管理支持: 調用服務的記錄、測量和監控數據;提供事件檢測、觸發和分布功能;
擴展功能
1) 面向服務的元數據管理: 他必須了解被他中介的兩端,即服務的請求以及請求者對服務的要求,以及服務的提供者和他所提供的服務的描述;
2) Mediation :它必須具有某種機制能夠完成中介的作用,如協議轉換;
3) 通信:服務的發布/訂閱、響應/請求、同步/異步消息、路由和尋址等;
4) 集成: 遺留系統適配器,服務編排和映射,協議轉換,數據變換,企業應用集成中間件的連續等。
5) 服務交互: 服務接口定義,服務實現的置換,服務消息模型,服務目錄和發現等。
6) 服務安全: 認證和授權、不可否認和機密性、安全標准的支持等;
7) 服務質量: 事務,服務的可交付性等;
8) 服務等級: 性能、可用性等。
ESB 中最常提到的兩個功能是消息轉換和消息路由。

ESB架構
ESB 是傳統中間件技術與XML、Web服務等技術相互結合的產物,ESB的出現改變了傳統的軟件架構,可以提供比傳統中間件產品更為廉價的解決方案,同時它還可以消除不同應用之間的技術差異,讓不同的應用服務器協調運作,實現了不同服務之間的通信與整合。從功能上看,ESB提供了事件驅動和文檔導向的處理模式,以及分布式的運行管理機制,它支持基於內容的路由和過濾,具備了復雜數據的傳輸能力,並可以提供一系列的標准接口。

 

現有的開源ESB總線中,自從2003年第一個開源總線Mule出現后,如今已經是百花爭鳴的景象了。如今我就對現有的各種開源ESB總線根據性能、可擴展性、資料文檔完整程度以及整合難易程度等方面展開。
一.CXF
CXF的定位不是ESB總線,而是一個服務框架(Service Framework),主要還是為關於服務的應用提供API上的支持,或者上下文上的管理。

可是它的前身之中的一個的Celtix就是IONA公司捐獻給開源界的ESB總線,所以總體上還是能提供ESB總線的功能(需依靠與其他的容器)。在CXF中的總線僅僅是起到一個共享資源的提供者的作用。這些貢獻資源就相當於JBI規范中的綁定組件(BC)或服務引擎(SE)。即使如此CXF並沒有提供了對JBI規范的完整實現。能夠說它僅僅是一個相似的JBI容器。

CXF支持與除了HTTP之外的其他協議的通信綁定,比如REST、JSON和CORBA等,所以對於Ajax有較強的兼容性。這相對與其他的ESB總線而言能夠說是一個較大的優勢。

可是CXF的ESB總線是根據Spring框架來實現的,由Spring來管理Bus中的各個組件。而Spring對各個Bean或組件的管理是通過一個上下文的配置文件來實現的。這種方式相對與其它的ESB總線(比如根據JMX)的方式而言,則不支持動態的熱部署。也就是說CXF不是一個JBI容器,它必須依附與其它的容器來執行。現有的資料來看,CXF眼下能夠部署在JBoss和BEA Weblogic中,Tomcatserver因為不支持完整的J2EE規范,特別是基於JCA的EJB,所以對CXF支持的程度不理想。盡管資料中沒有涉及到Geronimo,可是以Geronimo對J2EE規范的兼容程度來看,特別是EAR文檔的支持,在Geronimo中部署CXF應該沒有什么太大的障礙。

相同你能夠在使用Spring的應用中嵌入CXF,而這僅僅須要在Spring的配置文件里填寫對應的配置信息就可以。

關於CXF的文檔較為豐富,這部分是因為它本身是整合了Xfire和Celtix這兩個本身較為成熟的開源項目。另外它較大的依賴於Spring框架,所以假設對Spring較為熟悉的話,在使用上一般就沒有太大的障礙了。

二.Open ESB

OpenESB是Sun公司提出來的開源ESB項目,所以對JBI規范的支持程度就不用多說了。而GlassFish ESB則是將OpenESB的核心執行環境與GlassFish應用server以及NetBean的集成開發環境整合在一起的有一個ESB項目,當然當中還包括了一些OpenESB中已有的組件(子集)。

在OpenESB中提供了可以支持WS-BPEL2.0的引擎。可是如今這個組件支持WSDL1.1,暫不支持WSDL2.0。並且這個引擎要依托與NetBean集成開發平台,起碼僅僅能得到基於NetBean的對應開發包和組件包。可是這個組件對BPEL提供了強大的支持,當中包含支持端點狀態的監控、支持多線程運行、業務流程的調試、系統錯誤的可靠性恢復中各個業務流程實例的數據庫持久化以及負載均衡等。

在資料方面僅僅有一個演示視頻,主要還是基於NetBean平台的使用介紹。其它發布的資料則則較少,特別是API方面差點兒沒有。所以假設要對OpenESB進行依照自身的要求進行擴展則較為困難,除非對OpenESB的源碼進行全面的分析。

三.ServiceMix

ServiceMix是Apache基金會下的一個ESB總線,同一時候也是一個獨立的JBI容器(也就是說它支持完整的JBI規范)。說它是一個獨立的JBI容器,是由於它擁有自己獨立的執行環境,能像應用server一樣啟動,並支持動態的熱部署等,這一點則差別於CXF。

ServiceMix的容器執行環境採用內核的架構,並以Geronimo關於J2EE方面的實現為基礎(當然也就支持J2EE的各方面規范,比如安全性方面的JAAS等),所以在性能上還是較為出色的。在通信上,整合了ActiveMQ,也支持多種的通信協議,比如HTTP和JMS。同一時候在管理組件上採用了JMX的管理架構,從而可以對部署在總線上的各種組件進行動態的配置和管理,或通過Web的形式,或通過JMX遠程訪問均可。ServiceMix內核可以整合到所處的操作系統中,從而作為OS的對外提供的服務。差別與其它總線的是,ServiceMix還提供了自己的腳本命令控制台,並通過一些簡單命令來管理應用組件以及ServiceMix內核實例。

關於ServiceMix的資料也較為的完備,當中當然也包含一些簡單的小樣例。關於組件擴展方面和流程引擎整合方面的具體資料則不夠具體。假設要做進一步的總線上的擴展,則須要對源碼和樣例進行較為深入的學習和研究,當然這一切的基礎是對JBI的規范有較為全面的了解。

四.JBoss ESB

JBoss ESB是JBoss社區為面向SOA而提出的一個EAI系統平台。它提供了非常多EAI本身所應具有的功能,比如業務流程監控、集成開發環境、工作流用戶接口、業務流程管理、分布式計算架構以及作為應用容器的功能等。能夠說JBossESB在功能上是較為強大的。但相對於上面的總線而言,它的技術架構方案是最獨立的。由於它除了支持J2EE標准外,對於JBI規范壓根就不沾邊。當然也就不存在JBI規范中的規范化消息路由、服務引擎和綁定組件了。JBossESB除了支持 Web Service外,還支持多種的遠程調用協議,比如JMS。僅僅是相對於ServiceMix和CXF而言,假設要對JBossESB進行擴展,可能要花費較大的時間和精力。

JBossESB相對上述的開源項目而言,一個非常大的優勢在於文檔資料是最為豐富和完備的。所以在開發和擴展上減小了不小的阻力。它而且依托於成熟的JBoss社區,周圍齊全的開源項目支持,為后期的平台擴展提供了豐富的選擇空間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM