本文介紹了實現一個自產的輕量型HTTP://www.aliyun.com/zixun/aggregation/7921.html">企業服務匯流排 (ESB) 的設計藍圖,該企業服務匯流排利用了常用的整合式開發環境 (IDE) 和中介軟體。 本文中的場景使用了 IBM® WebSphere® Application Server V8(一個用於 JAVA EE 應用程式的強健的部署環境)和 IBM Rational® Software Architect(提供了工具來設計、開發、測 試和打包要部署到應用伺服器上的 JAVA EE 應用程式)。
業務場景
挑戰
為了滿足業務需求,一家服務提供者需要在一年內提供其應用程式的多個版本。 每個版本都需要更新現有服務協定,並將一個新的 Web 服務版本部署到一個生產環境中。
最富有成本效益的解決方案通常是將單一服務實例部署在生產環境中,以減少維護成本。 但是,由於預算限制或維護計畫,服務使用者並不總是會在新版本發佈後儘快採用它。 此場景迫使服務提供者託管多個服務版本來支援客戶需求。
解決方案
WebSphere Enterprise Service Bus (WebSphere ESB) 和 WebSphere DataPower® Appliances 都提供了強健的 ESB 功能,支援在服務使用者和供應商之間動態路由和轉換請求。 這些功能使服務使用者能與處理請求的服務實例分離開來。 通過利用 ESB,服務提供者可簽署多個服務協定,而無需在生產環境中託管服務的多個實例。
當只需要 WebSphere ESB 和 WebSphere DataPower 中提供的功能的子集時,客戶可以選擇將輕量型的 ESB 功能構建到他們的 JAVA EE 應用程式中,以滿足其專案的特定需求。
實現輕量型 ESB 的藍圖
實現一個輕量型 ESB 的藍圖應包含多個層,以處理接收、路由、轉換和回應客戶請求所需的不同功能。 本文給出的藍圖包含以下 4 個層:
路由層 -- 一個 JAVA API for RESTful Web Services (JAX-RS) RESTful 端點,用於 URL 模式匹配和請求路由。 仲介層 -- 在資料內容級別管理用戶端與特定服務版本之間的請求的仲介和映射模組。 服務調用層 -- 服務協定的管理器,用於構建需要的請求,調用一個物理服務端點,以及在回應中返回內容。 多協定監聽器層 -- 一個監聽器服務,比如 WebSphere MQ、JAVA Message Service (JMS),或另一個供非 JAX- RS 用戶端應用程式加入輕量型 ESB 的服務。
圖 1 顯示了這個輕量型 ESB 藍圖的 4 層的高級設計和介面:
圖 1. 輕量型 ESB 藍圖的設計和介面
在真實示例中應用這個輕量型 ESB 藍圖
下面的示例展示了該藍圖的一個真實使用場景:
一個服務提供者將其 MyService 的當前產品實例從版本 A 更新到版本 B。 MyService 版本 B 的安裝會導致 MyService 版本 A 被淘汰,因此服務提供者僅支援 MyService 版本 B 的一個實例。 服務提供者與 ESB 設計團隊合作定義必要的路由、仲介和服務調用邏輯,以對新客戶和現有客戶提供持續的支援。 ESB 設計團隊利用該藍圖實現一個支援兩個 MyService 版本的用戶端解決方案。