ESB是什麼?
ESB是一個主要依賴XML消息交換的企業級消息系統,這種消息繼而被智能的通過一種非集中式的架構路由和轉換。
開源的ESB?
Mule,ServiceMix,Apache Synapse,JBoss ESB,Sun的OpenESB和Apache Camel等。
ESB和SOA之間的關系?
原因是這兩個詞包含的内涵太豐富了,無法用一兩句話說清楚,并且,這個詞在不同的地方含義也有所不同。
SOA----面向服務架構,實際上強調的是軟體的一種架構,一種支撐軟體運作的相對穩定的結構,表面含義如此,其實SOA是一種通過服務整合來解決系統內建的一種思想。不是具體的技術,本質上是一種政策、思想。
ESB----企業服務總線,像一根“聰明”的管道,用來連接配接各個“愚笨”的節點。為了內建不同系統,不同協定的服務,ESB做了消息的轉換解釋與路由等工作,讓不同的服務互聯互通。
目前ESB與SOA的确切概念依然沒有。但可以明确的說SOA就是一種服務內建思想,它的不同實作方式可能差别很大,目前SOA最常見的實作方式是SCA和JBI。
ESB的曆史?
是從企業內建應用(EAI)衍生出來的。
看看什麼是MOM
MOM指的是利用高效可靠的消息傳遞機制進行平台無關的資料交流,并基于資料通信來進行分布式系統的內建。
面向消息的中間件使用消息傳送提供者來協調消息傳送操作。MOM系統的基本元素是用戶端、消息和MOM提供者,後者包括API和管理工具。MOM提供者使用不同的體系結構路由和傳送消息:它可以使用集中式消息伺服器,也可以将路由和傳送功能分布在每個用戶端上。某些MOM産品結合了這兩個方法。
使用MOM系統,用戶端可以進行API調用,以便将消息發送到由提供者管理的目的地。該調用會調用提供者服務以路由和傳送消息。在發送消息之後,用戶端會繼續執行其他工作,并确信在接收方用戶端檢索該消息之前,提供者一直保留該消息。基于消息的模型與提供者的協調耦合在一起,使得建立松散耦合的元件系統成為可能。這樣的系統可以繼續可靠地工作,即使在有個别元件或連接配接失敗時也不會停機。
由消息傳送提供者協調用戶端之間的消息傳送的另一個優點是:通過添加管理界面,可以監視和調整性能。這樣,用戶端應用程式便不必關心發送、接收和處理消息之外的任何問題。對于互操作性、可靠性、安全性、可伸縮性和性能之類的問題,應當由管理者通過編碼實作MOM系統來解決。
至此,我們已經介紹了使用面向消息的中間件連接配接分布式元件的很多優點。下面将介紹其缺點。缺點之一源自松散耦合本身。在RPC系統中,隻有在被調用函數完成任務之後,才能傳回調用函數。在異步系統中,調用方用戶端會繼續為接收方裝入工作,直到處理裝入工作所需的資源耗盡且被調用元件發生故障。當然,可以通過監視性能和調整消息流來盡量減少或避免這些情況,但對于RPC系統卻不必這樣做。有一點很重要,那就是了解每種系統的優缺點。每種系統所适合執行的任務都不同。有時,您需要結合兩種系統才能完全獲得所需的行為。
看一下結構

使用這種結構最大的優點是它是非集中式的。
将其擴充一下,将內建中介改為服務擴充卡,這樣的功能就完全可以實作ESB了。
ESB的核心功能?
面向服務的架構 - 分布式的應用由可重用的服務組成
面向消息的架構 - 應用之間通過ESB發送和接受消息
事件驅動的架構 - 應用之間異步地産生和接收消息
協定的适配,消息的傳遞,智能路由,消息轉換,任務/定時器,監控及可擴充的API。
ESB适用的場合?
服務化,服務虛拟化,異步通信和協定橋接。
服務化:将應用功能服務化,比如某個系統,并沒有提供對外的服務接口或者提供的比較差強人意,可以考慮使用ESB。
服務虛拟化:電話的例子比較能說明問題,通常情況下你打電話隻是要撥通号碼,而不需要知道對方的實際位置,号碼就是虛拟的服務,而實際的應用在背景進行管理。
異步通信:處理異步的消息或者異步的請求。
協定橋接:多協定之間的轉換。
使用Apache Synapse
Apache Synapse有什麼功能?
1,協定擴充卡
2,面向消息的中間件,可以配置與任何JMS相容的消息系統互動
3,基于XML的可靠消息傳遞
4,智能路由和分發,可以實作多種方式的過濾
5,消息轉換服務
6,任務/定時器,可以支援類似unix/linux的cron那樣的複雜精細的排程
7,服務品質提供及web中介服務,可以實作負載均衡,故障轉移的規則邏輯,可以實作消息級别的劃分
8,監控和管理,提供JMX監控的支援
9,可擴充的API