葉榮華, 馮 偉
(浙江師范大學數(shù)理與信息工程學院,浙江金華 321004)
面向服務(wù)的計算 (SOC)為分布異構(gòu)平臺下的應(yīng)用提供了一種較好的集成方案,但是一個集成多個Web服務(wù)的應(yīng)用系統(tǒng)往往需要發(fā)現(xiàn)服務(wù)、組合服務(wù)、綁定服務(wù)和服務(wù)執(zhí)行等多個步驟.傳統(tǒng)的SOA提供了服務(wù)目錄 (如 UDD I[1])作為發(fā)現(xiàn)服務(wù)的機制,但這種單一的服務(wù)發(fā)現(xiàn)方式將影響服務(wù)發(fā)現(xiàn)的效率.文獻[2-3]提出了一種基于 Agent的主動Web服務(wù)概念,作為一種自主服務(wù)實體,可以主動地發(fā)現(xiàn)需求,并為之提供服務(wù).
這種主動的服務(wù)過程一般分為 2個步驟:需求驅(qū)動的服務(wù)聚集和聚集候選服務(wù)的選擇組合.為了達到服務(wù)聚集的目標,首先讓服務(wù) Agent理解需求.文獻 [2]利用功能本體描述了需求和Agent能力;文獻 [3]提出了基于環(huán)境本體[4]的“意圖-行為-實現(xiàn)”機制,用于描述需求和服務(wù)能力.以上工作均從需求與服務(wù)能力匹配角度出發(fā),為服務(wù) Agent根據(jù)自身的能力去發(fā)現(xiàn)需求提供了各自的解決方案,但沒有提供相應(yīng)支持服務(wù)Agent主動聚集的多 Agent系統(tǒng)框架.為此,本文提出一個面向 Web服務(wù)聚集的多 Agent協(xié)作框架MAS4WSA(Multi-Agent System for Web Service Aggregation),并給出其設(shè)計的部分關(guān)鍵技術(shù).
根據(jù) W3C在 Web Services Architecture[5]中的解釋,Web服務(wù)是一個必須由具體 Agent實現(xiàn)的抽象概念,Agent既可以作為服務(wù)提供者 (個人或組織)的代理,也可以作為服務(wù)請求者的代理.在傳統(tǒng)的 SOA中,服務(wù)只是作為一個被動的計算實體,供服務(wù)請求者 (或其 Agent)發(fā)現(xiàn)、選擇、組合和調(diào)用等,但是當服務(wù)提供者有 Agent作為其代理后,完全可以發(fā)揮其主動性,主動發(fā)現(xiàn)自己能為其提供服務(wù)的需求.
服務(wù) Agent仍沿用 Agent理論中的自利假設(shè)[6],即所有的 Agent都希望自己的利益最大化.由于服務(wù) Agent在參與解決需求的過程中可以為自己 (或所代表的個人或組織)帶來收益,服務(wù)Agent為了獲得盡可能多的收益,會主動參與解決與自身能力相匹配的需求,從而形成如圖 1所示的服務(wù)Agent向需求Agent聚集的現(xiàn)象.這里所指的需求驅(qū)動的服務(wù)Agent聚集是指根據(jù)一種需求發(fā)現(xiàn)機制,服務(wù) Agent找到與自身能力相匹配的需求Agent,并向其登記請求提供服務(wù)的過程.
圖 1 需求驅(qū)動的服務(wù) Agent聚集
為了實現(xiàn)服務(wù)Agent向需求Agent的聚集,必須要保證 2點:1)一種需求與服務(wù)能力的描述方法,用于服務(wù) Agent能有效地判斷哪些需求與自身的能力相匹配;2)一個多 Agent協(xié)作機制,用于服務(wù) Agent高效地獲得潛在的需求 Agent,并通過消息交互發(fā)現(xiàn)真正可以提供服務(wù)的需求.本文主要關(guān)注后者,提出了一個用于Web服務(wù)聚集的多Agent協(xié)作框架.下面介紹該框架的詳細設(shè)計.
在傳統(tǒng)的 SOA模型中,服務(wù)發(fā)現(xiàn)的工作主要由服務(wù)目錄完成.隨著 Web服務(wù)數(shù)量的不斷增加,服務(wù)目錄的負載會急劇增加,從而成為影響整體性能的瓶頸[7].筆者雖然采用了服務(wù)發(fā)現(xiàn)需求的反向思路,但如果需求與服務(wù)能力的匹配仍由一個集中的結(jié)點完成,則同樣會出現(xiàn)性能瓶頸問題,MAS4WSA的設(shè)計將盡可能考慮多 Agent負載均衡.
協(xié)作過程主要涉及 3種類型的 Agent——服務(wù) Agent(簡稱 SA)、需求 Agent(簡稱 RA)和中介Agent(簡稱MA).為完成服務(wù) Agent向需求 Agent的聚集,它們之間的具體協(xié)作過程主要分為如圖2所示的 5個步驟.
圖 2 MSA4WSA協(xié)作框架
第 1步:需求注冊.RA向MA注冊相關(guān)的需求信息,為均衡負載,MAS4WSA并沒有將服務(wù)與需求的匹配集中在 MA中完成,所以 RA只要向MA提供需求所在的行業(yè)分類、其他相關(guān)行業(yè)和一些關(guān)鍵詞信息即可.MA將通過分析,為 RA在注冊庫中分配一個唯一的需求 I D和一個三級分類號,并為其建立相關(guān)行業(yè)關(guān)聯(lián)和關(guān)鍵詞關(guān)聯(lián).
第 2步:請求需求列表.SA向MA提交與其服務(wù)能力相關(guān)的行業(yè)分類信息和若干關(guān)鍵詞,MA根據(jù)一定的搜索策略返回給 SA潛在的候選 RA列表,如果 SA在一次返回的 RA列表中不能找到與自己匹配的需求,則可以要求MA提供放寬分類關(guān)鍵詞匹配的 RA列表.
第 3步:請求需求描述.根據(jù) MA返回的 RA列表,SA逐個向其中的 RA請求相關(guān)的需求描述,以便與自己的服務(wù)能力進行匹配.
第 4步:匹配能力與需求.SA將 RA返回的需求描述與自己的能力進行匹配,如果相互匹配,則轉(zhuǎn)第 5步,向 RA請求聚集登記,否則轉(zhuǎn)第 3步,向 RA列表中的下一個 RA請求需求描述.如果 RA列表已經(jīng)遍歷完成,則轉(zhuǎn)第 2步,向 MA請求放寬約束后的 RA列表.
第 5步:請求聚集登記.如果 SA找到與自己服務(wù)能力相匹配的需求,就向相應(yīng)的 RA請求聚集登記,并將服務(wù)能力描述提交給 RA.
服務(wù) Agent是Web服務(wù)的代理,是實現(xiàn)主動服務(wù)聚集的關(guān)鍵載體.在 MAS4WSA中,SA既需要與MA交互以得到潛在的 RA列表,也要與 RA交互以得到相應(yīng)的需求描述,并通過匹配向 RA請求聚集.由此,筆者設(shè)計的服務(wù) Agent主要包括以下 4個功能部件:會話模塊、RA隊列、知識管理器和需求 /能力匹配器.
1)會話模塊.Agent會話是 2個或多個 Agent為達到一定的目的而進行的一系列消息傳遞過程.采用會話作為 Agent之間的基本通信單位會比只用單個消息更具有靈活性、可擴展性和可重用性[8].MAS4WWA設(shè)計了 4個會話:RA與MA的注冊會話、SA與MA的請求潛在 RAs會話、SA與 RA的請求需求會話以及 SA與 RA請求聚集登記會話.
2)RA隊列.用于暫存從MA中獲得的潛在需求Agent列表,SA遍歷該隊列直到找到一個與自己能力相匹配的 RA作為聚集的對象.
3)知識管理器.主要為需求/能力匹配器提供知識支持,包括需求描述單元、服務(wù)能力描述單元和本體管理器.需求描述單元用于暫存和解析從 RA獲得的需求描述,服務(wù)能力描述單元用于保存和解析自身的服務(wù)描述,而本體管理器是用于管理相關(guān)的領(lǐng)域本體的緩存或引用,以便使 SA能理解需求描述和能力描述中的領(lǐng)域術(shù)語.
4)需求/能力匹配器.該部件以知識管理器解析的需求描述、服務(wù)能力描述和領(lǐng)域本體作為輸入,通過一個匹配算法,最終得到服務(wù)能力是否能參與解決需求的判斷.如果 SA的能力與需求相互匹配,則 SA將啟動相應(yīng)會話,請求向 RA聚集登記.
需求 Agent是需求的代理,一個需求可能比較簡單,只要一個匹配的服務(wù)就可以解決,但更多的需求相對復(fù)雜,需要多個服務(wù)的組合才能解決.需求 Agent主要包括 5個功能部件:會話模塊、知識管理器、SA聚集空間、服務(wù)選擇器和服務(wù)組合器.其中:會話模塊與知識管理器與 SA的相關(guān)部件類似;服務(wù)選擇器和服務(wù)組合器是服務(wù)聚集的后續(xù)工作.
1)SA聚集空間.用于存放和管理向本需求聚集的 SA,當在一個規(guī)定的時間內(nèi)如果 RA無法聚集足以解決需求的 SA時,空間會釋放已經(jīng)聚集的 SA,以便那些資源有限的服務(wù)可以向新的需求聚集.
2)服務(wù)選擇器.如果聚集的服務(wù)超過實際解決需求所需的服務(wù),服務(wù)選擇器將根據(jù)一種服務(wù)選擇策略,通過相應(yīng)算法選出最適合解決需求的服務(wù)集.
3)服務(wù)組合器.服務(wù)組合器是根據(jù)需求描述,將服務(wù)選擇器選擇出的服務(wù)組裝成一個由BEPL語言描述的抽象的業(yè)務(wù)流程.該抽象業(yè)務(wù)流程需要經(jīng)過實例化才能成為服務(wù)組合引擎可以執(zhí)行的組合服務(wù).
中介 Agent是連接 RA與 SA的橋梁,RA通過將自己的需求信息注冊到MA上,MA向 SA開放需求的搜索服務(wù),這樣 SA就有機會找到與自己能力相匹配的需求.中介 Agent主要包括會話模塊、需求注冊庫、分類編碼器和搜索引擎 4個部件.其中會話模塊與 RA/SA的相應(yīng)模塊形成一個統(tǒng)一的會話機制,其他功能部件的作用如下:
1)需求注冊庫.MA的核心部件之一,主要用于存儲注冊的需求信息.為均衡負載,MA不對需求與能力進行匹配,所以這里的需求信息不是具體的需求描述,而是所在行業(yè)的分類及其關(guān)聯(lián)信息.如圖 3所示,注冊的需求信息由以下相互關(guān)聯(lián)的 3個部分組成:
①需求注冊信息.由一個需求 I D和一個三級分類編碼組成.需求 I D是MA中該需求的唯一標識,是需求與其他信息關(guān)聯(lián)的紐帶,三級分類編碼是對該需求所屬行業(yè)及其子行業(yè)的層次分類編碼,使 SA減少與不相關(guān)行業(yè) RA的接觸.
圖 3 需求的分類及其關(guān)聯(lián)注冊信息
②相關(guān)行業(yè)信息.一個需求可能比較復(fù)雜,需1個以上相關(guān)行業(yè)的服務(wù)協(xié)作解決,如一個“旅行代理”需求可能還需要航空運輸業(yè)、金融業(yè)甚至快遞業(yè)等行業(yè)的支持,而這些相關(guān)行業(yè)或許都需相應(yīng)的服務(wù)來完成,所以僅僅注冊需求所在的行為信息是不全面的,可能會使大量 SA找不到可以為之服務(wù)的需求.MA通過一個與主需求關(guān)聯(lián)的一組分類行業(yè)編碼來標注這一信息.
③關(guān)鍵詞信息.隨著需求的不斷增加,注冊在同一行為分類中的需求可能會很多,這會增加 SA與一些無關(guān) RA接觸的機會,使系統(tǒng)增加不必要的開銷.為此,在注冊庫中設(shè)計存儲了一組與需求相關(guān)的關(guān)鍵詞.
2)分類編碼器.分類編碼器使得 RA和 SA不需要對需求和服務(wù)進行編碼,只要提供相關(guān)行業(yè)的描述,MA就會根據(jù)行業(yè)分類的知識,給它們分配一個三級編碼.需求的主編碼和相關(guān)行業(yè)編碼將被存儲到需求注冊庫中,而服務(wù)的分類編碼將用于搜索需求.
3)搜索引擎.MA的搜索引擎是根據(jù) SA的請求,搜索符合條件的潛在 RAs,其具體的搜索策略及其過程如下:①MA根據(jù) SA提交的服務(wù)行業(yè)描述確定該服務(wù)的行業(yè)編碼;②將該編碼與 SA提交的關(guān)鍵詞與需求注冊庫中的主需求注冊信息及其關(guān)聯(lián)關(guān)鍵詞進行匹配,并記錄匹配的需求 I D;③如果第 2步?jīng)]有匹配的需求,則在相關(guān)行業(yè)需求注冊信息中匹配,并記錄匹配的需求 I D;④將匹配的 RA進行必要的排序;⑤將結(jié)果 RA列表返回給請求的 SA.
中介Agent的設(shè)計將對 SA向 RA的聚集產(chǎn)生較大的影響,主要體現(xiàn)在 2個方面:一是MA能不能將足夠全的滿足服務(wù)能力的 RAs返回給相應(yīng)的 SA;二是MA是否會返回給 SA太多無關(guān)的RAs.前者將導(dǎo)致 SA找不到合適的需求,后者將導(dǎo)致 SA與過多不相關(guān)的 RA接觸,從而產(chǎn)生不必要的開銷.下面將設(shè)計相應(yīng)的實驗,驗證行業(yè)關(guān)聯(lián)策略與關(guān)鍵詞關(guān)聯(lián)策略對改進以上兩點所產(chǎn)生的影響.
通過編制模擬程序來測試和驗證,程序由Visual C#開發(fā) ,在 W indows XP Professional SP3下運行;Net Framwork 2.0;CPU為 Intel Pentium(R)1.7 GHz;內(nèi)存 512 M.
采用隨機整數(shù)模擬三級分類編碼、需求及服務(wù)能力.為使 SA具有足夠匹配的 RA數(shù),實驗選擇了以下固定參數(shù):一級分類碼為 1個,二級分類碼為 10個,三級分類碼為 50個.其他可調(diào)參數(shù)還包括:RA個數(shù)、SA個數(shù)和一個確定分類中允許的不同功能數(shù).設(shè)計的 2個實驗如下:1)行業(yè)關(guān)聯(lián)策略對需求搜全率的影響;2)關(guān)鍵詞策略對返回RA的個數(shù)的影響.
4.2.1 行業(yè)關(guān)聯(lián)策略對需求搜全率的影響
設(shè)置 RA的個數(shù)為 500,SA的個數(shù)為 1 000.在一個確定分類中允許的不同功能數(shù)為 100的情況下,通過窮盡搜索法、無行業(yè)關(guān)聯(lián)的簡單搜索法和行業(yè)關(guān)聯(lián)策略搜索法,分別搜索與每個 SA的服務(wù)能力匹配的 RA個數(shù)的平均值,記為 Nall,N0和 Nr,計算
式 (1)中:Qr表示當采用行業(yè)關(guān)聯(lián)策略時,搜到 RAs中包含的能滿足服務(wù)能力的需求數(shù)占所有需求中能滿足服務(wù)能力的需求數(shù)的比例;Q0表示當不采用行業(yè)關(guān)聯(lián)時的相應(yīng)比例.圖 4為重復(fù)10次實驗的 Qr和 Q0的分布情況.實驗表明:在簡單搜索的情況下,SA能搜到滿足服務(wù)能力的需求的比例明顯低于采用相關(guān)行業(yè)關(guān)聯(lián)策略后的情況.
圖 4 行業(yè)關(guān)聯(lián)策略對需求搜全率的影響
4.2.2 關(guān)鍵詞策略對返回 RA個數(shù)的影響
設(shè)置 RA的個數(shù)為 1 000,SA的個數(shù)為5 000.在一個確定分類中允許的不同功能數(shù)為 200的情況下,記:1)與服務(wù)能力匹配的平均 RA數(shù)為 Re;2)當采用關(guān)鍵詞策略時,MA返回給 SA的平均RA數(shù)為 Rk,當不采用關(guān)鍵詞策略時,MA返回給SA的平均 RA數(shù)為 R0.
圖 5顯示了重復(fù) 10次實驗的 Re,Rk和 R0的分布情況.實驗表明:不采用關(guān)鍵詞策略會有大量
的無關(guān) RA返回,而采用關(guān)鍵詞策略后返回的 RA只比準確的 RA略高一點.所以,采用關(guān)鍵詞策略可以大大降低 SA與無用 RA接觸的機會,從而減少了不必要的網(wǎng)絡(luò)開銷.
圖 5 關(guān)鍵詞策略對返回 RA數(shù)的影響
以上 2個實驗說明:在中介 Agent的設(shè)計中,采用了相關(guān)行業(yè)關(guān)聯(lián)策略可以使 SA搜索到盡可能全的 RA,而采用關(guān)鍵詞策略可以使 SA搜索到盡可能準確的 RA.
將Web服務(wù)看成是主動的服務(wù) Agent實體,面向服務(wù)的計算將演變成一種非集中式的分布式結(jié)構(gòu).MAS[9]為這種分布式結(jié)構(gòu)提供了有力的支持,本文為實現(xiàn)服務(wù) Agent向需求 Agent的聚集,設(shè)計了一種多 Agent協(xié)作框架,初步解決了服務(wù)聚集中的效率和負載均衡問題.
[1]鄭麗偉,金芝.需求驅(qū)動的主動網(wǎng)構(gòu)實體聚合[J].軟件學報,2008,19(5):1083-1098.
[2]葉榮華,金芝,王璞巍,等.一種需求驅(qū)動的自主Web服務(wù)聚集方法[J/OL].[2009-11-20].http://www.jos.org.cn/1000-9825/3666.htm.
[3]W3C Working Group.Web ServicesArchitecture[EB/OL].[2009-02-11].http://www.w3.org/TR/ws-arch/.
[4]Wang Puwei,Jin Zhi,LiuLin,et al.Building toward capability specificationsofweb services based on an environmentontology[J].IEEE Trans on Knowledge and Data Engineering,2008,20(4):547-561.
[5]UDD I Spec Technical Committee.UDD IVersion 3.0.2[EB/OL].[2009-10-19].http://uddi.org/pubs/uddi_v3.htm.
[6]Sen S.Reciprocity:A Foundational Principle for Promoting CooperativeBehaviorAmong Self-Interested Agents[C]//Proceedingsof the Second International Conference onMulti-Agent Systems.Kyoto:AAA I,1996.
[7]Juszcyk L,MichlmayerA,Platzer C.Large scaleweb service discovery and composition using high performance inmemoryindexing[C]//Proceedings of IEEE Joint Conference on E-Commerce Technology(CEC′07)and Enterprise Computing,E-Commerce and E-Services(EEE ′07).Tokyo:The Electronics,Information and Systems Society,the Institute of Electrical Engineers of Japan in Technical Cooperation with the IEEE and IEEE Computer Society,2007.
[8]Lin Fuhua,Norrie D H.Schema-based conversation modeling for agent-oriented manufactu-ring systems[J].Computers in Industry,2001,46(3):259-274.
[9]Jacques F.Multi-Agent Systems:An Introduction to Distributed Artificial Intelligence[M].Harlow UK:AddisonWesleyLongman,1999.