架構那點事係列三 - 由EAI到ESB
最近在梳理公司的EAI平台 — JCAPS,順便翻閱了一些“曆史”文獻,梳理成文,希望能加深大家對SOA的認識。
ESB 是軟件行業的下一代集成產品的名稱。ESB 沿用企業應用程序集成 (EAI) 的技術道路前行,在改進 EAI 中的某些技術環節的同時,采用了 EAI 技術中的更為有效的方麵。盡管 EAI 和 ESB 的目標相同,但是在技術體係結構方麵,這兩項產品的區別仍很大。
從曆史上看,EAI 技術是軟件行業首次嚐試將市場上各種不同中間件解決方案整合為單一產品套件。當各公司開始尋求在不同的自動化係統間交換信息時,對 EAI 的需求也就應運而生了。在上世紀的九十年代,企業範圍內諸如客戶關係管理 (CRM) 和企業資源計劃 (ERP) 等業務舉措是促使 EAI 係統誕生的主要驅動因素。
在 EAI 麵世之前,中間件的藍圖主要是由一係列協議棧(例如 CORBA、Tuxedo 和 MQ)以及數據格式(XML、XDR、固定格式、可變格式等)構成的。這些技術中的每一項都能夠在很大程度上滿足企業自身的集成需要,但是這需要選定的協議和數據格式在企業中完全通用才能夠實現。事與願違,實際情況卻是,大中型 IT 企業都不可避免的具有異構特點。
圖 1 EAI 代理程序充當交換中心角色
如圖 1 所示,EAI 采用了一種簡單有效的方式來解決不同應用程序間的集成問題。EAI 軟件創建了一個交換中心,用於轉換不同應用程序間的數據和消息。EAI 交換中心使用這些適配程序將所有進入數據的格式重新轉換為一種 EAI 交換中心內部和外發適配程序都可以理解的通用格式,並將其稱為規範格式。每個適配程序都是一個有自主權的實體軟件,存在多個分別負責管理各種應用程序特定交互操作的管理層,同時還另具有一些傳輸層,用於管理與應用程序和交換中心的連接。
為實現 EAI 各組件間的連接,EAI 交換中心會在所有的內部集成過程中都采用一個如 JMS 的異步消息代理程序。除了重新更改消息負載格式外,所有應用程序間的交互都要經過中間件的多次轉換。而且,應用程序所需的,例如事務處理和驗證/授權安全等服務質量功能通常都無法實現這些轉換。
相對人工編碼而言,每次改變企業應用程序組合的中間件和應用程序接口時 EAI 具有明顯的優勢。這是一項技術上的突破,當整個行業的想法都聚焦在為支持整個企業的舉措而需要大型應用程序交換數據時它將發揮最大的作用。因為這是第一代的 EAI 工具,供應商嚐試使用增量的方式來處理 EAI 的缺點。但是,因為不斷地添加新功能,這使得 EAI 係統變得龐大、缺乏靈活性且難於管理。從長遠來看,如果要實現真正的企業集成需要一種更好的技術。
ESB 是下一代的企業集成技術,在 EAI 退出市場後取代了它的位置。與 EAI 一樣,ESB 也是一項允許開發人員集成使用不同中間件技術創建的異構係統的技術。ESB 一方麵利用了它麵向服務的優勢,同時還通過使用更有效、更靈活的內部體係結構進一步改進了它的上一代 EAI 產品。
了解 SOA 和 ESB 之間的關係非常重要。SOA 代表策略、架構,這些因素使得應用程序可以提供各種功能並且可以作為服務集合供其它應用程序使用。服務是一種業務完整的邏輯工作單元,可以通過直接開放的文檔接口從獨立設計環境以編程方式進行訪問。可以調用、發布和發現服務,也可以使用單一的基於標準的接口方式抽象實現。應用程序軟件由以鬆散 1 對 1 耦合關係存在的服務和服務消費者(即客戶)構成。
圖3 ESB 提供輕量級的分布式體係結構
SOA 是軟件行業為應對單一大型應用程序的管理問題產生的解決方案。正如我們想象的那樣,應用程序體係結構的這一變化對於怎樣才能獲得最佳的應用程序集成產生了極大的影響。如圖 3所示,ESB 為服務提供者和服務消費者之間的集成提供了一個平台。在現代平台上開發的新應用程序,其本質都是麵向服務的應用。但是,有一些現有的企業應用程序並沒有使用 SOA 的設計理念。在此情況下,ESB 應該能夠提供將這些應用程序暴露為服務的能力。而因為以下一些原因,大家正在轉而使用最新的 ESB架構:
a 更智能的端點 — ESB 啟用的體係結構在應用程序與外界的接口點處配置了更多的智能功能。ESB 允許每個端點使用各種標準(如 WSDL 等)以服務的形式呈現自己,因此不需要為每個應用程序編寫專用接口。可以在端點(客戶機和服務器)創建時將集成智能性部署在這些端點上。可以繞過規範格式而將負載直接轉換為目標格式。這一方法有效的去除了 EAI 產品所固有眾多複雜特性。
b 集中式與分布式 — 當 EAI 完全采用中心輻射型通信方式時,ESB 采用了輕量級的分布式體係結構。當必須將程序間的每次交互轉換為規範格式時,集中式的交換中心才有意義。ESB可以將更多的處理邏輯分配到端點上。這與大型主機和現代的分布式係統體係結構間的區別相似。交換中心與大型主機一樣,仍然可以用於某些需要它的體係結構中,但它們隻是開發人員的一項選擇,而不是供應商指定的要求。
c 無集成堆疊 — 過去,當客戶需要使用 EAI 產品來解決更多問題時,各供應商就會在 EAI 中附帶添加多種堆疊的專用功能。隨著時間的推移,這些堆疊的集成都成為專用的語言,需要具有更高的技術水平才能使用。與此不同的是,ESB 是一個具有相對少層級的軟件,您可以使用開放式標準應用其它處理層。例如,如果某個 ESB 用戶希望部署某個 c.特定的業務流程管理工具,您隻需使用行業標準接口(如用於協調這些業務流程的 BPEL)就可以很輕鬆地將該工具集成到 ESB
中。
ESB 方法的立即見效的短期優勢在於它在獲得與 EAI 方法相同總體效果的同時,花費的總擁有成本更低。這一節省不但可以通過減少硬件和軟件的花費來實現,而且還可以通過因使用靈活的分布式框架而節約成本。也正因為此,企業應用也越來越重視SOA,SCA。。。
最後更新:2017-04-02 22:16:35