又過一年了,更新一次自己的ESB筆記,內容實在,枯燥無味,濃縮即精華....年度最大發現應該是Fuse ESB 4.0吧。

ESB的類型

    ESB最終以兩種截然不同的形態存在于實際項目中:
    一種是純粹的SOA交互基礎中間件,是系統間松耦合地互操作的基礎設施。
    一種是ESB風格的應用,如電信的能力網關那樣聯合多個系統提供組合服務。此時它既有一個ESB中間件作為其基礎設施,同時也遵循著ESB的編程模型。

    兩者間的界限并不明顯,在漸變中ESB對周邊服務的業務邏輯會越來越了解,直接體現在ESB中的業務邏輯也越來越多。

解耦中介

   由ESB充當解耦的中介,使得服務消費者對實際服務提供者的身份、物理位置、傳輸協議和接口定義都是不知道也不關心的,

  • 協議轉換(WebService,Http,JMS...)
  • 數據轉換(傳輸協議特定格式與ESB統一消息模型的轉換,各服務間數據模型的映射轉換)
  • 消息路由(靜態端點配置,基于內容的過濾與路由)
  • MEP轉換(同步/異步)
  • 組合服務(ESB服務編排、可選的BPEL流程引擎)

   ESB既支持通過統一的配置機制完成以上功能,也支持開發者在其上編寫富含業務邏輯的數據轉換、消息路由甚至業務處理模塊。

服務中介

   由ESB為服務的交互過程統一、批量、低廉的提供一系列的基礎服務 。

  • 服務治理 (服務注冊中心)
  • QOS (負載均衡,可靠性傳輸,異常處理,流量控制)
  • 統一安全管理 (ESB的基本安全控制,含業務邏輯的安全控制)
  • 服務日志與監控(服務調用及消息數據的日志清單,系統及服務的性能與狀態監控)
  • BAM業務活動監測(如發現某個服務的調用比昨天增加超過了一定的百分比,CEP復雜事件處理)

開源ESB實現

      紛紛擾擾后,只剩下有實力的四國:

  • Fuse ESB , 基于ServiceMix與Camel,由IONA公司(被Progress收購)提供支持,ServiceMix 4.0 重點已從JBI移到OSGI,而且IONA同時也是ActiveMQ與CXF背后的公司,三者整合良好。
  • Mule  ,最早聲勢最大的開源ESB,由MuleSource公司提供支持。缺點是Transport質量較差,缺乏強力的AS底層,缺少服務中介能力,服務編排方式不理想.
  • JBoss ESB , JBoss提供支持,中規中矩沒什么明顯缺點的ESB,部署于JBossAS上,特色是可用JbossRules編寫Router,用JBPM實現流程引擎。
  • WSO2 ,基于Apache Synapse,由Axis2 背后的公司提供支持,但自己對Axis2一系向來不感冒。

商業ESB

  • BEA AquaLogic ,作為服務中間件非常好,路由編排再次走了圖形編程+XML Context(XQuery)的老路,在業務復雜時不容易玩,同時缺乏直接業務編程能力,只能調Java靜態方法或遠程EJB2.1方法。
  • IBM(Message Broker, Websphere ESB,DataPower),未接觸。
  • Progress Sonic ESB,最早的ESB,未接觸。