彭 濤,胡 飛
(重慶第二師范學院 網絡中心,重慶 400065)
Web服務是基于XML和HTTP的一種服務,其通信協議主要基于SOAP,服務的描述通過WSDL,通過UDDI來發現和獲得服務的元數據,它解決了異構服務器平臺之間數據和應用共享,以及應用負荷分擔的問題[1]。這種技術在小范圍內應用不會有多大問題,但是隨著調用的客戶端增多,高并發的時候,被調用的服務器將不堪重負,并且服務器接入線路也無法處理如此大劑量的流量。而云計算的引入正好可以解決這個問題。云計算是基于互聯網的相關服務的增加、使用和交付模式,通常涉及通過互聯網來提供動態易擴展且經常是虛擬化的資源。云計算是一種基于因特網的超級計算模式,在遠程的數據中心,幾萬甚至幾千萬臺電腦和服務器連接成一片,因此,云計算甚至可以讓你體驗每秒超過10萬億次的運算能力,如此強大的運算能力幾乎無所不能。用戶通過電腦、筆記本、手機等方式接入數據中心,按各自的需求進行存儲和運算。通過云計算把被調用服務器上的數據和應用分擔到各個調用它的客戶端服務器上,從而解決服務器不堪負荷以及服務器接入線路不堪大劑量流量的問題。
圖1是Web服務調用傳統應用和基于云計算應用對比圖。在傳統應用中,所有數據都從被調用服務器直接傳遞給客戶端服務器,被調用服務器完成數據運算工作并承擔所有的數據流量,當客戶端服務器數量大量增加以后,被調用服務器的數據處理能力和互聯網帶寬將無法承受[2]。目前改進的做法是增加被調用服務器的數量,由多臺被調用服務器構成一個分布式服務提供者[3],或者通過QoS實現Web服務動態編排解決方案[4]以及P2P技術的引入[5],還有就是通過MTOM分次傳輸大量數據[6]或者通過WCF的ConcurrencyMode屬性來實行并發連接[7]。這些方法雖然可以起到一定緩解作用,但是以犧牲時間和建設維護成本為代價的,而且隨著客戶端調用者數量的進一步增大,這些方法不能從根本上解決問題。

圖1 Web服務調用技術傳統應用&基于云計算的應用
如何提升Web服務調用性能?在不增加設備投入成本的基礎上減少調用時間。云計算技術的引入為這問題帶來了廉價高效的解決方案。如圖1的右圖所示,被調用服務器此時不再僅僅作為被調用數據的提供者,而是一個調度者,互聯網上所有客戶端服務器和這個被調用服務器一起構成一個分布式服務和數據提供者,這樣許多臺服務器和電腦連成一片,其中每一臺服務器或電腦既是服務獲取者,又是服務提供者,運算和傳輸負荷分攤到所有服務器和電腦上,不僅是被調用服務器,而且是讓所有客戶端服務器來一起提供Web服務。本算法基于靜態數據調用實現,其描述如下:
算法——基于云計算的Web服務調用算法
輸入:提供數據下載的服務器用戶庫 CSL
輸出:隨機抽取用戶庫中的服務器,下載數據Rdata
1. CSL = DisOrderServer(CSL); //把CSL順序打亂重新排序
2. foreach (servers cs in CSL)
3. {
4.if (checkServer(cs.serverIP)) //檢查客戶端服務器是否可用
5.{
6.css.Add(cs); //隨機抽取10個可用的客戶端服務器
7.if (css.Count >= 10)
8.break;
9.}
10. }
11. threadDownload(css); //多線程從10個服務器中分段下載數據
12. Rdata = mergeData(); //返回合并的數據
13. return Rdata;
算法的基本思想是首先被調用服務器內維護有一個提供數據下載的服務器用戶庫CSL,當一個客戶端服務器向被調用服務器請求數據的時候就自動注冊進這個用戶庫,注冊信息包括客戶端服務器ip地址和要調用數據的入口地址等信息;然后被調用服務器向客戶端服務器發送這個用戶庫;最后客戶端服務器再從這個用戶庫里面隨機選取服務器下載數據,同時在客戶端服務器上保留一份數據備份以供其它客戶端服務器下載。這是一種高效的運作模式,其參與的客戶端服務器越多,效率越高,而作為服務提供者只需要一臺被調用服務器即可。
本文在相同的硬件和網絡環境下就傳統Web服務應用和基于云計算的Web服務應用作對比分析。實驗環境為一個51臺計算機的機房,全部安裝Windows Server 2003和IIS,Web服務采用Microsoft .Net 環境下的WCF,修改web.config設置WCF的最大并發數、處理數和會話數為10000并調高超時時間,調用數據為一段10KB的文本數據。其中一臺電腦作為被調用服務器,名字Server1,其它50臺電腦作為客戶端服務器,名字Client1到Client50,所以客戶端服務器上運行一個計時操作小軟件,該軟件能在設定時間觸發調用Web服務。兩種技術分別在此環境下進行實驗。當所有客戶端服務器同時單進程調用Server1的時候,在Server1上監控得到平均CPU使用率和網絡利用率都不高,客戶端服務器上監控得到的調用完成耗時也保持在100ms左右。當每臺客戶端服務器都開放10個進程同時調用Server1的時候,相當于總共500臺客戶端服務器調用Server1,情況發生了變化,實驗結果如表1所示。因為在基于云計算的Web服務的實驗中,客戶端服務器首次下載的時候會在本地生成數據副本,所以首次實驗結果不記錄,表1中的記錄是反復多次實驗中某一次的實驗記錄,其它次實驗記錄的數據和表1數據相差不大,只有個別實驗記錄數據有較大出入。

表1 傳統Web服務與基于云計算的Web服務實驗對比
由表1中實驗數據可知,因為大量的數據流量都分擔到各個客戶端服務器之間,所以Server1的負荷大量下降,Web服務調用性能大幅提升。其中有幾個客戶端服務器調用還超時,這是由于Server1來不及響應造成的。
本文提出了基于云計算的Web服務調用算法,著重解決了傳統Web服務調用中被調用服務器性能無法滿足大用戶量、大數據流量調用的問題,實驗表明該算法在高并發調用基于靜態數據的Web服務方面有極大優勢。
參考文獻:
[1]岳昆,王曉玲,周傲英.Web服務核心支撐技術:研究綜述[J].軟件學報,2004,(03).
[2]曾潔,胡永培,盧顯良.Web服務器群集負載平衡技術與實現[J].計算機科學,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服務動態調用策略[J].計算機與信息技術,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]運用MTOM分次傳輸大量的資料[EB/OL].http://www.dotblogs.com.tw/jeff-yeh/archive/2009/09/27/10798. aspx
[7]蔣金楠.WCF技術剖析(卷1)[M].北京:電子工業出版社,2009.