ESB是什麼
- ESB綜述1:定義ESB 、ESB綜述2:ESB使用案例 (InfoQ)
- 探索企業服務匯流排 part1(IBM DW) ,part2
- Defining the ESB (DDJ)
- 《Enterprise Service Bus》 ,O'Reilly 2004
ESB就是一個服務的中介,形成服務使用者->ESB服務Proxy->服務提供者的生物鏈,中介的作用在不同應用中各有不同:
- 解耦中介:客戶對實際服務提供者的身份、物理位置、傳輸協議和介面定義都是不知道也不關心的,互動整合代碼提取到了商務邏輯之外,由ESB平台進行中央的宣告式定義。
ESB平台實現協議轉換(WebService,Http,JMS...),訊息轉換(轉換、充實、過濾),訊息路由(同步/非同步、發布/訂閱、基於內容路由、分支與彙總...)。
- 服務中介:ESB平台作為中介提供服務互動中的基礎服務。
ESB平台實現SLA(可靠性保證,負載平衡,流量控制,緩衝,事務控制,加密傳輸),服務管理監控(異常處理,服務調用及訊息資料記錄,系統及服務的狀態監控,ESB組態管理),統一安全管理(這個有點理想主義)。
- 服務編排:多個服務進行編排形成新的服務。
ESB支援一個直觀的形式定義新組合服務的流程(工作流程、BPEL 或 代碼級編排)。
缺點就是天然的額外中轉效能消耗,中央ESB的效能瓶頸和高可用性問題。
ESB實現開源ESB實現
- Mule ,很多時候更像一個Service Container,OpenSource界暫時第一。
- WSO2 ,Axis2 背後公司的作品。
- ServiceMix ,關注於JBI的實現。
- JBoss ESB , Sun OpenESB 沒有關注。
開源輕量級ESB
- Apache Camel ,一個嵌入式的Router類庫。
- Spring Intergration ,相當清爽輕量的Spring Style的Router。
商業ESB
- BEA AquaLogic ,作為ESB概 念比Mule純粹,同時使用JMS作為message flow的底層,在Weblogic上實現HA,群集和監控管理介面。但路由編排再次走了圖形編程+XML Context(XQuery)的老路,相當雞肋。
- IBM(Message Broker, Websphere ESB,DataPower),
Misc
- Implement two-way communication among ESB components(Java World)
- Enterprise Service Bus: Yet Another Paradigm Shift or Better Orchestration of Old Technologies(TSS)