SOA Agents──當網格遇上SOA

isoa發表於2009-03-19

最近幾年,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更進一步提升 了可伸縮性和效能。本文所描述的網格的高階架構和程式設計模型,為這一實現提供了一個簡單卻健壯的基礎。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14780828/viewspace-573137/,如需轉載,請註明出處,否則將追究法律責任。

相關文章