摘 要: 探討了使用C++部署網(wǎng)格服務(wù)的幾種方案,,分析了各種可能的框架的調(diào)用等待時(shí)間、可擴(kuò)展性和可靠性,。使用不同的部署框架得到的最終結(jié)果在性能上有很大差異,。
關(guān)鍵詞: 網(wǎng)格服務(wù) C++ 調(diào)用時(shí)間 性能評(píng)價(jià)
網(wǎng)格計(jì)算的出現(xiàn)引發(fā)了分布式領(lǐng)域的多個(gè)計(jì)算標(biāo)準(zhǔn)和架構(gòu)的出現(xiàn)(如Globus、Legion等),,它們都致力于為網(wǎng)格應(yīng)用程序和服務(wù)提供一個(gè)穩(wěn)定的環(huán)境[1],。由于Java語言的許多特性非常適合于目標(biāo)環(huán)境,,所以大多數(shù)架構(gòu)是基于Java開發(fā)的。但是,,有些情況下使用Java并不適宜,。一個(gè)眾所周知的問題就是性能[2]。此外,,還有一個(gè)問題是原有的C++程序需要重新編寫才能夠在新的體系結(jié)構(gòu)下運(yùn)行,,由于經(jīng)常出現(xiàn)程序邏輯和服務(wù)部署的語言不一致,所以用Java重寫通常來說不是一個(gè)最佳選擇,。
本文研究了現(xiàn)有的,、允許部署C++程序作為網(wǎng)格服務(wù)的所有框架,在每種框架上都部署了一系列簡單的服務(wù)并測試了每種情況下的等待時(shí)間和可擴(kuò)展性,。試驗(yàn)結(jié)果說明網(wǎng)格服務(wù)平臺(tái)架構(gòu)的選擇對(duì)于最終網(wǎng)格服務(wù)的性能有著很大的影響,。
1 網(wǎng)格體系結(jié)構(gòu)介紹
1.1 網(wǎng)格服務(wù)標(biāo)準(zhǔn)
OGSA(Open Grid Services Architecture)的創(chuàng)建是為了滿足網(wǎng)格在分布、異構(gòu)的動(dòng)態(tài)環(huán)境下整合服務(wù)的需要,。OGSA只定義了架構(gòu),,沒有給出實(shí)現(xiàn)。有兩種符合OGSA的實(shí)現(xiàn):OGSI(開放式網(wǎng)格服務(wù)基礎(chǔ)結(jié)構(gòu),,Open Grid Service Infrastructure)和更新的WSRF(網(wǎng)絡(luò)服務(wù)資源框架,,Web Service Resource Framework)。OGSI擴(kuò)展了WSDL(Web Service Definition Language)和XML Schema,,使Web Service的狀態(tài)可以標(biāo)準(zhǔn)化,。WSRF是一個(gè)符合OGSA標(biāo)準(zhǔn)的實(shí)現(xiàn),用于取代OGSI并統(tǒng)一Web Service和網(wǎng)格服務(wù)世界,。
1.2 網(wǎng)格服務(wù)體系結(jié)構(gòu)
(1)Globus Toolkit,。Globus Toolkit把服務(wù)隔絕在網(wǎng)格服務(wù)容器(Grid Service Container)中,Globus Toolkit在其中發(fā)揮作用并向遠(yuǎn)程客戶端提供服務(wù),。容器運(yùn)行時(shí)管理所有服務(wù)相關(guān)的工作,,如服務(wù)創(chuàng)建、調(diào)用分發(fā)和服務(wù)銷毀,。
(2)OGSI.NET,。OGSI.NET是Microsoft .NET平臺(tái)上的一個(gè)OGSI的實(shí)現(xiàn),由Virginia Grid Computing Group開發(fā),。OGSI.NET服務(wù)容器的工作機(jī)理是通過一個(gè)ISAPI過濾器截獲Microsoft IIS請(qǐng)求,。容器本身被作為一個(gè)Windows服務(wù)實(shí)現(xiàn)。
(3)WSRF.NET,。WSRF.NET是一個(gè)在Microsoft.NET平臺(tái)上開發(fā)符合WSRF規(guī)范服務(wù)的開發(fā)包,。這個(gè)框架中大量使用了標(biāo)準(zhǔn)的Microsoft程序和工具(如IIS,ASP.NET)。有一個(gè)專門的ISAPI過濾器用來更正基于EPR(末端參考,,EndpointReference)的消息分發(fā),,但是并沒有單獨(dú)的容器來實(shí)現(xiàn),而是用一個(gè)靜態(tài)生成的殼(wrapper)使得網(wǎng)格服務(wù)作為標(biāo)準(zhǔn)的ASP.NET網(wǎng)絡(luò)服務(wù)運(yùn)行,。
(4)gSOAP,。gSOAP是用于創(chuàng)建C/C++網(wǎng)絡(luò)服務(wù)的軟件開發(fā)包。gSOAP應(yīng)用于科學(xué)計(jì)算領(lǐng)域和對(duì)時(shí)間要求嚴(yán)格的場合,,特別經(jīng)過速度優(yōu)化,。由于加入的層被C++優(yōu)化過,所以可視為是一種快速,、天然的部署C++服務(wù)的方法,。gSOAP不支持創(chuàng)建OGSI和WSRF服務(wù),因此不能直接作為網(wǎng)格服務(wù)的容器,。本文將其加入測試,,是為和其他體系結(jié)構(gòu)做對(duì)比。
2 性能對(duì)比
2.1 測試方法
為了測試每種體系結(jié)構(gòu)的性能,,創(chuàng)建了一個(gè)C++類,,其包含兩個(gè)方法:
int Echo(int):輸入一個(gè)整數(shù)并返回,不做其他處理,。
int Matrix(int):輸入一個(gè)整數(shù)k,,進(jìn)行一個(gè)矩陣乘法運(yùn)算,由兩個(gè)k階的矩陣相乘,,這樣每次調(diào)用產(chǎn)生一個(gè)O(k3)的復(fù)雜度運(yùn)算,。返回值是一個(gè)整數(shù)描述結(jié)果的狀態(tài)。這兩個(gè)方法產(chǎn)生的數(shù)據(jù)傳輸(參數(shù)和返回值)是非常小的,。這一點(diǎn)保證了調(diào)用這兩個(gè)方法時(shí)產(chǎn)生的延遲不是由體系結(jié)構(gòu)部署XML parser時(shí)產(chǎn)生的。大多數(shù)科學(xué)計(jì)算程序的調(diào)用請(qǐng)求都屬于這種少量數(shù)據(jù)傳輸?shù)姆绞健?br />
大部分網(wǎng)格架構(gòu)的測試是通過測量客戶端服務(wù)調(diào)用的等待時(shí)間實(shí)現(xiàn)的,。為達(dá)到這個(gè)目的,,在每一種體系結(jié)構(gòu)下部署了Echo和Matrix方法。測試客戶端使用Microsoft.NET平臺(tái)的C#開發(fā),。
選擇沒有負(fù)載的服務(wù)器測試單純的服務(wù)調(diào)用等待時(shí)間,。客戶端每隔50ms調(diào)用一次Echo服務(wù),,一共調(diào)用100次,,平均調(diào)用等待時(shí)間被記錄下來。
2.2 測試配置
服務(wù)器端配置兩臺(tái)相同的PC機(jī),。具體配置為:Intel Pentium IV 2.8 MHz CPU,,512MB內(nèi)存,80GB 7200 rpm HDD和100MB以太網(wǎng)卡。
每臺(tái)PC機(jī)都重新安裝了操作系統(tǒng),。一臺(tái)運(yùn)行Redhat Linux(Kernel 2.6.9-5.EL),,另一臺(tái)運(yùn)行Microsoft Windows XP Service Pack 2。所有的軟件包都使用默認(rèn)安裝,,沒有做任何優(yōu)化,。其結(jié)果為默認(rèn)配置下的結(jié)果。
客戶端使用C#編程,??蛻舳斯芾沓绦蚰軌虍a(chǎn)生多個(gè)客戶端進(jìn)程作為分開的線程并且收集每個(gè)線程的等待時(shí)間,此程序在本文中的所有測試中使用,。
2.3 測試結(jié)果
測試Echo方法調(diào)用,。創(chuàng)建一個(gè)服務(wù)實(shí)例,順序調(diào)用100次Echo,。每次調(diào)用中間停止50ms,,測試結(jié)果如圖1、圖2所示,。
圖1是創(chuàng)建一個(gè)服務(wù)實(shí)例,,顯示出調(diào)用100次Echo的測試結(jié)果。Globus Toolkit是網(wǎng)格服務(wù)框架中等待時(shí)間最短的,,gSOAP由于只支持Web Service,,速度比Globus Toolkit還要快。
圖2與圖1相同,,但是包含了OGSI.NET的測試結(jié)果,。OGSI.NET的調(diào)用時(shí)間非常長。
GT4.0C代表Globus Toolkit4.0下被Java包裹的C服務(wù),,GT4.0Java代表Globus Toolkit4.0下的純Java服務(wù),。gSOAP是平均等待時(shí)間最短的,為3.2ms,。網(wǎng)格服務(wù)架構(gòu)中,,Globus Toolkit4.0最快,為6ms,。Java wrapper沒有產(chǎn)生明顯的性能延遲,,C和Java服務(wù)有非常接近的測試結(jié)果。
WSRF.NET 的調(diào)用等待時(shí)間是23.5ms,,OGSI.NET在這項(xiàng)測試中表現(xiàn)非常不好,。接下來的測試同樣證明了OGSI.NET存在嚴(yán)重的性能缺陷。
圖3的測試是一個(gè)單獨(dú)的客戶端調(diào)用100次Echo的結(jié)果,,每次調(diào)用間隔50ms,。不同之處在于服務(wù)生命期管理功能用于為Echo調(diào)用創(chuàng)建服務(wù)實(shí)例,。第二次調(diào)用Echo前實(shí)例被銷毀。從圖3可看出,,Globus Toolkit的調(diào)用時(shí)間較之前加倍,,WSRF.NET的速度基本沒變。
測試結(jié)果和之前確定的保持一樣的層次結(jié)構(gòu),。gSOAP由于不支持網(wǎng)格服務(wù)和服務(wù)生命期管理,,所以沒有出現(xiàn)在這次測試中。Globus Toolkit盡管等待時(shí)間加倍,,但仍然是最快的,。WSRF.NET的時(shí)間不受影響。OGSI.NET的等待時(shí)間是778ms,。
3 結(jié) 論
測試結(jié)果表明,,在考慮等待時(shí)間和可擴(kuò)展性的前提下,最適合部署C++網(wǎng)格服務(wù)的體系結(jié)構(gòu)是加了Java殼的Globus Toolkit4.0,。
WSRF.NET是一個(gè)不錯(cuò)的測試WSRF新標(biāo)準(zhǔn)的平臺(tái),。但是,它在等待時(shí)間上的表現(xiàn)不如Globus,。如果這方面要求非常嚴(yán)格,,則WSRF.NET不是一個(gè)好的選擇。
OGSI.NET表現(xiàn)出性能問題,,等待時(shí)間,、可擴(kuò)展性都不好。
gSOAP在等待時(shí)間和可擴(kuò)展性方面的表現(xiàn)十分出色,。但gSOAP不支持網(wǎng)格服務(wù),,所以很難直接比較。如果服務(wù)不需要生存期管理,、資源,、提醒等網(wǎng)格服務(wù)的擴(kuò)展功能并且性能要求很高,則gSOAP可以做為一個(gè)不錯(cuò)的部署框架,。Globus開發(fā)小組在Globus Toolkit 4.0中使用gSOAP作為C++服務(wù)支持層,。從測試結(jié)果中可以看出,在不影響網(wǎng)格服務(wù)功能的原則下,,極大地提高了網(wǎng)格服務(wù)的速度。
參考文獻(xiàn)
1 Foster I,,Kesselman C,,Nick J et al.The Physiology of the Grid:An Open Grid Services Architecture for Distributed Systems Integration.Open Grid Service Infrastructure WG,Global Grid Forum,,2002
2 Karatzoglou A.Developing a parallel benchmarking suite for Java Grande applications.Technical Report EPCCSS99-06,,Edinburgh Parallel Computing Centre,,1999
3 Gannon D.A Revised Analysis of the Open Grid Services Infrastructure.http://www.extreme.indiana.edu/~gannon/ogsaAnalysis4.pdf
4 Tuecke S,Czajkowski K,,F(xiàn)oster I et al.Open Grid Services Infrastructure(OGSI) Version 1.0.Global Grid Forum Draft Recommendation,,2003
5 Czajkowski K,F(xiàn)erguson D F,,F(xiàn)oster I et al.The WSResource Framework Version 1.0.http://www.globus.org/wsrf/specs/ws-wsrf.pdf
6 Czajkowski K,,F(xiàn)erguson D,F(xiàn)oster I et al.From Open Grid Services Infrastructure to WS-Resource Framework:Refactoring & Evolution.http://www.globus.org/wsrf/OGSItoWSRF1.0.pdf
7 The Globus Alliance. The Globus Toolkit.http://www.globus.org/toolkit/