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