張家超,鄭揚飛
(華北計算技術(shù)研究所,北京100083)
Web服務(wù)是互聯(lián)網(wǎng)技術(shù)環(huán)境下一種日益廣泛應(yīng)用的分布式計算技術(shù)模式。它面向開放的互聯(lián)網(wǎng)協(xié)議,采用通用、現(xiàn)有的技術(shù)和基礎(chǔ)設(shè)施,具備語言和平臺無關(guān)性、松散耦合性、以及不同系統(tǒng)間無限交互的潛能。
Web服務(wù)最大魅力在于其開放性而得以不斷發(fā)展,從而能夠包容電子商務(wù)、企業(yè)應(yīng)用集成 (enterprise application integration,EAI)、傳統(tǒng)的中間件以及Web技術(shù)[1]。這也使得Web服務(wù)的性能問題越來越受到關(guān)注。由于Web服務(wù)中傳輸消息的SOAP(simple object access protocol)[2]報文基于可擴展標記語言 (extensible markup language,XML)[3],而XML的文本特點使它相較二進制報文長度更長,且花費更多的解析時間。這些技術(shù)上的缺陷使Web服務(wù)的性能與傳統(tǒng)分布式計算技術(shù) (如common object request broker architecture, CORBA[4];Java remote method invocation, Java RMI[5])相比存在一定差距,文獻[6]對比了 Web 服務(wù)和CORBA的性能差異。Web服務(wù)的性能問題正決定著它的進一步發(fā)展。
學術(shù)界和工業(yè)界就如何優(yōu)化Web服務(wù)性能,已積累了一些不同層面的成果。文獻[7]提出了一種二進制優(yōu)化打包機制 (XML-binary optimized packaging,XOP),文獻[8]提出的消息傳輸優(yōu)化機制 (message transmission optimization mechanism,MTOM)正建立在前者的基礎(chǔ)上,它們提出針對二進制數(shù)據(jù)的打包傳輸進行優(yōu)化的思路。此外,還有其他層面的優(yōu)化思路,如通過壓縮SOAP消息以優(yōu)化Web服務(wù)性能[9-10]。
一個典型的Web服務(wù)模型,通常涉及到三個核心協(xié)議:服務(wù)提供者用以描述和發(fā)布服務(wù)的Web服務(wù)描述語言(web service description language,WSDL)[11],服務(wù)使用者用來查找服務(wù)的通用描述發(fā)現(xiàn)與集成協(xié)議 (universal description discovery and integration,UDDI)[12],服務(wù)提供者與使用者之間傳遞服務(wù)的簡單對象訪問協(xié)議SOAP。
圖1展示了一次完整的Web服務(wù)調(diào)用過程:從客戶端(Client)發(fā)出的請求在XML序列化后經(jīng)由網(wǎng)絡(luò)抵達Web服務(wù)端 (Server),并由服務(wù)端進行SOAP報文的解析、驗證過程,調(diào)用Server端提供的服務(wù),之后向客戶端返回一個響應(yīng)報文,同理,客戶端解析和驗證收到的響應(yīng)報文也需花費時間和資源。

圖1 Web服務(wù)調(diào)用模型
未經(jīng)優(yōu)化的正常報文,例如由Server端向Client端發(fā)送一張JPG格式的圖片,由于XML序列化基于文本,所以該JPG圖片二進制碼將轉(zhuǎn)成 Base64[13]編碼并嵌入返回的SOAP報文中。鑒于Base64編碼的編碼規(guī)則,會導致其在體積上有約33%的膨脹[14],相應(yīng)的傳輸和存儲過程都將消耗更多資源。
MTOM基于XOP,XOP允許將二進制數(shù)據(jù)直接作為附件傳送,而無須對二進制數(shù)據(jù)進行XML序列化,從而在報文大小上有明顯的縮減 (第3節(jié)的實驗數(shù)據(jù)將顯示約有30%的縮減)。圖2說明了XOP優(yōu)化的原理:左側(cè)為嵌入Base64編碼的SOAP報文,XOP采用<xop:Include>的標簽代替屬于Base64編碼出現(xiàn)的位置,并引用一個cid;該cid指向由它標識的二進制附件,添加到重新打包后的底部;同時在新報文的頂部添加Content-type、start、boundary等說明性信息。
雖然XOP引入了額外的處理機制,但XML序列化的簡化、報文體積的縮減更能影響性能的提升。需說明,圖2中的Base64編碼僅為示意,截取自下文實驗中taishan(泰山)對應(yīng)報文的編碼頭部,實際用例中Base64編碼體積會很大。

圖2 XOP優(yōu)化原理
通過第1節(jié)對MTOM性能優(yōu)化的分析,不妨提出一個假設(shè):對于二進制文件傳輸,MTOM方式會有較明顯的性能優(yōu)化,現(xiàn)在的主要目標是通過構(gòu)建實驗方案,驗證不同環(huán)境下MTOM能得到多大程度的優(yōu)化。
接下來問題可以分解為:
(1)開發(fā)一組功能相同的Web服務(wù)原型,分別提供未經(jīng)優(yōu)化和經(jīng)MTOM優(yōu)化的響應(yīng)。
(2)測試該組Web服務(wù)在相同環(huán)境下 (如相同傳輸樣本、寬帶寬或窄帶寬環(huán)境)性能數(shù)據(jù)的差異,驗證性能優(yōu)化的假設(shè)。
(3)分析實驗得到的數(shù)據(jù),得出結(jié)論。
實驗要求開發(fā)部署一組Web服務(wù)原型,本文方案:開發(fā)功能相同的兩個Web服務(wù),WuyueImageService和Wuyue-ImageMTOMService。其功能均為根據(jù)請求返回存儲在服務(wù)器端的五岳的圖片:如請求songshan,則返回服務(wù)器上指定的嵩山圖片;請求huashan,則返回華山的圖片。
雖然功能相同,但WuyueImageService返回的是未經(jīng)優(yōu)化的正常響應(yīng),即在響應(yīng)報文中內(nèi)嵌圖片對應(yīng)的Base64編碼;而WuyueImageMTOMService返回的是MTOM優(yōu)化的報文,即將圖片對應(yīng)的二進制碼作為附件傳送。
在本地局域網(wǎng) (local area network,LAN)環(huán)境下,部署如圖3所示。

圖3 實驗部署
本例的Web服務(wù)由JAX-WS開發(fā),通過Endpoint端點發(fā)布程序直接將服務(wù)分別發(fā)布在服務(wù)器端(192.168.101.63)的9876和9999兩個端口上。在客戶端(192.168.101.90)部署SoapUI作為測試工具,分別向服務(wù)器端兩個Web服務(wù)發(fā)送底層的SOAP請求。
SoapUI采用Simple測試策略,Seconds Limit模式,設(shè)置請求腳本間零延時,默認單線程請求,每種取樣類型均進行600秒、1200秒、1800秒三組測試。
(1)帶寬:本實驗在100Mbit LAN環(huán)境下進行,并通過設(shè)置網(wǎng)卡模式來模擬10Mbit窄帶寬環(huán)境。
(2)壓力:以單線程實驗數(shù)據(jù)為準,實際開展實驗時進行了大量多線程測試 (5/10Threads),多線程下最終的優(yōu)化效果并無差異。
(3)測試指標:以平均響應(yīng)時間、限定時間內(nèi)處理請求數(shù)/單位時間處理請求數(shù)、吞吐量為主。
(4)樣本:分為三種取樣類型:只請求songshan、只請求chinamap、依次請求五岳全部。樣本圖片均為JPG格式,大小如表1所示。

表1 樣本圖片大小
(5)實驗環(huán)境:JDK1.7.0_03。服務(wù)器端Intel Core2 Q8400(2.66GHz,2.66GHz)、3.21GB RAM、Windows XP SP3(32位);客戶端 Intel(R)Xeon E5504(2.00GHz,2.00GHz)、64.0GB RAM,Windows Server2008R2 Enterprise(64位)。涉及工具有SoapUI4.5.0-Beat1、TCPMon1.0。
在性能數(shù)據(jù)的統(tǒng)計與分析之前,首先應(yīng)驗證服務(wù)原型的正確性。利用以轉(zhuǎn)發(fā)機制為原理的工具TcpMon來追蹤傳輸層的報文。以客戶端請求taishan(泰山)為例,截獲WuyueImageService和 WuyueImageMTOMService兩種服務(wù)的請求和響應(yīng)報文如圖4所示。

圖4 TcpMon捕獲的報文
圖4 (a)顯示內(nèi)嵌taishan(泰山)Base64編碼的響應(yīng)報文,而圖4(b)顯示的響應(yīng)報文則將二進制數(shù)據(jù)作為附件跟在Content-Id為“12687b59-b2e3-4527……”的標識之后,并指明其內(nèi)容類型 (content-type)為application/octetstream,內(nèi)容傳輸編碼 (content-transfer-encoding)為binary。觀測客戶端SoapUI收到的報文,見圖5,收到一個大小為51103Bytes的附件 (跟表1中taishan的圖片大小完全一致),直接打開附件即顯示正確的泰山圖片。

圖5 SoapUI收到含有二進制附件的報文
由此可見,Web服務(wù)原型達到了預(yù)期的效果,兩種服務(wù)都能提供正確的響應(yīng)報文,而且報文大小有明顯的縮減(約30%),統(tǒng)計截獲的請求/響應(yīng)報文大小如表2所示,其中縮減比率=(Base64-MTOM)/Base64:

表2 Base64與MTOM請求/響應(yīng)報文大小對比統(tǒng)計
分別在寬帶寬、窄帶寬環(huán)境下,依次進行三類測試:請求songshan、chinamp、全部五岳;其中,chinamap代表大數(shù)據(jù)二進制文件進行性能優(yōu)化測試;統(tǒng)計五岳時,一次測試包括依次五岳的請求/響應(yīng)過程,統(tǒng)計數(shù)據(jù)取其平均值,以說明依次請求大小各異的五岳樣本時的優(yōu)化效果。
選取的主要性能指標表示為:avg(平均響應(yīng)時間,毫秒),cnt(處理請求數(shù),個數(shù)),tps(每秒處理請求數(shù)),bytes(限定時間內(nèi)的總吞吐量)。
3.2.1 100Mbit LAN環(huán)境
如表3(a-c)統(tǒng)計了在100Mbit LAN環(huán)境下的各組實驗數(shù)據(jù),可以明顯看到MTOM方式得到的各項數(shù)據(jù)均有一定程度的優(yōu)化。
3.2.2 10Mbit環(huán)境
10Mbit窄帶寬環(huán)境下,實驗數(shù)據(jù)如表4(a-c)所示。

表3 100Mbit LAN環(huán)境實驗數(shù)據(jù)

表4 10Mbit窄帶寬環(huán)境實驗數(shù)據(jù)

(c) 10Mbit 窄帶寬請求五岳的平均性能數(shù)據(jù)性能限時avg cnt/tps bytes Base64 MTOM Base64 MTOM 600s 3770.76 3047.67 159/0.26 197/0.32 587,517,720 546,614,Base64 MTOM 324 1200s 3754.02 3044.68 320/0.26 394/0.32 1,182,425,600 1,093,228,648 1800s 3749.46 3065.01 480/0.26 587/0.32 1,773,638,400 1,628,744,204
分析實驗數(shù)據(jù)可以發(fā)現(xiàn),報文體積的縮小,直接反映在平均響應(yīng)時間的減短,在限定時間內(nèi),僅需更少的吞吐量 (92% ~99%,計算自表3、表4)就可以處理更多的請求數(shù)。以限定時間內(nèi)處理請求數(shù)cnt作為性能優(yōu)化的標準,繪制性能優(yōu)化結(jié)果如圖6所示。

圖6 100Mbit LAN環(huán)境性能優(yōu)化
針對3種取樣類型,各自進行的三組限時測試均呈現(xiàn)明顯的線性,說明測得的數(shù)據(jù)十分規(guī)律和穩(wěn)定;即便對較大的二進制文件chinamap,MTOM也同樣呈現(xiàn)出近30%的性能優(yōu)化效果。而請求五岳圖片,因為實際是將5個請求/響應(yīng)的過程作為一次cnt統(tǒng)計,多次的報文收發(fā)過程和平均值計算對數(shù)據(jù)有一定影響,但平均值依然表現(xiàn)出約22%的優(yōu)化效果。
10Mbit環(huán)境性能優(yōu)化效果如圖7所示,統(tǒng)計表現(xiàn)出和寬帶寬環(huán)境相同的優(yōu)化效果,在處理請求的能力上表現(xiàn)出近30%的提升,同樣這是在占用更少吞吐量的情況下完成。

圖7 10Mbit窄帶寬環(huán)境性能優(yōu)化
通過對實驗結(jié)果的分析,可以得出結(jié)論:
(1)優(yōu)化后的報文在大小上比傳統(tǒng)報文縮減了約30%。
(2)伴隨平均響應(yīng)時間減短,反映在處理請求數(shù)cnt(或單位時間處理請求數(shù)tps)上,有近30%的性能提升。
(3)100Mbit LAN環(huán)境和10Mbit窄帶寬呈現(xiàn)出相同的優(yōu)化效果。
(4)傳輸較大的二進制文件,同樣有理想的優(yōu)化效果。
因此,MTOM在適合二進制文件傳輸?shù)膱鼍坝兄艽蟮膽?yīng)用空間,尤其是要求高性能、大數(shù)據(jù)量傳輸?shù)腤eb服務(wù)中,如多媒體流處理[15-16]、GIS服務(wù)、高性能科學計算等場景,采用MTOM可以有效的提升Web服務(wù)的性能。
本文分析Web服務(wù)模型以及性能提升方法,針對二進制數(shù)據(jù)打包優(yōu)化,提出實驗方案,設(shè)計并實現(xiàn)一組Web服務(wù)原型,用數(shù)據(jù)證明了MTOM可得到近30%的性能優(yōu)化效果。但是,總結(jié)實驗遇到的問題,還存在許多進一步開展工作的空間。
在Internet環(huán)境下,網(wǎng)絡(luò)擁塞的變化會導致Web服務(wù)的性能起伏,傳輸時間對Web服務(wù)性能的影響程度將大大加重,有必要驗證Internet不同網(wǎng)絡(luò)環(huán)境下Web服務(wù)的性能優(yōu)化效果;從應(yīng)用角度,將MTOM應(yīng)用于現(xiàn)有的業(yè)務(wù)系統(tǒng),與系統(tǒng)功能融合、進行性能優(yōu)化;此外,XML編碼技術(shù)直接影響Web服務(wù)序列化/反序列化性能,是值得深入研究Web服務(wù)性能優(yōu)化的技術(shù),可在下一步研究中,作為性能優(yōu)化的深入方向。
[1]Michael P Papazoglou.Web Services:Principles and technology[M].GONG Ling,transl.Beijing:Machine Press,2010:28-28(in Chinese).[Michael P.Papazoglou.Web服務(wù):原理和技術(shù) [M].龔玲,等譯.北京:機械工業(yè)出版,2010:28-28.]
[2]Simple object access protocol(SOAP)version 1.2 [S].W3C Group,http://www.w3.org/TR/soap/,2007.
[3]Extensible markup language(XML)1.1 [S].2nd ed.W3CGroup,http://www.w3.org/TR/2006/REL-xml11-20060816/,2006.
[4]The common object request broker:Architecture and specification rev 3.2 [S].Object Manag-ement Group,http://www.omg.org/spec/CORBA/3.2,2011.
[5]SUN Microsystems.JavaTMRMI release notes[EB/OL].[2012-05-12].http://docs.oracle.com/javase/1.5.0/docs/-guide/rmi/relnotes.html.
[6]LIU Zhongfeng.Comparsion and implementation of CORBA services and web services[D].Wuhan:Wuhan University of Technology,2011:12-14(in Chinese).[劉中鋒.CORBA服務(wù)與Web服務(wù)的比較[D].武漢:武漢理工大學,2011:12-14.]
[7]XML-binary optimized packaging [S].W3C,http://www.w3.org/TR/xop10/,2005.
[8]SOAP message transmission optimization mechanism [S].W3C,http://www.w3.org/TR/soap12-mtom/,2005.
[9]Mike Nikitas.Improve XML web services’performance by compressing SOAP[EO/BL].[2003-01-01].http://www.drdobbs.com/windows/improve-xml-web-services-performanceby/219401262.
[10]Júlio Cezar Estrella,Marcos JoséSantana,Regina H CSantana,et al.Real-time compression of SOAP messages in a SOA environment[C]//Lisbou,Portugal:SIGDOC’08 Proceedings of the 26th ACM international conference,2008:163-168.
[11]Web services description language(WSDL)Version 2.0 Part1:Core language [S].W3C Group,http://www.w3.org/TR/wsdl,2007.
[12]UDDI Version 3.0.2 UDDI spec technical committee draft[S].UDDI Org,http://uddi.org/pu-bs/uddi-v3.0.2-20041019.html,last modified,2006.
[13]The Base16,Base32,and base64 data encoding [S].Network Working Group,http://tools.ietf.org/html/rfc4648,2006.
[14]Wikipedia.Message transmission optimization mechanism [EB/OL].[2012-01-23].http://en.wikipedia.org/wiki/MTOM./.
[15]Gibson Lam,David Rossiter.A web service framework supporting multimedia streaming [J].Services Computing,IEEE Transactions on,2012(4):99-113.
[16]Nils Gruschka,Luigi Lo Iacono.Server-side streaming processing of secured MTOM Attach-ments[C]//Ayia Napa,Cyprus:Eighth IEEE European Conference on Web Services,2010:11-18.