葉榮華, 馮 偉
(浙江師范大學數理與信息工程學院,浙江金華 321004)
面向服務的計算 (SOC)為分布異構平臺下的應用提供了一種較好的集成方案,但是一個集成多個Web服務的應用系統往往需要發現服務、組合服務、綁定服務和服務執行等多個步驟.傳統的SOA提供了服務目錄 (如 UDD I[1])作為發現服務的機制,但這種單一的服務發現方式將影響服務發現的效率.文獻[2-3]提出了一種基于 Agent的主動Web服務概念,作為一種自主服務實體,可以主動地發現需求,并為之提供服務.
這種主動的服務過程一般分為 2個步驟:需求驅動的服務聚集和聚集候選服務的選擇組合.為了達到服務聚集的目標,首先讓服務 Agent理解需求.文獻 [2]利用功能本體描述了需求和Agent能力;文獻 [3]提出了基于環境本體[4]的“意圖-行為-實現”機制,用于描述需求和服務能力.以上工作均從需求與服務能力匹配角度出發,為服務 Agent根據自身的能力去發現需求提供了各自的解決方案,但沒有提供相應支持服務Agent主動聚集的多 Agent系統框架.為此,本文提出一個面向 Web服務聚集的多 Agent協作框架MAS4WSA(Multi-Agent System for Web Service Aggregation),并給出其設計的部分關鍵技術.
根據 W3C在 Web Services Architecture[5]中的解釋,Web服務是一個必須由具體 Agent實現的抽象概念,Agent既可以作為服務提供者 (個人或組織)的代理,也可以作為服務請求者的代理.在傳統的 SOA中,服務只是作為一個被動的計算實體,供服務請求者 (或其 Agent)發現、選擇、組合和調用等,但是當服務提供者有 Agent作為其代理后,完全可以發揮其主動性,主動發現自己能為其提供服務的需求.
服務 Agent仍沿用 Agent理論中的自利假設[6],即所有的 Agent都希望自己的利益最大化.由于服務 Agent在參與解決需求的過程中可以為自己 (或所代表的個人或組織)帶來收益,服務Agent為了獲得盡可能多的收益,會主動參與解決與自身能力相匹配的需求,從而形成如圖 1所示的服務Agent向需求Agent聚集的現象.這里所指的需求驅動的服務Agent聚集是指根據一種需求發現機制,服務 Agent找到與自身能力相匹配的需求Agent,并向其登記請求提供服務的過程.

圖 1 需求驅動的服務 Agent聚集
為了實現服務Agent向需求Agent的聚集,必須要保證 2點:1)一種需求與服務能力的描述方法,用于服務 Agent能有效地判斷哪些需求與自身的能力相匹配;2)一個多 Agent協作機制,用于服務 Agent高效地獲得潛在的需求 Agent,并通過消息交互發現真正可以提供服務的需求.本文主要關注后者,提出了一個用于Web服務聚集的多Agent協作框架.下面介紹該框架的詳細設計.
在傳統的 SOA模型中,服務發現的工作主要由服務目錄完成.隨著 Web服務數量的不斷增加,服務目錄的負載會急劇增加,從而成為影響整體性能的瓶頸[7].筆者雖然采用了服務發現需求的反向思路,但如果需求與服務能力的匹配仍由一個集中的結點完成,則同樣會出現性能瓶頸問題,MAS4WSA的設計將盡可能考慮多 Agent負載均衡.
協作過程主要涉及 3種類型的 Agent——服務 Agent(簡稱 SA)、需求 Agent(簡稱 RA)和中介Agent(簡稱MA).為完成服務 Agent向需求 Agent的聚集,它們之間的具體協作過程主要分為如圖2所示的 5個步驟.

圖 2 MSA4WSA協作框架
第 1步:需求注冊.RA向MA注冊相關的需求信息,為均衡負載,MAS4WSA并沒有將服務與需求的匹配集中在 MA中完成,所以 RA只要向MA提供需求所在的行業分類、其他相關行業和一些關鍵詞信息即可.MA將通過分析,為 RA在注冊庫中分配一個唯一的需求 I D和一個三級分類號,并為其建立相關行業關聯和關鍵詞關聯.
第 2步:請求需求列表.SA向MA提交與其服務能力相關的行業分類信息和若干關鍵詞,MA根據一定的搜索策略返回給 SA潛在的候選 RA列表,如果 SA在一次返回的 RA列表中不能找到與自己匹配的需求,則可以要求MA提供放寬分類關鍵詞匹配的 RA列表.
第 3步:請求需求描述.根據 MA返回的 RA列表,SA逐個向其中的 RA請求相關的需求描述,以便與自己的服務能力進行匹配.
第 4步:匹配能力與需求.SA將 RA返回的需求描述與自己的能力進行匹配,如果相互匹配,則轉第 5步,向 RA請求聚集登記,否則轉第 3步,向 RA列表中的下一個 RA請求需求描述.如果 RA列表已經遍歷完成,則轉第 2步,向 MA請求放寬約束后的 RA列表.
第 5步:請求聚集登記.如果 SA找到與自己服務能力相匹配的需求,就向相應的 RA請求聚集登記,并將服務能力描述提交給 RA.
服務 Agent是Web服務的代理,是實現主動服務聚集的關鍵載體.在 MAS4WSA中,SA既需要與MA交互以得到潛在的 RA列表,也要與 RA交互以得到相應的需求描述,并通過匹配向 RA請求聚集.由此,筆者設計的服務 Agent主要包括以下 4個功能部件:會話模塊、RA隊列、知識管理器和需求 /能力匹配器.
1)會話模塊.Agent會話是 2個或多個 Agent為達到一定的目的而進行的一系列消息傳遞過程.采用會話作為 Agent之間的基本通信單位會比只用單個消息更具有靈活性、可擴展性和可重用性[8].MAS4WWA設計了 4個會話:RA與MA的注冊會話、SA與MA的請求潛在 RAs會話、SA與 RA的請求需求會話以及 SA與 RA請求聚集登記會話.
2)RA隊列.用于暫存從MA中獲得的潛在需求Agent列表,SA遍歷該隊列直到找到一個與自己能力相匹配的 RA作為聚集的對象.
3)知識管理器.主要為需求/能力匹配器提供知識支持,包括需求描述單元、服務能力描述單元和本體管理器.需求描述單元用于暫存和解析從 RA獲得的需求描述,服務能力描述單元用于保存和解析自身的服務描述,而本體管理器是用于管理相關的領域本體的緩存或引用,以便使 SA能理解需求描述和能力描述中的領域術語.
4)需求/能力匹配器.該部件以知識管理器解析的需求描述、服務能力描述和領域本體作為輸入,通過一個匹配算法,最終得到服務能力是否能參與解決需求的判斷.如果 SA的能力與需求相互匹配,則 SA將啟動相應會話,請求向 RA聚集登記.
需求 Agent是需求的代理,一個需求可能比較簡單,只要一個匹配的服務就可以解決,但更多的需求相對復雜,需要多個服務的組合才能解決.需求 Agent主要包括 5個功能部件:會話模塊、知識管理器、SA聚集空間、服務選擇器和服務組合器.其中:會話模塊與知識管理器與 SA的相關部件類似;服務選擇器和服務組合器是服務聚集的后續工作.
1)SA聚集空間.用于存放和管理向本需求聚集的 SA,當在一個規定的時間內如果 RA無法聚集足以解決需求的 SA時,空間會釋放已經聚集的 SA,以便那些資源有限的服務可以向新的需求聚集.
2)服務選擇器.如果聚集的服務超過實際解決需求所需的服務,服務選擇器將根據一種服務選擇策略,通過相應算法選出最適合解決需求的服務集.
3)服務組合器.服務組合器是根據需求描述,將服務選擇器選擇出的服務組裝成一個由BEPL語言描述的抽象的業務流程.該抽象業務流程需要經過實例化才能成為服務組合引擎可以執行的組合服務.
中介 Agent是連接 RA與 SA的橋梁,RA通過將自己的需求信息注冊到MA上,MA向 SA開放需求的搜索服務,這樣 SA就有機會找到與自己能力相匹配的需求.中介 Agent主要包括會話模塊、需求注冊庫、分類編碼器和搜索引擎 4個部件.其中會話模塊與 RA/SA的相應模塊形成一個統一的會話機制,其他功能部件的作用如下:
1)需求注冊庫.MA的核心部件之一,主要用于存儲注冊的需求信息.為均衡負載,MA不對需求與能力進行匹配,所以這里的需求信息不是具體的需求描述,而是所在行業的分類及其關聯信息.如圖 3所示,注冊的需求信息由以下相互關聯的 3個部分組成:
①需求注冊信息.由一個需求 I D和一個三級分類編碼組成.需求 I D是MA中該需求的唯一標識,是需求與其他信息關聯的紐帶,三級分類編碼是對該需求所屬行業及其子行業的層次分類編碼,使 SA減少與不相關行業 RA的接觸.

圖 3 需求的分類及其關聯注冊信息
②相關行業信息.一個需求可能比較復雜,需1個以上相關行業的服務協作解決,如一個“旅行代理”需求可能還需要航空運輸業、金融業甚至快遞業等行業的支持,而這些相關行業或許都需相應的服務來完成,所以僅僅注冊需求所在的行為信息是不全面的,可能會使大量 SA找不到可以為之服務的需求.MA通過一個與主需求關聯的一組分類行業編碼來標注這一信息.
③關鍵詞信息.隨著需求的不斷增加,注冊在同一行為分類中的需求可能會很多,這會增加 SA與一些無關 RA接觸的機會,使系統增加不必要的開銷.為此,在注冊庫中設計存儲了一組與需求相關的關鍵詞.
2)分類編碼器.分類編碼器使得 RA和 SA不需要對需求和服務進行編碼,只要提供相關行業的描述,MA就會根據行業分類的知識,給它們分配一個三級編碼.需求的主編碼和相關行業編碼將被存儲到需求注冊庫中,而服務的分類編碼將用于搜索需求.
3)搜索引擎.MA的搜索引擎是根據 SA的請求,搜索符合條件的潛在 RAs,其具體的搜索策略及其過程如下:①MA根據 SA提交的服務行業描述確定該服務的行業編碼;②將該編碼與 SA提交的關鍵詞與需求注冊庫中的主需求注冊信息及其關聯關鍵詞進行匹配,并記錄匹配的需求 I D;③如果第 2步沒有匹配的需求,則在相關行業需求注冊信息中匹配,并記錄匹配的需求 I D;④將匹配的 RA進行必要的排序;⑤將結果 RA列表返回給請求的 SA.
中介Agent的設計將對 SA向 RA的聚集產生較大的影響,主要體現在 2個方面:一是MA能不能將足夠全的滿足服務能力的 RAs返回給相應的 SA;二是MA是否會返回給 SA太多無關的RAs.前者將導致 SA找不到合適的需求,后者將導致 SA與過多不相關的 RA接觸,從而產生不必要的開銷.下面將設計相應的實驗,驗證行業關聯策略與關鍵詞關聯策略對改進以上兩點所產生的影響.
通過編制模擬程序來測試和驗證,程序由Visual C#開發 ,在 W indows XP Professional SP3下運行;Net Framwork 2.0;CPU為 Intel Pentium(R)1.7 GHz;內存 512 M.
采用隨機整數模擬三級分類編碼、需求及服務能力.為使 SA具有足夠匹配的 RA數,實驗選擇了以下固定參數:一級分類碼為 1個,二級分類碼為 10個,三級分類碼為 50個.其他可調參數還包括:RA個數、SA個數和一個確定分類中允許的不同功能數.設計的 2個實驗如下:1)行業關聯策略對需求搜全率的影響;2)關鍵詞策略對返回RA的個數的影響.
4.2.1 行業關聯策略對需求搜全率的影響
設置 RA的個數為 500,SA的個數為 1 000.在一個確定分類中允許的不同功能數為 100的情況下,通過窮盡搜索法、無行業關聯的簡單搜索法和行業關聯策略搜索法,分別搜索與每個 SA的服務能力匹配的 RA個數的平均值,記為 Nall,N0和 Nr,計算

式 (1)中:Qr表示當采用行業關聯策略時,搜到 RAs中包含的能滿足服務能力的需求數占所有需求中能滿足服務能力的需求數的比例;Q0表示當不采用行業關聯時的相應比例.圖 4為重復10次實驗的 Qr和 Q0的分布情況.實驗表明:在簡單搜索的情況下,SA能搜到滿足服務能力的需求的比例明顯低于采用相關行業關聯策略后的情況.

圖 4 行業關聯策略對需求搜全率的影響
4.2.2 關鍵詞策略對返回 RA個數的影響
設置 RA的個數為 1 000,SA的個數為5 000.在一個確定分類中允許的不同功能數為 200的情況下,記:1)與服務能力匹配的平均 RA數為 Re;2)當采用關鍵詞策略時,MA返回給 SA的平均RA數為 Rk,當不采用關鍵詞策略時,MA返回給SA的平均 RA數為 R0.
圖 5顯示了重復 10次實驗的 Re,Rk和 R0的分布情況.實驗表明:不采用關鍵詞策略會有大量
的無關 RA返回,而采用關鍵詞策略后返回的 RA只比準確的 RA略高一點.所以,采用關鍵詞策略可以大大降低 SA與無用 RA接觸的機會,從而減少了不必要的網絡開銷.

圖 5 關鍵詞策略對返回 RA數的影響
以上 2個實驗說明:在中介 Agent的設計中,采用了相關行業關聯策略可以使 SA搜索到盡可能全的 RA,而采用關鍵詞策略可以使 SA搜索到盡可能準確的 RA.
將Web服務看成是主動的服務 Agent實體,面向服務的計算將演變成一種非集中式的分布式結構.MAS[9]為這種分布式結構提供了有力的支持,本文為實現服務 Agent向需求 Agent的聚集,設計了一種多 Agent協作框架,初步解決了服務聚集中的效率和負載均衡問題.
[1]鄭麗偉,金芝.需求驅動的主動網構實體聚合[J].軟件學報,2008,19(5):1083-1098.
[2]葉榮華,金芝,王璞巍,等.一種需求驅動的自主Web服務聚集方法[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.