摘要:針對當前Web服務(wù)架構(gòu)的不足,利用結(jié)構(gòu)化的Chord網(wǎng)絡(luò)作為Web服務(wù)目錄支撐平臺,設(shè)計2層Web服務(wù)模型,介紹服務(wù)的發(fā)布與檢索方法,通過比較、分析和仿真試驗,驗證了模型的優(yōu)越性,提出了深入分析設(shè)計的思路。
關(guān)鍵詞:對等網(wǎng)絡(luò);Web服務(wù);Chord
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)31-0809-03
Implementing Web Services based on 2-Layer P2P Overlay
LI Wen-xiang, YANG Hu-fang, YIN Li-ping
(Wuhan University of Science and Technology, School of Information Science and Engineering, Wuhan 430081, China)
Abstract: Aiming at the drawbacks in current Web Service architecture, built platform for Web Service directory with structured network of Chord, designed a 2-layer Web Service model, introduced methods for publishing and searching services, by comparison, analysis and simulation, verified the superiority of the model, proposed the idea for further analysis and design.
Key words: P2P network; web service; chord
1 引言
近年來Web服務(wù)成為蓬勃興起的分布式計算模式,它能實現(xiàn)不同平臺、語言編寫的程序間的無縫互操作。它基于服務(wù)提供者、服務(wù)請求者以及服務(wù)注冊中心三者之間的交互,涉及服務(wù)的發(fā)布、檢索、綁定等操作。在傳統(tǒng)的Web服務(wù)架構(gòu)中,集中式的注冊中心存儲服務(wù)描述信息,保證注冊到其中的所有服務(wù)均能被檢索,但是該架構(gòu)也具有性能瓶頸和單點失效等問題[1]。
P2P網(wǎng)絡(luò)中所有節(jié)點地位相同,每個節(jié)點既能提供又能接受服務(wù),其動態(tài)機制有利于搜索和定位資源,有助于普及網(wǎng)絡(luò)邊緣計算和服務(wù)。將P2P網(wǎng)絡(luò)與Web服務(wù)結(jié)合起來,使服務(wù)分布在各個節(jié)點上,是一種理想的服務(wù)實現(xiàn)方案,可以有效利用P2P的優(yōu)勢提高Web服務(wù)的擴展性,實現(xiàn)分布式檢索,提升網(wǎng)絡(luò)服務(wù)功能。本文提出了基于2層P2P的Web服務(wù)模型,闡述其服務(wù)發(fā)布和檢索方法,通過分析路由性能和仿真試驗,體現(xiàn)了模型的優(yōu)越性。
2 基于Chord的Web服務(wù)模型
2.1 網(wǎng)絡(luò)體系結(jié)構(gòu)描述
在前人提出的基于Chord的Web服務(wù)模型[2]中,各節(jié)點被分配唯一的標識符nid,由散列函數(shù)散列節(jié)點的IP地址產(chǎn)生。若節(jié)點M的nid直接大于節(jié)點N的nid(即M.nid=min{nid|nid>N.nid}),則M稱為N的后繼節(jié)點。每個Web服務(wù)也有其唯一標識符sid,其取值范圍與nid范圍一致,由散列函數(shù)散列服務(wù)關(guān)鍵字產(chǎn)生。若M.nid等于或者直接大于服務(wù)S的標識符(即M.nid=min{nid|nid>=S.sid}),則M稱為S的后繼節(jié)點。
該模型的構(gòu)建基于Chord協(xié)議[3],需要建立一個分布式的Web服務(wù)目錄系統(tǒng),其方法為:
1) 節(jié)點依照Chord協(xié)議按nid大小順序組環(huán),對m位的命名空間,每個節(jié)點維護一張最多m個表項的指針表,將后繼節(jié)點的nid等信息填入對應(yīng)的指針表項;
2) 根據(jù)散列函數(shù)得到服務(wù)標志符sid,通過Chord協(xié)議關(guān)鍵字查找算法,找到服務(wù)的后繼節(jié)點,并將服務(wù)目錄信息發(fā)到相應(yīng)后繼節(jié)點上;
3) 每個節(jié)點承擔一部分服務(wù)目錄信息,稱之為本地服務(wù)目錄,所有節(jié)點的本地服務(wù)目錄構(gòu)成全局服務(wù)目錄。圖1說明了這種分布式Web服務(wù)目錄的架構(gòu)。
根據(jù)WSDL對Web服務(wù)的描述,Web服務(wù)目錄的表項表示為C={(Key, Location(key))},其中Key為服務(wù)關(guān)鍵字,Location(key)表示關(guān)鍵字為key的服務(wù)節(jié)點的位置,由節(jié)點IP地址和資源所在路徑組成。
2.2 模型的優(yōu)點分析
該服務(wù)模型具有如下優(yōu)點:
1) 存放目錄的后繼節(jié)點固定,相關(guān)Web服務(wù)的信息也是固定的。服務(wù)查詢的復(fù)雜度為O(logn);
2) 關(guān)鍵字的選擇有很大的靈活性,可根據(jù)具體應(yīng)用選擇,使得服務(wù)有較好的可擴展性和實用性;
3) 目錄的分配依賴Chord協(xié)議,而Chord協(xié)議解決了網(wǎng)絡(luò)負載均衡的問題;
4) 把服務(wù)任務(wù)交給Chord網(wǎng)絡(luò)的各節(jié)點,消除了單點服務(wù)器失效問題。
3 基于兩層P2P的Web服務(wù)模型
3.1 網(wǎng)絡(luò)體系結(jié)構(gòu)描述
通過對網(wǎng)絡(luò)的測量分析,發(fā)現(xiàn)節(jié)點的能力和行為方式差別很大,大部分節(jié)點在線時間非常短,帶寬很小,小部分節(jié)點在線時間很長,有很強的能力和較大的帶寬。這種節(jié)點異質(zhì)性表明,需要將它們賦予不同的角色,讓能力強的節(jié)點擔當更多任務(wù)。層次化P2P基于這種思路結(jié)合了無結(jié)構(gòu)P2P網(wǎng)絡(luò)和有結(jié)構(gòu)P2P網(wǎng)絡(luò)的優(yōu)點;無結(jié)構(gòu)P2P網(wǎng)絡(luò)結(jié)構(gòu)簡單、能夠適應(yīng)高度動態(tài)性,但是其資源檢索基于泛洪方式,檢索效率低;有結(jié)構(gòu)P2P網(wǎng)絡(luò)有更好的可擴展性,更快的檢索速度,需要更少的控制開銷,但是不適合高度動態(tài)的網(wǎng)絡(luò)環(huán)境。
如圖2所示,基于2層P2P的Web服務(wù)模型上層由超級節(jié)點(記為SN)組成結(jié)構(gòu)化的Chord網(wǎng)絡(luò),稱之為索引網(wǎng)絡(luò),下層由普通節(jié)點(記為CN)組成非結(jié)構(gòu)化網(wǎng)絡(luò)。
索引網(wǎng)絡(luò)由網(wǎng)絡(luò)中能力強、在線時間長的節(jié)點組成,為鄰近CN提供服務(wù)發(fā)布、服務(wù)檢索以及服務(wù)目錄維護等功能。CN可以是任意網(wǎng)絡(luò)節(jié)點,沒有分配節(jié)點標志符nid,它只保存離它最近的鄰居SN和CN信息,這就使得CN可以隨意地加入和離開網(wǎng)絡(luò),而不需要進行索引網(wǎng)絡(luò)的修復(fù)工作,從而更好地適應(yīng)網(wǎng)絡(luò)的動態(tài)性。當某個CN需要檢索服務(wù)時,就把檢索消息發(fā)送給上層索引網(wǎng)絡(luò),索引網(wǎng)絡(luò)返回結(jié)果得到服務(wù)的位置,CN直接從該位置上的節(jié)點獲取所需的服務(wù)。
2.2 服務(wù)發(fā)布與服務(wù)檢索方法
當CNi要發(fā)布Web服務(wù)時,首先為待發(fā)布的服務(wù)建立目錄表項信息Ci={(Keyi, Location(keyi, CNi))},Location(keyi, CNi)表示關(guān)鍵字為keyi的服務(wù)在節(jié)點CNi上的位置,它由CNi的IP地址和服務(wù)所在的文件路徑組成。服務(wù)發(fā)布的過程表示為:
1) CNi將要發(fā)布的目錄信息交給其鄰居SNi;
2) SNi通過散列函數(shù)得到服務(wù)標志符sid;
3) SNi根據(jù)Chord協(xié)議的關(guān)鍵字查找算法,定位到待發(fā)布Web服務(wù)的后繼超級節(jié)點SNj;
4) SNj將上述服務(wù)目錄信息存放到其本地服務(wù)目錄中,完成服務(wù)發(fā)布。
如果某個超級節(jié)點SNi需要發(fā)布服務(wù),則具體方法為上述過程的2)至4)步。
若CNk要檢索服務(wù),則具體過程如下:
1) CNk將關(guān)鍵字為Keyi的Web服務(wù)檢索請求提交給其鄰居SNk;
2) SNk根據(jù)Keyi,散列得到其服務(wù)標志符sid;
3) SNk根據(jù)Chord協(xié)議定位到待發(fā)現(xiàn)Web服務(wù)的后繼超級節(jié)點SNj;
4) SNj將檢索請求與本地服務(wù)目錄相匹配,找到待查找的Web服務(wù)的位置信息,將結(jié)果返回給CNk;
5) CNk直接與Web服務(wù)位置信息對應(yīng)的節(jié)點聯(lián)系,獲取Web服務(wù)的技術(shù)文檔,進而調(diào)用Web服務(wù)。
如果某個SNk要搜索服務(wù),則具體方法為上述過程的2)至5)步。
3 模型的性能分析與仿真
3.1 關(guān)鍵性能參數(shù)和優(yōu)點分析
在前述模型中,索引網(wǎng)絡(luò)的路由性能[4]由網(wǎng)絡(luò)結(jié)構(gòu)決定,基于Chord得到路由性能指標見表1。
從表1看出,基于2層P2P的模型在各性能指標上都優(yōu)于基于Chord的模型,其特點包括:
1) 對節(jié)點能力作了有效區(qū)分。
2) 服務(wù)定位和檢索效率更高,額外開銷少。
3) 能夠適應(yīng)高度動態(tài)的網(wǎng)絡(luò)環(huán)境。
4) 資源可在多個節(jié)點上復(fù)制,提升返回結(jié)果數(shù)。
3.2 仿真試驗與結(jié)果
基于PlanetSim仿真軟件,設(shè)定網(wǎng)絡(luò)節(jié)點總數(shù)為6000,仿真時間1000秒,每2秒一次隨機查詢,設(shè)計如下三種服務(wù)模型的仿真試驗,模型A:SN比例為100%,所有節(jié)點都在索引網(wǎng)絡(luò)中,等價于基于Chord的Web服務(wù)模型,模型B:SN比例為10%,處在索引網(wǎng)絡(luò)中的節(jié)點為600個,模型C:SN比例為1%,處在索引網(wǎng)絡(luò)中的節(jié)點為60個,假定每個SN都有足夠能力處理所有關(guān)聯(lián)到它的CN的檢索請求。獲取索引網(wǎng)絡(luò)的兩個性能指標——RouteMessage(路由消息)和Traffic(流量)的數(shù)據(jù),結(jié)果如表2。
從表2看出,SN越少,整個索引網(wǎng)絡(luò)完成相同任務(wù)所需的開銷就越少。
4 結(jié)束語
該文提出的Web服務(wù)模型具有出色的服務(wù)檢索性能,且索引網(wǎng)絡(luò)規(guī)模越小,性能越好,但是這樣單個超級節(jié)點將關(guān)聯(lián)更多的普通節(jié)點,對超級節(jié)點的性能提出了更高的要求,因此并不是超級節(jié)點越少越好,在今后的研究中,必須考慮索引網(wǎng)絡(luò)性能和超級節(jié)點承受能力的折中。
參考文獻:
[1] S Ambroszkiewicz.Web Service Integration as a New Paradigm for Network Computing[A].In:IEEE.Parallel Computing in Electrical Engineering[C].US:IEEE,2002.239-245.
[2] M P Papazoglou,Bernd J Kramer.Leveraging Web-Services and Peer-to-Peer Networks[A].In:IEEE.Advanced Information Systems Engineering[C].UK: Springer,2003.485-501.
[3] Ion Stoica,Robert Morris.Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications[A].In:ACM SIGCOMM[C]. US: ACM, 2001. 381-390.
[4] Matei RIPeanu. Mapping the Gnutella Network: Properties of Large-Scale Peer-to-Peer Systems and Implications for System Design[J]. IEEE Internet Computing Journal,2002.46-49.