張家超,鄭揚(yáng)飛
(華北計(jì)算技術(shù)研究所,北京100083)
Web服務(wù)是互聯(lián)網(wǎng)技術(shù)環(huán)境下一種日益廣泛應(yīng)用的分布式計(jì)算技術(shù)模式。它面向開放的互聯(lián)網(wǎng)協(xié)議,采用通用、現(xiàn)有的技術(shù)和基礎(chǔ)設(shè)施,具備語言和平臺(tái)無關(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]報(bào)文基于可擴(kuò)展標(biāo)記語言 (extensible markup language,XML)[3],而XML的文本特點(diǎn)使它相較二進(jìn)制報(bào)文長(zhǎng)度更長(zhǎng),且花費(fèi)更多的解析時(shí)間。這些技術(shù)上的缺陷使Web服務(wù)的性能與傳統(tǒng)分布式計(jì)算技術(shù) (如common object request broker architecture, CORBA[4];Java remote method invocation, Java RMI[5])相比存在一定差距,文獻(xiàn)[6]對(duì)比了 Web 服務(wù)和CORBA的性能差異。Web服務(wù)的性能問題正決定著它的進(jìn)一步發(fā)展。
學(xué)術(shù)界和工業(yè)界就如何優(yōu)化Web服務(wù)性能,已積累了一些不同層面的成果。文獻(xiàn)[7]提出了一種二進(jìn)制優(yōu)化打包機(jī)制 (XML-binary optimized packaging,XOP),文獻(xiàn)[8]提出的消息傳輸優(yōu)化機(jī)制 (message transmission optimization mechanism,MTOM)正建立在前者的基礎(chǔ)上,它們提出針對(duì)二進(jìn)制數(shù)據(jù)的打包傳輸進(jìn)行優(yōu)化的思路。此外,還有其他層面的優(yōu)化思路,如通過壓縮SOAP消息以優(yōu)化Web服務(wù)性能[9-10]。
一個(gè)典型的Web服務(wù)模型,通常涉及到三個(gè)核心協(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ù)的簡(jiǎn)單對(duì)象訪問協(xié)議SOAP。
圖1展示了一次完整的Web服務(wù)調(diào)用過程:從客戶端(Client)發(fā)出的請(qǐng)求在XML序列化后經(jīng)由網(wǎng)絡(luò)抵達(dá)Web服務(wù)端 (Server),并由服務(wù)端進(jìn)行SOAP報(bào)文的解析、驗(yàn)證過程,調(diào)用Server端提供的服務(wù),之后向客戶端返回一個(gè)響應(yīng)報(bào)文,同理,客戶端解析和驗(yàn)證收到的響應(yīng)報(bào)文也需花費(fèi)時(shí)間和資源。
圖1 Web服務(wù)調(diào)用模型
未經(jīng)優(yōu)化的正常報(bào)文,例如由Server端向Client端發(fā)送一張JPG格式的圖片,由于XML序列化基于文本,所以該JPG圖片二進(jìn)制碼將轉(zhuǎn)成 Base64[13]編碼并嵌入返回的SOAP報(bào)文中。鑒于Base64編碼的編碼規(guī)則,會(huì)導(dǎo)致其在體積上有約33%的膨脹[14],相應(yīng)的傳輸和存儲(chǔ)過程都將消耗更多資源。
MTOM基于XOP,XOP允許將二進(jìn)制數(shù)據(jù)直接作為附件傳送,而無須對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行XML序列化,從而在報(bào)文大小上有明顯的縮減 (第3節(jié)的實(shí)驗(yàn)數(shù)據(jù)將顯示約有30%的縮減)。圖2說明了XOP優(yōu)化的原理:左側(cè)為嵌入Base64編碼的SOAP報(bào)文,XOP采用<xop:Include>的標(biāo)簽代替屬于Base64編碼出現(xiàn)的位置,并引用一個(gè)cid;該cid指向由它標(biāo)識(shí)的二進(jìn)制附件,添加到重新打包后的底部;同時(shí)在新報(bào)文的頂部添加Content-type、start、boundary等說明性信息。
雖然XOP引入了額外的處理機(jī)制,但XML序列化的簡(jiǎn)化、報(bào)文體積的縮減更能影響性能的提升。需說明,圖2中的Base64編碼僅為示意,截取自下文實(shí)驗(yàn)中taishan(泰山)對(duì)應(yīng)報(bào)文的編碼頭部,實(shí)際用例中Base64編碼體積會(huì)很大。
圖2 XOP優(yōu)化原理
通過第1節(jié)對(duì)MTOM性能優(yōu)化的分析,不妨提出一個(gè)假設(shè):對(duì)于二進(jìn)制文件傳輸,MTOM方式會(huì)有較明顯的性能優(yōu)化,現(xiàn)在的主要目標(biāo)是通過構(gòu)建實(shí)驗(yàn)方案,驗(yàn)證不同環(huán)境下MTOM能得到多大程度的優(yōu)化。
接下來問題可以分解為:
(1)開發(fā)一組功能相同的Web服務(wù)原型,分別提供未經(jīng)優(yōu)化和經(jīng)MTOM優(yōu)化的響應(yīng)。
(2)測(cè)試該組Web服務(wù)在相同環(huán)境下 (如相同傳輸樣本、寬帶寬或窄帶寬環(huán)境)性能數(shù)據(jù)的差異,驗(yàn)證性能優(yōu)化的假設(shè)。
(3)分析實(shí)驗(yàn)得到的數(shù)據(jù),得出結(jié)論。
實(shí)驗(yàn)要求開發(fā)部署一組Web服務(wù)原型,本文方案:開發(fā)功能相同的兩個(gè)Web服務(wù),WuyueImageService和Wuyue-ImageMTOMService。其功能均為根據(jù)請(qǐng)求返回存儲(chǔ)在服務(wù)器端的五岳的圖片:如請(qǐng)求songshan,則返回服務(wù)器上指定的嵩山圖片;請(qǐng)求huashan,則返回華山的圖片。
雖然功能相同,但WuyueImageService返回的是未經(jīng)優(yōu)化的正常響應(yīng),即在響應(yīng)報(bào)文中內(nèi)嵌圖片對(duì)應(yīng)的Base64編碼;而WuyueImageMTOMService返回的是MTOM優(yōu)化的報(bào)文,即將圖片對(duì)應(yīng)的二進(jìn)制碼作為附件傳送。
在本地局域網(wǎng) (local area network,LAN)環(huán)境下,部署如圖3所示。
圖3 實(shí)驗(yàn)部署
本例的Web服務(wù)由JAX-WS開發(fā),通過Endpoint端點(diǎn)發(fā)布程序直接將服務(wù)分別發(fā)布在服務(wù)器端(192.168.101.63)的9876和9999兩個(gè)端口上。在客戶端(192.168.101.90)部署SoapUI作為測(cè)試工具,分別向服務(wù)器端兩個(gè)Web服務(wù)發(fā)送底層的SOAP請(qǐng)求。
SoapUI采用Simple測(cè)試策略,Seconds Limit模式,設(shè)置請(qǐng)求腳本間零延時(shí),默認(rèn)單線程請(qǐng)求,每種取樣類型均進(jìn)行600秒、1200秒、1800秒三組測(cè)試。
(1)帶寬:本實(shí)驗(yàn)在100Mbit LAN環(huán)境下進(jìn)行,并通過設(shè)置網(wǎng)卡模式來模擬10Mbit窄帶寬環(huán)境。
(2)壓力:以單線程實(shí)驗(yàn)數(shù)據(jù)為準(zhǔn),實(shí)際開展實(shí)驗(yàn)時(shí)進(jìn)行了大量多線程測(cè)試 (5/10Threads),多線程下最終的優(yōu)化效果并無差異。
(3)測(cè)試指標(biāo):以平均響應(yīng)時(shí)間、限定時(shí)間內(nèi)處理請(qǐng)求數(shù)/單位時(shí)間處理請(qǐng)求數(shù)、吞吐量為主。
(4)樣本:分為三種取樣類型:只請(qǐng)求songshan、只請(qǐng)求chinamap、依次請(qǐng)求五岳全部。樣本圖片均為JPG格式,大小如表1所示。
表1 樣本圖片大小
(5)實(shí)驗(yàn)環(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)計(jì)與分析之前,首先應(yīng)驗(yàn)證服務(wù)原型的正確性。利用以轉(zhuǎn)發(fā)機(jī)制為原理的工具TcpMon來追蹤傳輸層的報(bào)文。以客戶端請(qǐng)求taishan(泰山)為例,截獲WuyueImageService和 WuyueImageMTOMService兩種服務(wù)的請(qǐng)求和響應(yīng)報(bào)文如圖4所示。
圖4 TcpMon捕獲的報(bào)文
圖4 (a)顯示內(nèi)嵌taishan(泰山)Base64編碼的響應(yīng)報(bào)文,而圖4(b)顯示的響應(yīng)報(bào)文則將二進(jìn)制數(shù)據(jù)作為附件跟在Content-Id為“12687b59-b2e3-4527……”的標(biāo)識(shí)之后,并指明其內(nèi)容類型 (content-type)為application/octetstream,內(nèi)容傳輸編碼 (content-transfer-encoding)為binary。觀測(cè)客戶端SoapUI收到的報(bào)文,見圖5,收到一個(gè)大小為51103Bytes的附件 (跟表1中taishan的圖片大小完全一致),直接打開附件即顯示正確的泰山圖片。
圖5 SoapUI收到含有二進(jìn)制附件的報(bào)文
由此可見,Web服務(wù)原型達(dá)到了預(yù)期的效果,兩種服務(wù)都能提供正確的響應(yīng)報(bào)文,而且報(bào)文大小有明顯的縮減(約30%),統(tǒng)計(jì)截獲的請(qǐng)求/響應(yīng)報(bào)文大小如表2所示,其中縮減比率=(Base64-MTOM)/Base64:
表2 Base64與MTOM請(qǐng)求/響應(yīng)報(bào)文大小對(duì)比統(tǒng)計(jì)
分別在寬帶寬、窄帶寬環(huán)境下,依次進(jìn)行三類測(cè)試:請(qǐng)求songshan、chinamp、全部五岳;其中,chinamap代表大數(shù)據(jù)二進(jìn)制文件進(jìn)行性能優(yōu)化測(cè)試;統(tǒng)計(jì)五岳時(shí),一次測(cè)試包括依次五岳的請(qǐng)求/響應(yīng)過程,統(tǒng)計(jì)數(shù)據(jù)取其平均值,以說明依次請(qǐng)求大小各異的五岳樣本時(shí)的優(yōu)化效果。
選取的主要性能指標(biāo)表示為:avg(平均響應(yīng)時(shí)間,毫秒),cnt(處理請(qǐng)求數(shù),個(gè)數(shù)),tps(每秒處理請(qǐng)求數(shù)),bytes(限定時(shí)間內(nèi)的總吞吐量)。
3.2.1 100Mbit LAN環(huán)境
如表3(a-c)統(tǒng)計(jì)了在100Mbit LAN環(huán)境下的各組實(shí)驗(yàn)數(shù)據(jù),可以明顯看到MTOM方式得到的各項(xiàng)數(shù)據(jù)均有一定程度的優(yōu)化。
3.2.2 10Mbit環(huán)境
10Mbit窄帶寬環(huán)境下,實(shí)驗(yàn)數(shù)據(jù)如表4(a-c)所示。
表3 100Mbit LAN環(huán)境實(shí)驗(yàn)數(shù)據(jù)
表4 10Mbit窄帶寬環(huán)境實(shí)驗(yàn)數(shù)據(jù)
(c) 10Mbit 窄帶寬請(qǐng)求五岳的平均性能數(shù)據(jù)性能限時(shí)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í)驗(yàn)數(shù)據(jù)可以發(fā)現(xiàn),報(bào)文體積的縮小,直接反映在平均響應(yīng)時(shí)間的減短,在限定時(shí)間內(nèi),僅需更少的吞吐量 (92% ~99%,計(jì)算自表3、表4)就可以處理更多的請(qǐng)求數(shù)。以限定時(shí)間內(nèi)處理請(qǐng)求數(shù)cnt作為性能優(yōu)化的標(biāo)準(zhǔn),繪制性能優(yōu)化結(jié)果如圖6所示。
圖6 100Mbit LAN環(huán)境性能優(yōu)化
針對(duì)3種取樣類型,各自進(jìn)行的三組限時(shí)測(cè)試均呈現(xiàn)明顯的線性,說明測(cè)得的數(shù)據(jù)十分規(guī)律和穩(wěn)定;即便對(duì)較大的二進(jìn)制文件chinamap,MTOM也同樣呈現(xiàn)出近30%的性能優(yōu)化效果。而請(qǐng)求五岳圖片,因?yàn)閷?shí)際是將5個(gè)請(qǐng)求/響應(yīng)的過程作為一次cnt統(tǒng)計(jì),多次的報(bào)文收發(fā)過程和平均值計(jì)算對(duì)數(shù)據(jù)有一定影響,但平均值依然表現(xiàn)出約22%的優(yōu)化效果。
10Mbit環(huán)境性能優(yōu)化效果如圖7所示,統(tǒng)計(jì)表現(xiàn)出和寬帶寬環(huán)境相同的優(yōu)化效果,在處理請(qǐng)求的能力上表現(xiàn)出近30%的提升,同樣這是在占用更少吞吐量的情況下完成。
圖7 10Mbit窄帶寬環(huán)境性能優(yōu)化
通過對(duì)實(shí)驗(yàn)結(jié)果的分析,可以得出結(jié)論:
(1)優(yōu)化后的報(bào)文在大小上比傳統(tǒng)報(bào)文縮減了約30%。
(2)伴隨平均響應(yīng)時(shí)間減短,反映在處理請(qǐng)求數(shù)cnt(或單位時(shí)間處理請(qǐng)求數(shù)tps)上,有近30%的性能提升。
(3)100Mbit LAN環(huán)境和10Mbit窄帶寬呈現(xiàn)出相同的優(yōu)化效果。
(4)傳輸較大的二進(jìn)制文件,同樣有理想的優(yōu)化效果。
因此,MTOM在適合二進(jìn)制文件傳輸?shù)膱?chǎng)景有著很大的應(yīng)用空間,尤其是要求高性能、大數(shù)據(jù)量傳輸?shù)腤eb服務(wù)中,如多媒體流處理[15-16]、GIS服務(wù)、高性能科學(xué)計(jì)算等場(chǎng)景,采用MTOM可以有效的提升Web服務(wù)的性能。
本文分析Web服務(wù)模型以及性能提升方法,針對(duì)二進(jìn)制數(shù)據(jù)打包優(yōu)化,提出實(shí)驗(yàn)方案,設(shè)計(jì)并實(shí)現(xiàn)一組Web服務(wù)原型,用數(shù)據(jù)證明了MTOM可得到近30%的性能優(yōu)化效果。但是,總結(jié)實(shí)驗(yàn)遇到的問題,還存在許多進(jìn)一步開展工作的空間。
在Internet環(huán)境下,網(wǎng)絡(luò)擁塞的變化會(huì)導(dǎo)致Web服務(wù)的性能起伏,傳輸時(shí)間對(duì)Web服務(wù)性能的影響程度將大大加重,有必要驗(yàn)證Internet不同網(wǎng)絡(luò)環(huán)境下Web服務(wù)的性能優(yōu)化效果;從應(yīng)用角度,將MTOM應(yīng)用于現(xiàn)有的業(yè)務(wù)系統(tǒng),與系統(tǒng)功能融合、進(jìn)行性能優(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].龔玲,等譯.北京:機(jī)械工業(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].武漢:武漢理工大學(xué),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.