彭 濤,胡 飛
(重慶第二師范學(xué)院 網(wǎng)絡(luò)中心,重慶 400065)
Web服務(wù)是基于XML和HTTP的一種服務(wù),其通信協(xié)議主要基于SOAP,服務(wù)的描述通過WSDL,通過UDDI來發(fā)現(xiàn)和獲得服務(wù)的元數(shù)據(jù),它解決了異構(gòu)服務(wù)器平臺之間數(shù)據(jù)和應(yīng)用共享,以及應(yīng)用負(fù)荷分擔(dān)的問題[1]。這種技術(shù)在小范圍內(nèi)應(yīng)用不會有多大問題,但是隨著調(diào)用的客戶端增多,高并發(fā)的時候,被調(diào)用的服務(wù)器將不堪重負(fù),并且服務(wù)器接入線路也無法處理如此大劑量的流量。而云計算的引入正好可以解決這個問題。云計算是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云計算是一種基于因特網(wǎng)的超級計算模式,在遠(yuǎn)程的數(shù)據(jù)中心,幾萬甚至幾千萬臺電腦和服務(wù)器連接成一片,因此,云計算甚至可以讓你體驗(yàn)每秒超過10萬億次的運(yùn)算能力,如此強(qiáng)大的運(yùn)算能力幾乎無所不能。用戶通過電腦、筆記本、手機(jī)等方式接入數(shù)據(jù)中心,按各自的需求進(jìn)行存儲和運(yùn)算。通過云計算把被調(diào)用服務(wù)器上的數(shù)據(jù)和應(yīng)用分擔(dān)到各個調(diào)用它的客戶端服務(wù)器上,從而解決服務(wù)器不堪負(fù)荷以及服務(wù)器接入線路不堪大劑量流量的問題。
圖1是Web服務(wù)調(diào)用傳統(tǒng)應(yīng)用和基于云計算應(yīng)用對比圖。在傳統(tǒng)應(yīng)用中,所有數(shù)據(jù)都從被調(diào)用服務(wù)器直接傳遞給客戶端服務(wù)器,被調(diào)用服務(wù)器完成數(shù)據(jù)運(yùn)算工作并承擔(dān)所有的數(shù)據(jù)流量,當(dāng)客戶端服務(wù)器數(shù)量大量增加以后,被調(diào)用服務(wù)器的數(shù)據(jù)處理能力和互聯(lián)網(wǎng)帶寬將無法承受[2]。目前改進(jìn)的做法是增加被調(diào)用服務(wù)器的數(shù)量,由多臺被調(diào)用服務(wù)器構(gòu)成一個分布式服務(wù)提供者[3],或者通過QoS實(shí)現(xiàn)Web服務(wù)動態(tài)編排解決方案[4]以及P2P技術(shù)的引入[5],還有就是通過MTOM分次傳輸大量數(shù)據(jù)[6]或者通過WCF的ConcurrencyMode屬性來實(shí)行并發(fā)連接[7]。這些方法雖然可以起到一定緩解作用,但是以犧牲時間和建設(shè)維護(hù)成本為代價的,而且隨著客戶端調(diào)用者數(shù)量的進(jìn)一步增大,這些方法不能從根本上解決問題。
圖1 Web服務(wù)調(diào)用技術(shù)傳統(tǒng)應(yīng)用&基于云計算的應(yīng)用
如何提升Web服務(wù)調(diào)用性能?在不增加設(shè)備投入成本的基礎(chǔ)上減少調(diào)用時間。云計算技術(shù)的引入為這問題帶來了廉價高效的解決方案。如圖1的右圖所示,被調(diào)用服務(wù)器此時不再僅僅作為被調(diào)用數(shù)據(jù)的提供者,而是一個調(diào)度者,互聯(lián)網(wǎng)上所有客戶端服務(wù)器和這個被調(diào)用服務(wù)器一起構(gòu)成一個分布式服務(wù)和數(shù)據(jù)提供者,這樣許多臺服務(wù)器和電腦連成一片,其中每一臺服務(wù)器或電腦既是服務(wù)獲取者,又是服務(wù)提供者,運(yùn)算和傳輸負(fù)荷分?jǐn)偟剿蟹?wù)器和電腦上,不僅是被調(diào)用服務(wù)器,而且是讓所有客戶端服務(wù)器來一起提供Web服務(wù)。本算法基于靜態(tài)數(shù)據(jù)調(diào)用實(shí)現(xiàn),其描述如下:
算法——基于云計算的Web服務(wù)調(diào)用算法
輸入:提供數(shù)據(jù)下載的服務(wù)器用戶庫 CSL
輸出:隨機(jī)抽取用戶庫中的服務(wù)器,下載數(shù)據(jù)Rdata
1. CSL = DisOrderServer(CSL); //把CSL順序打亂重新排序
2. foreach (servers cs in CSL)
3. {
4.if (checkServer(cs.serverIP)) //檢查客戶端服務(wù)器是否可用
5.{
6.css.Add(cs); //隨機(jī)抽取10個可用的客戶端服務(wù)器
7.if (css.Count >= 10)
8.break;
9.}
10. }
11. threadDownload(css); //多線程從10個服務(wù)器中分段下載數(shù)據(jù)
12. Rdata = mergeData(); //返回合并的數(shù)據(jù)
13. return Rdata;
算法的基本思想是首先被調(diào)用服務(wù)器內(nèi)維護(hù)有一個提供數(shù)據(jù)下載的服務(wù)器用戶庫CSL,當(dāng)一個客戶端服務(wù)器向被調(diào)用服務(wù)器請求數(shù)據(jù)的時候就自動注冊進(jìn)這個用戶庫,注冊信息包括客戶端服務(wù)器ip地址和要調(diào)用數(shù)據(jù)的入口地址等信息;然后被調(diào)用服務(wù)器向客戶端服務(wù)器發(fā)送這個用戶庫;最后客戶端服務(wù)器再從這個用戶庫里面隨機(jī)選取服務(wù)器下載數(shù)據(jù),同時在客戶端服務(wù)器上保留一份數(shù)據(jù)備份以供其它客戶端服務(wù)器下載。這是一種高效的運(yùn)作模式,其參與的客戶端服務(wù)器越多,效率越高,而作為服務(wù)提供者只需要一臺被調(diào)用服務(wù)器即可。
本文在相同的硬件和網(wǎng)絡(luò)環(huán)境下就傳統(tǒng)Web服務(wù)應(yīng)用和基于云計算的Web服務(wù)應(yīng)用作對比分析。實(shí)驗(yàn)環(huán)境為一個51臺計算機(jī)的機(jī)房,全部安裝Windows Server 2003和IIS,Web服務(wù)采用Microsoft .Net 環(huán)境下的WCF,修改web.config設(shè)置WCF的最大并發(fā)數(shù)、處理數(shù)和會話數(shù)為10000并調(diào)高超時時間,調(diào)用數(shù)據(jù)為一段10KB的文本數(shù)據(jù)。其中一臺電腦作為被調(diào)用服務(wù)器,名字Server1,其它50臺電腦作為客戶端服務(wù)器,名字Client1到Client50,所以客戶端服務(wù)器上運(yùn)行一個計時操作小軟件,該軟件能在設(shè)定時間觸發(fā)調(diào)用Web服務(wù)。兩種技術(shù)分別在此環(huán)境下進(jìn)行實(shí)驗(yàn)。當(dāng)所有客戶端服務(wù)器同時單進(jìn)程調(diào)用Server1的時候,在Server1上監(jiān)控得到平均CPU使用率和網(wǎng)絡(luò)利用率都不高,客戶端服務(wù)器上監(jiān)控得到的調(diào)用完成耗時也保持在100ms左右。當(dāng)每臺客戶端服務(wù)器都開放10個進(jìn)程同時調(diào)用Server1的時候,相當(dāng)于總共500臺客戶端服務(wù)器調(diào)用Server1,情況發(fā)生了變化,實(shí)驗(yàn)結(jié)果如表1所示。因?yàn)樵诨谠朴嬎愕腤eb服務(wù)的實(shí)驗(yàn)中,客戶端服務(wù)器首次下載的時候會在本地生成數(shù)據(jù)副本,所以首次實(shí)驗(yàn)結(jié)果不記錄,表1中的記錄是反復(fù)多次實(shí)驗(yàn)中某一次的實(shí)驗(yàn)記錄,其它次實(shí)驗(yàn)記錄的數(shù)據(jù)和表1數(shù)據(jù)相差不大,只有個別實(shí)驗(yàn)記錄數(shù)據(jù)有較大出入。
表1 傳統(tǒng)Web服務(wù)與基于云計算的Web服務(wù)實(shí)驗(yàn)對比
由表1中實(shí)驗(yàn)數(shù)據(jù)可知,因?yàn)榇罅康臄?shù)據(jù)流量都分擔(dān)到各個客戶端服務(wù)器之間,所以Server1的負(fù)荷大量下降,Web服務(wù)調(diào)用性能大幅提升。其中有幾個客戶端服務(wù)器調(diào)用還超時,這是由于Server1來不及響應(yīng)造成的。
本文提出了基于云計算的Web服務(wù)調(diào)用算法,著重解決了傳統(tǒng)Web服務(wù)調(diào)用中被調(diào)用服務(wù)器性能無法滿足大用戶量、大數(shù)據(jù)流量調(diào)用的問題,實(shí)驗(yàn)表明該算法在高并發(fā)調(diào)用基于靜態(tài)數(shù)據(jù)的Web服務(wù)方面有極大優(yōu)勢。
參考文獻(xiàn):
[1]岳昆,王曉玲,周傲英.Web服務(wù)核心支撐技術(shù):研究綜述[J].軟件學(xué)報,2004,(03).
[2]曾潔,胡永培,盧顯良.Web服務(wù)器群集負(fù)載平衡技術(shù)與實(shí)現(xiàn)[J].計算機(jī)科學(xué),2002,(04).
[3]Tseng C.-W., Yang C.-S. System support for web hosting services on server clusters[J]. Computers and Electrical Engineering , May 2007,33(3):208-220.
[4]王世元,肖斌,汪敏,秦光源.基于QoS的Web服務(wù)動態(tài)調(diào)用策略[J].計算機(jī)與信息技術(shù),2009,(12).
[5]Doulkeridis C, Zafeiris V, Norvag K, Vazirgiannis M, Giakoumakis. Context-based caching and routing for P2P Web service discovery. Distrib Parallel Database 21(1):59-84.
[6]運(yùn)用MTOM分次傳輸大量的資料[EB/OL].http://www.dotblogs.com.tw/jeff-yeh/archive/2009/09/27/10798. aspx
[7]蔣金楠.WCF技術(shù)剖析(卷1)[M].北京:電子工業(yè)出版社,2009.