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