天天看點

企業 SOA 設計(1)–ESB 設計

最近為公司完成了一個 esb 的設計。下面簡要說明一下具體的設計方案。

企業 soa 整體方案

我們的整個 soa 的設計分為兩個層面:一個是系統間的 soa 設計,另一個則是單個系統内的 soa 設計。系統間的 soa 設計,主要是設計一個 esb 系統來實作各業務系統間的互動。而系統内部的 soa 設計,則是建立一個元件化的技術平台,使得系統的開發能以一個個業務元件的形式完成,并通過技術平台來實作各業務元件的組合與互連。

一般說的 soa 設計,都是在講如何進行系統間的互連,例如如何進行 esb 的設計。但是,不論是系統間互連,還是系統内部的元件化,其實都是 soa 思想在不同層面上的展現。而我認為,應用系統内部的 soa 設計,會更重要。因為它不但是一個低耦合、高複用的産品設計,而且也為系統間的 soa 提供了更好的支援。

本文,主要說明如何實作 esb 的設計。而更重要的應用系統内部的元件化産品開發平台,則留到下一篇。

esb 目标功能

在前一篇中,列出了一個較完整 esb 應有的功能。soa 不但包括簡單的系統間互邊的功能,也應該包含更進階的 bpm 業務流程編排的功能。

下面,簡單列出了我們對于我們的 esb 的功能樹:

企業 SOA 設計(1)–ESB 設計

圖中,功能按優先級進行了排序。第一個階段,隻會實作其中紅色的部分。而服務編排,則放到了最後。紅色部分,是一個 esb 應該具有的最小功能集。在互動模式部分,我選擇了實作‘響應/請求’模式,這種互動方式在系統間互連時場景相對較少,但是不需要引用 msmq 等功能,是以實作起來會更簡單。

esb 主體設計

對于 esb 的主體設計,是參考了網上另一個 esb 的設計,下面是它的設計圖:

企業 SOA 設計(1)–ESB 設計
企業 SOA 設計(1)–ESB 設計
企業 SOA 設計(1)–ESB 設計

esb 詳細設計

首先,規劃出 esb 整個系統内部的所有元件。

企業 SOA 設計(1)–ESB 設計

web portal:esb 對外以網站的形式公布。同時,服務調用者、提供者,都是直接使用網站提供的功能。

adapter:協定的擴充卡元件。

service invoker:服務的同步調用器。

async invoker:異步方式的同步調用器。

service mocker:這個元件用于實體 esb 的服務可以以 ws 等方式暴露。

esb message:esb 内部的消息結構體。

service registry:服務的注冊庫。

service router:服務的路由器元件。

service router cache notification:路由緩存通知元件。

logger:日志元件。

exception handler:異常處理元件。

performance counter:服務調用過程中的一些性能統計工具。

以下是一些詳細的調用設計。

esb 網站:

企業 SOA 設計(1)–ESB 設計

模拟服務:

企業 SOA 設計(1)–ESB 設計

服務的調用:

企業 SOA 設計(1)–ESB 設計

服務調用過程中的管道子產品設計:

企業 SOA 設計(1)–ESB 設計

路由表及路由更新:

企業 SOA 設計(1)–ESB 設計

擴充卡:

企業 SOA 設計(1)–ESB 設計

最後,是最重要的持久化的領域實體:

企業 SOA 設計(1)–ESB 設計

細節不說了,有興趣的朋友可以參考初步的設計,并歡迎與我交流。:)