最近爲公司完成了一個 ESB 的設計。下面簡要說明一下具體的設計方案。html
企業 SOA 總體方案緩存
在前一篇《SOA、ESB、NServiceBus、雲計算 總結》中說到,SOA 是面向服務的架構,其核心思想是把業務進行組件化,而業務組件的能力服務化。架構
咱們的整個 SOA 的設計分爲兩個層面:一個是系統間的 SOA 設計,另外一個則是單個系統內的 SOA 設計。系統間的 SOA 設計,主要是設計一個 ESB 系統來實現各業務系統間的交互。而系統內部的 SOA 設計,則是創建一個組件化的技術平臺,使得系統的開發能以一個個業務組件的形式完成,並經過技術平臺來實現各業務組件的組合與互連。異步
通常說的 SOA 設計,都是在講如何進行系統間的互連,例如如何進行 ESB 的設計。可是,不管是系統間互連,仍是系統內部的組件化,其實都是 SOA 思想在不一樣層面上的體現。而我認爲,應用系統內部的 SOA 設計,會更重要。由於它不可是一個低耦合、高複用的產品設計,並且也爲系統間的 SOA 提供了更好的支持。工具
本文,主要說明如何實現 ESB 的設計。而更重要的應用系統內部的組件化產品開發平臺,則留到下一篇。組件化
ESB 目標功能性能
在前一篇中,列出了一個較完整 ESB 應有的功能。SOA 不但包括簡單的系統間互邊的功能,也應該包含更高級的 BPM 業務流程編排的功能。網站
下面,簡單列出了咱們對於咱們的 ESB 的功能樹:雲計算
圖中,功能按優先級進行了排序。第一個階段,只會實現其中紅色的部分。而服務編排,則放到了最後。紅色部分,是一個 ESB 應該具備的最小功能集。在交互模式部分,我選擇了實現‘響應/請求’模式,這種交互方式在系統間互連時場景相對較少,可是不須要引用 MSMQ 等功能,因此實現起來會更簡單。spa
ESB 主體設計
對於 ESB 的主體設計,是參考了網上另外一個 ESB 的設計,下面是它的設計圖:
ESB 詳細設計
首先,規劃出 ESB 整個系統內部的全部組件。
如下是一些詳細的調用設計。
ESB 網站:
模擬服務:
服務的調用:
服務調用過程當中的管道模塊設計:
路由表及路由更新:
適配器:
最後,是最重要的持久化的領域實體:
細節不說了,有興趣的朋友能夠參考初步的設計,並歡迎與我交流。:)