SOA Agents──當網格遇上SOA
最近幾年,SOA獲得了巨大進步。它由軟件愛好者的實驗性實現走向了今天IT的主流。這一進步背后的一個主要驅動力就是對服務接口背后現有企業IT 資產的合理運用和虛擬化能力,而這一能力又是與企業業務模型和當下及今后的企業流程高度對齊的。此外,通過引入企業服務總線實現了SOA的進步,而它正是一個虛擬化服務基礎設施的模式。通過利用仲裁、服務位置解析、服務水平協議(SLA)支持等,ESB允許軟件架構師顯著地簡化服務基礎設施。整個SOA中所缺失的***一個環節就是企業數據訪問。這一問題的一個可行解決方案就是引入企業數據總線(EDB 一個對企業數據進行普適訪問的模式)。
EDB的一個可行實現是使用數據網格,如Websphere eXtreme Scale,Oracle Coherence數據網格,GigaSpaces數據與應用網格或者NCache分布式數據網格。
數據網格是為構建某類解決方案而設計的軟件系統,其適用的解決方案范圍從簡單的內存數據庫到分布于規模達數千臺服務器之上的強大分布式一致緩存。典型的數據網格實現會將數據分割到跨機器存儲于內存里的不重合的塊中。其結果是,通過標準的流程可達到極高水平的性能和伸縮性。性能是通過并行執行更新和查詢(數據的不同部分可以在不同的機器上同時訪問)實現的,而伸縮性和容錯性則通過在多臺機器上復制同一數據得以實現。
盡管基于網格的EDB簡化了對企業數據的高速訪問,它仍然有可能要求EDB和服務實現之間進行大量的數據交換。服務必須加載所有所需數據,執行其處理,然后將結果存儲回網格中去。
一個更優的架構是讓服務執行點離企業數據更近;將服務實現為Agent(代理)的協調人[7],而這些Agent則在包含企業數據的內存空間里執行(圖3)。在這個例子中,服務實現接收一個請求并啟動一個或多個Agent,它們在網格節點的上下文里執行,將結果返回給服務實現,服務實現再組合 Agent的執行結果并將服務執行結果返回。
Agent的概念可以回溯到分布式人工智能(DAI)的早期研究,當時引入了這一自完備、可交互、并發執行的對象概念。這一對象有某些被封裝好的內 部狀態并能對其它類似對象發來的消息作出響應。根據文獻[7],“一個Agent是一個能精確行動以代表用戶完成任務的軟件組件以及/或硬件。”
EDB的引入允許架構師進一步簡化SOA實現,這是通過在服務實現和企業數據之間引入“標準化的”訪問實現的。它同時簡化了服務調用和執行模型,還為服務提供了進一步的解耦。使用網格作為EDB實現對EDB的可伸縮性和高可用性提供了支持。***,使用直接在網格內部執行的服務Agent更進一步提升了可伸縮性和性能。本文所描述的網格的高級架構和編程模型,為這一實現提供了一個簡單卻健壯的基礎。
【編輯推薦】