1.2 ESB

ESB: Enterprise Service Bus, 又稱企業服務匯流排, 是一種結合了傳統middleware, xml 與web service的產物. 其提供了網路中最基本的連接中樞, 是構築企業神經系統的必要元素. 它的出現也改變了傳統的軟體架構, 可以提供比傳統的middleware產品更為廉價的解決方案, 同時還可以消除不同應用程式之間的技術差異, 讓不同的應用伺服器協調運作, 實現了不同服務之間的通信與整合, 主要優點是它減少了應用程式間交互所需的點對點連接的數量. 從功能上來看, ESB提供了event-driven和document-based的處理模式, 以及分布式的運作管理機制, 且支持基於內容的路由和過濾, 具備了複雜資料的傳輸能力, 並能夠提供一系列的標準介面.

基本概念: 從SOA發展而來, 採用了”BUS”這種模式來管理和簡化應用程式程式之間的整合拓墣結構, 以廣為接受的開放標準為基礎來支持應用程式之間於message, event和service級別上動態的互動, 是一種在鬆散耦合的service和應用程式之間標準的整合方式.

通常ESB可作用於以下情境:

  1. 服務導向(SOA)的架構 - 分布式的應用程式由可重用的服務組成

  2. Message導向的架構 - 應用程式之間通過ESB發送和接收message

  3. 事件導向(Event-driven)的架構 - 應用程式之間非同步地產生和接收message

基本功能:

  1. 管理service的metadata: 於BUS的範疇內對service的註冊命名及尋址(addressing)進行管理

  2. 傳輸服務: 確保通過enterprise bus互相連結的業務流程之間的message能正確的deliver, 還包括content-based的路由功能

  3. 中介: 提供位置透明的路由和定位服務; 提供多種消息傳遞形式; 支持廣泛使用的protocol

  4. 多服務整合方式: 如web service, messaging和adapter等等

  5. 對service和event管理的支持: 呼叫服務的紀錄, 測量和資料監控; 提供event檢測, 觸發和分佈功能

擴展功能:

  1. 服務導向的metadata管理: ESB必須了解被它中介的兩端, 即service的request以及請求者對service的要求, 還有service provider和其所提供的service的描述

  2. Mediation: 其必須具有某種機制能夠完成中介的作用, 如protocol轉換

  3. 通信: service的publish/subscribe, request/response, sync/async message, routing/addressing

  4. 整合: legacy system adapter, service的編排和mapping, protocol轉換, 資料轉換等

  5. service互動: service interface的定義, service implementation的置換, service message model, service discovery等

  6. service security

  7. service quality: transaction, service的可交付性等

  8. service level: performance, availability等

-> ESB中, 最常提到的兩個功能是message transformation與message routing

在維基百科上的ESB頁面, 可以看到下面這張圖:

我整理了一下我人生的第一份工作 --- 在某家電信業幫該公司翻新整個後端核心系統的架構圖如下:

由於當初也是用ESB的方式(使用Spring Integration作為基礎)在整合前端CRM送進來的各種資料(xml), 並且透過work flow engine來指派各階段中處理好的資料要如何與後端各種複雜的service去互動, 所以想寫在這邊比對一下.

由圖中可見當時這個電信業案子比較像是ESB + SOA的型態, 在搭配了Oracle OSM(基本上我覺得這東西很像是BPEL)之後, 就成了一套很有條理的電信業核心系統的solution. 在這個架構圖中, 各個階段的application或是database都是放在Oracle Weblogic上的, 至於message queue的部分, 則是直接使用Weblogic裡面的JMS實作.

Last updated