隨筆 - 19, 文章 - 93, 評論 - 17, 引用 - 0
          數據加載中……

          通過ESB組合SOA和EDA

          【導讀】
          ??????現今的業務應用程序很少完全獨立運行。面向服務的體系結構(SOA)和事件驅動的體系結構(EDA)是處理復雜集成挑戰的兩個不同范例。組織如何選擇更好的方法來滿足其需求呢?實際上他們并不必選擇:企業服務總線(Enterprise Service Bus,ESB)允許同時實現 SOA 和 EDA 概念。
          ?

          ??????現今的業務應用程序很少完全獨立運行。它們需要彼此連接,以便創建集成解決方案,從而為組織帶來價值。面向服務的體系結構(Service-Oriented Architecture,SOA)和事件驅動的體系結構(Event-Driven Architecture,EDA)是處理復雜集成挑戰的兩個不同范例。組織如何選擇更好的方法來滿足其需求呢?實際上他們并不必選擇:企業服務總線(Enterprise Service Bus,ESB)允許同時實現 SOA 和 EDA 概念。

          引言

          ??????為了適應市場變化,各個組織都傾向于將重點放在靈活性和響應能力上。IT 挑戰實際上通常使用恰當的體系結構和技術來支持此業務遠景。早期的活動是為了將獨立應用程序拆分為可調用的子例程,但遠程對象調用和消息傳遞處理的發展改變了這一點。

          ??????而在最近,增加對組織中現有資產的重用(可反過來提高投資回報)和集成異類應用程序以形成一致業務解決方案開始變得非常關鍵了。而這促進了 SOA 和 EDA 的廣泛采用。這兩個不同的設計范例均以最大化獨立于應用程序的服務(可提供 IT 適應能力和效率)的重用為目標。但構建和部署大型集成解決方案始終是一項比較困難的任務。而這正是 ESB 的用武之地,因為它簡化了任務關鍵型應用程序的靈活而可靠的體系結構(SOA 和 EDA)的實現。

          面向服務的體系結構

          ??????SOA 是一個體系結構概念,其中所有的功能或服務都使用描述語言加以定義,且各自的接口均可通過網絡進行發現。此類接口采用獨立方式定義,不受服務實現所在的硬件平臺、操作系統和采用的編程語言的影響。

          ??????SOA 的最重要優勢之一是,它可以脫離軟件開發中的孤立方式(在此方式中,每個部門構建自己的系統,而完全不考慮組織中的其他人已完成了哪些東西)。這種“豎井 (Silo)”方法將會導致低效且開銷巨大的情況出現,可能會多次開發、部署和維護相同的功能。SOA 基于在整個組織范圍內共享的服務組合,并提供了對現有資產的有效重用和集成,如圖 1 中所示:

          圖 1:“豎井”方法與 SOA 方法的對比

          ??????SOA 基于方便的請求/應答機制,如圖 2 中所示。服務使用者將通過網絡調用服務提供者,且必須等待,直到提供者一端的操作完成。

          圖 2:SOA 中的請求/應答機制

          表 1 對 SOA 解決方案的基本特征進行了總結:

          功能

          描述

          松散耦合的交互

          服務的調用獨立于其技術和位置。

          一對一通信

          一個特定服務一次由一個用戶調用。通信是雙向的。

          基于用戶進行觸發

          控制流由客戶機(服務使用者)發起。

          同步

          應答將以同步方式發回給使用者。

          表 1:基本 SOA 特征

          事件驅動的體系結構

          ?????????在 2003 年,Gartner引入了一個新術語,用以描述基于事件的設計范例:事件驅動的體系結構 (EDA)。EDA 定義了一種用于進行設計和實現應用程序和系統的方法,其中的事件在各個分解的軟件組件和服務間進行傳遞。EDA 并不會替代 SOA,而只是對 SOA 形成補充。雖然 SOA 通常更適合請求/響應交換環境,但 EDA 引入了一些長時間運行的異步進程功能。而且,EDA 節點可發布事件,且并不依賴于所發布的服務的可用性。它真正地實現了同其他節點的分離。EDA 有時也稱為“事件驅動的 SOA”。

          ?????????EDA 使用消息傳遞來在兩個或多個應用程序進程間進行通信。此類通信是由“事件”發起的。觸發器通常與某種業務情況對應。該事件的所有訂閱者將隨后得到通知,從而激活,如圖 3 中所示:

          圖 3. 事件驅動的體系結構中的發布/訂閱機制

          表 2 對 EDA 的基本特征進行了總結:

          功能 描述
          分離的交互 事件發布者并不會意識到事件訂閱者的存在。
          多對多通信 采用發布/訂閱消息傳遞,一個特定事件可以影響多個訂閱者。
          基于事件的觸發器 控制流由接收者確定(基于發布的事件)。
          異步 通過事件消息傳遞支持異步操作。

          表 2:基本 EDA 特征
          ?

          企業服務總線

          定義

          ??????企業服務總線(Enterprise Service Bus,ESB)將事件驅動的方法和面向服務的方法結合使用,以簡化業務單元的集成,從而在異類平臺和環境間建立聯系。ESB 充當允許不同應用程序進程之間進行通信的中間層。部署到企業服務總線的服務可以由使用者或事件觸發。它同時支持同步方式和異步方式,可促進一個或多個參與者之間的交互(一對一和多對多通信)。因此 ESB 可提供 SOA 和 EDA 范例的所有功能。

          ??????企業服務總線是一種體系結構模式,可以采用許多不同的產品在組織內實現,并組裝起來作為聯合總線?,F在有越來越多的供應商開始提供完整的產品來滿足企業集成需求。例如 IBM WebSphere? Enterprise Service Bus就提供了集成總線功能,可以有效地連接應用程序(利用 Web 服務和 J2EE 等標準)。

          ESB 服務

          ??????目前并沒有定義 ESB 的正式標準,但通常都認為 ESB 至少必須提供傳輸、事件 和中介 服務,以幫助集成大型異類應用程序。

          傳輸服務?

          ??????必須確保通過企業總線互連的業務流程間的消息正確交付。傳輸還包括基于內容的路由功能。這意味著可以將消息定向到不同的目的地。作為任務關鍵型環境的一部分,這些服務采用事務處理方式,得到了相應的安全保證,并會對其進行監視。

          事件服務?

          ??????提供事件檢測、觸發和分發功能。這些功能與事件處理概念相關,事件處理是一種用于分析和控制事件驅動的體系結構 (EDA) 中相互關聯事件組成的復雜系列。事件驅動的范例并不是新概念。不過,它們促進了行業的發展,代表著復雜事件處理 (Complex Event Processing) 的核心概念。

          中介服務?
          ??????
          ??????用于滿足兩個目的。首先,中介可確保提供必要協議,以滿足集成異類系統的需求。由于兩個不同的服務并不一定使用相同的傳輸協議,而中介服務可負責從一個協議到另一個協議的轉換,因此可以進行此類通信。協議轉換對于業務事務的所有參與服務是透明的。

          圖 4:協議中介——由 ESB 進行協議轉換

          ??????其次,中介提供了轉換任何消息內容的可能性。這是業務集成的關鍵服務。它可確保任何進程都能理解通過總線傳輸的數據。而且,中介允許對內容進行擴展,以使用附加信息豐富消息內容。內容轉換由總線負責進行管理:此過程對于任何參與服務都是透明的。

          圖 5:內容中介——消息內容由 ESB 進行轉換和擴展

          ??????讓我們舉個例子來說明內容中介的好處。假定有一個名為 Yummy Inc. 的公司提供在線訂餐服務。為了對其向客戶提供的菜單進行計劃,他們需要驗證其供應商提供的食品的可用性和價格。為了獲得此信息而發送的消息的典型結構包括:產品標識、數量和目標配送日期。

          圖 6:可用性消息的結構

          ??????當然,Yummy Inc. 及其供應商并未采用相同的方式來表示這些信息。例如,兩個系統上的日期格式就不相同。而且,供應商需要使用配送位置信息,因為 Yummy Inc. 并不是其唯一的客戶。ESB 中介服務可以將所傳輸消息的信息進行轉換和擴展,以便目標服務接收到其所需的所有信息,如圖 7 中所示:

          圖 7:ESB 中介的內容轉換和擴展

          ??????通過利用之前定義的關鍵技術服務,ESB 可提供靈活的連接基礎設施,用于集成松散耦合的應用程序。它同時支持 SOA 和 EDA 范例。

          圖 8:使用企業服務總線連接各個服務

          ESB 的好處

          ??????通過利用其內部服務,ESB 解決方案可帶來各種好處。就本質而言,它簡化了連接各種相異應用程序的任務,從而最終提高了業務的靈活性,并提供了以下功能:

          基于標準的連接

          ?????????作為很多異類應用程序間的集成中樞,ESB 必須提供很多不同的集成技術,并對大量供選擇的標準技術加以利用。

          ?????????消息傳遞集成通常支持 Java? Message Service (JMS) API,而企業信息系統的連接則是由 J2EE Connector Architecture (JCA) 提供的。為了確保 Web 服務互操作性,ESB 支持 JAX-RPC 編程模型。不同的 ESB 組件間的集成可以通過 Java Business Integration (JBI) 規范進行標準化。

          滲透性集成

          ?????????ESB 具有滲透性本質,因為它可以跨不同的部門、業務單元甚至業務合作伙伴進行應用程序集成。而且,它的核心體系結構原則還可以促進構建于異類開發環境上的應用程序之間的通信。例如,ESB 解決方案可以在不同的編程語言(J2EE、C++ 或 .Net)之間起到橋梁作用。

          可靠集成

          ?????????ESB 體系結構模式可提供系統安全性、可伸縮性或可用性。企業服務總線使用 SOA 和 EDA,可同時提供同步和異步功能。傳輸服務可確保可靠交付和事務完整性。因此,ESB 的每個特征都對其穩健性進行了增強,可盡可能減少集成或聯合解決方案失敗的風險。

          結束語

          ?????????企業服務總線是一種體系結構模式,可通過傳輸、事件和中介服務促進和簡化業務集成。它可連接各個異類節點并作為中介傳遞其間的所有通信和交互,這些節點可分散在面向服務的體系結構(同步一對一方法)和事件驅動的體系結構(異步多對多方法)中。ESB 是目前處理集成挑戰的最有效方法,是可提供最大業務靈活性和不同應用程序間的高效連接技術解決方案。

          posted on 2006-12-03 09:36 BPM 閱讀(410) 評論(0)  編輯  收藏 所屬分類: SOA

          主站蜘蛛池模板: 通道| 宾阳县| 图片| 江门市| 义乌市| 大港区| 海城市| 宁远县| 镇康县| 达拉特旗| 平远县| 永平县| 云林县| 武夷山市| 普兰县| 东乡| 铜梁县| 腾冲县| 临清市| 龙海市| 博乐市| 阿克| 铜梁县| 界首市| 收藏| 宾阳县| 南开区| 平乐县| 英超| 宜阳县| 轮台县| 义马市| 伊金霍洛旗| 高清| 怀集县| 丽江市| 双柏县| 高邑县| 绩溪县| 新乡县| 溧阳市|