【原創】webservice效能研究

kekele647發表於2009-12-20

最近的專案會用到webservice ,以前接觸過這個東東,可是也就是簡單使用,對其效能方面沒有過深研究過 ,最近重新拾起來把webservice的各種實現框架和原理複習了一下,發現webservice很客戶化,開發實現很簡單,但是效能是一個很大問題,而對於即將用於業務應用的專案,效能問題是需要重點考慮。

webservice 提供了分散式系統之間的通訊協議 ,為應用人員提供了基本資料型別、物件、陣列客戶端和伺服器端的通訊方式。在實際應用中客戶端的併發量,資料傳輸量會隨著業務的發展逐步升級,而我們在已經選型webservice後如何調整才能滿足業務量增加的需求 。 有些人可能會說,可以去做伺服器叢集、平衡負載 ,對,這些都是解決方案,可是還是有個問題,我們如何預期到這個問題 。自己想了一下,可以分一下步驟去做 。

1、 webservice 選型

      專案啟動前已經確定需要使用webservice,webservice的實現框架究竟應該選用哪一個是我們需要了解的 ,xfie  ? axis ? 還是其他的 ,看一下有位前輩的測試報告。

效能測試總結報告
Axis報告
●     Axis在效能測試環境中共佔用記憶體為541MB-542MB,平均541.5MB。
●     在效能測試的執行過程中,Axis效能良好,沒有出現程式中斷或者記憶體益處的狀況。
●     Axis在該效能測試中的運算效率為 82.05s/n。
●     總評,Axis效能比較穩定,佔用系統資源較少,運算效率一般。
XFire報告
●     XFire 在效能環境中共佔用記憶體為 535MB-536MB,平均為 535.6MB。
●     在效能測試的執行過程中,XFire效能卓越,沒有出現程式中斷或者記憶體益處的狀況。
●     XFire在該效能測試中的運算效率為 142.86s/n。
●     總評,XFire效能卓越,佔用系統資源較少,運算效率高。
 
暫不管前輩是怎麼測試得出的結果,總體來看xfire還是優於axis的。
 
 
 
2、介面實現討論
 
 開始我們已經提到了,webservice可以支援基本資料型別、自定義物件、陣列的資料傳輸,可是在實際應用中應該使用那種方式呢 ,或者那種方式適合我們呢 ?
 
從網上看了一些相關的帖子,大家在使用webservice時為了避免出現效能問題,都在儘量使用傳輸小資料量的基本資料型別,可是在一些大型應用中物件傳輸是不可以避免的,我們該怎麼辦 ? 下邊是一個對比的例子。
 
1.    直接返回DataSet物件
特點:通常元件化的處理機制,不加任何修飾及
            處理;
優點:程式碼精減、易於處理,小資料量處理較快;
缺點:大資料量的傳遞處理慢,消耗網路資源;
建議:當應用系統在內網、專網(區域網)的應用
            時,或外網(廣域網)且資料量在KB級時的
            應用時,採用此種模式。
2.返回DataSet物件用Binary序列化後的位元組陣列 
特點:位元組陣列流的處理模式;
優點:易於處理,可以中文內容起到加密作用;
缺點:大資料量的傳遞處理慢,較消耗網路資源;
建議:當系統需要進行較大資料交換時採用。
3.返回DataSetSurrogate物件用Binary序列化後的位元組陣列 
特點:微軟提供的開源元件;
                 下載地址 http://support.microsoft.com/kb/829740/zh-cn
優點:易於處理,可以中文內容起到加密作用;
缺點:大資料量的傳遞處理慢,較消耗網路資源;
建議:當系統需要傳輸中文資料或需要加密時採用此種方式
4.返回DataSetSurrogate物件用Binary序列化並Zip壓縮後的位元組陣列
特點:對位元組流陣列進行壓縮後傳遞;
優點:當資料量大時,效能提高效果明顯,
             壓縮比例大;
缺點:相比第三方元件,壓縮比例還有待提高;
建議:當系統需要進行大資料量網路資料傳遞時,
             建議採用此種可靠、高效、免費的方法。 
測試用例:SqlServer2000資料庫,資料量大小40000行,
看到以上內容,對於介面的定義我們心裡有一些依據了。
 
 

3、 webservice服務效能測試

   選型也做好了,介面也定了,可是還是不放心,我們的方案能滿足業務的要求嗎? 或者說業務預期的業務量有多大,我們的系統什麼時候就該升級了,這些不是誰憑空就可以說出來的,都需要拿資料說話 。那我們就得測試一下我們的介面究竟能支援多大的資料量 。

測試工具 soapui

  • 開發語言: Java
  • 作業系統: 跨平臺 
  • 專案主頁: http://www.soapui.org/
  • 文件地址: http://www.soapui.org/userguide/index.html
  • 下載地址: http://sourceforge.net/project/platformdownload.php?group_id=136013
  • 測試方法看這位老兄的http://tech.it168.com/a2009/0806/619/000000619515.shtml

     

     

    4、伺服器叢集

    哈哈,終於該考慮叢集的方案 ,任何軟體系統的實現都不能脫離硬體,軟體如何優化如果沒有硬體的支援也是白搭 。 伺服器叢集究竟該怎麼做才是最優的,現在我沒有什麼經驗 ,到時候還是問專家吧,呵呵 。

     

    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7389553/viewspace-623118/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章