首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Web 服務效能大比拚:Metro vs Axis2 深度解析

     編輯:Java 相關知識

前言:兩大 Web Service 堆疊的效能較量

在企業級 Java 開發領域,Web 服務扮演著關鍵角色。隨著技術演進,Metro 與 Axis2 成為兩大主流堆疊。本文將深入剖析兩者在不同安全配置下的效能表現,為架構選型提供實證依據。

技術架構差異概覽

Metro 建立在 JAXB 2.x 資料綁定與 JAX-WS 2.x 標準之上,屬於參考實作。其擴充功能(如 WS-Security)由 WSIT(Web Services Interoperability Technologies)專案提供,底層安全處理則委派給 XWSS(XML and WebServices Security Project)。

Axis2 則採用完全不同的技術棧:預設使用 ADB(Axis2 Data Binding)進行資料綁定,核心引擎自成體系,WS-Security 支援透過 Rampart 模組整合 WSS4J 實現。早期文章《WS-Security 的大開銷》已詳細探討 Axis2 在安全處理上的效能影響。

測試方法論與環境設定

測試策略

採用單機雙進程模式(Client 與 Server 運行於同一系統),排除網路延遲干擾,專注測量 Web 服務處理本身的開銷。測試應用為地震資料檢索服務,資料庫收錄 93,000 筆全球地震記錄。請求參數包含時間範圍與地理座標範圍,回傳符合條件的地震資訊。

請求序列設計

  • 小回應測試:1,000 個請求,僅匹配 816 筆資料(模擬高頻、低資料量場景)
  • 大回應測試:100 個請求,匹配 176,745 筆資料(模擬低頻、高資料量場景)

各配置多次執行,取最佳結果記錄。

硬體與軟體環境

  • 處理器:Athlon X2 5400+
  • 記憶體:4 GB RAM
  • 作業系統:Mandriva 2009.1 64-bit Linux
  • JVM:Sun Java 1.6.0_13 32-bit(堆大小下優於 64-bit)
  • 伺服器:Tomcat 6.0.20,Server 堆 1024 MB,Client 堆 512 MB
  • 框架版本:Metro 1.5(含 WSIT、XWSS),Axis2 1.5.1 搭配當前版 Rampart 代碼

無安全配置下的效能基準

無安全配置效能比較圖

圖表顯示,在無 WS-Security 情況下,兩堆疊效能極為接近。小回應測試 Metro 領先 0.5 秒;大回應測試兩者僅差 0.1 秒。這表明 Metro 在請求處理單位時間上略有優勢,但實際資料傳輸階段兩者不相伯仲(基於 Axis2 預設 ADB 綁定;若使用 XMLBeans 綁定,Axis2 會顯著變慢)。

啟用 WS-Security 後的效能差距

測試四種安全配置:

  • plain:無安全(基準值)
  • username:WS-Security 純文字 UsernameToken
  • sign:含時間戳的 Header 與 Body 簽名
  • signencr:含時間戳與 Body 加密的 Header 與 Body 簽名

小回應測試結果(1,000 請求)

小回應測試效能比較

大回應測試結果(100 請求)

大回應測試效能比較

驚人發現:Metro 在 WS-Security 配置下比 Axis2 快 2 倍以上,大訊息的 username 與 sign 配置更超過 3 倍。這對於同樣成熟的兩大堆疊而言極為罕見。

深入剖析:Axis2/Rampart 效能瓶頸何在?

透過 Rampart 內建的 `org.apache.rampart.TIME` 記錄器(DEBUG 層級)分析發現,Rampart 處理時間僅佔總耗時不到一半。這意味著主要瓶頸不在 WSS4J 安全實作本身,而在於 Axis2/Rampart 的架構設計。

關鍵問題在於:Rampart 在 WS-Security 介入時,未建立完整的訊息記憶體模型。這導致 UsernameToken 場景下表現不佳,其他 WS-Security 場景可能也存在類似的轉換與處理效率問題。Rampart 仍有巨大優化空間。

結論與選型建議

Metro 雖然配置相對繁瑣、文件有限,且綁定 JAXB/JAX-WS 標準(不如 Axis2 支援多種資料綁定靈活),但在核心效能指標上表現優異:

  • 純文字訊息交換效能持平 Axis2
  • 啟用 WS-Security 時效能顯著優於 Axis2

建議:若您的應用使用 WS-Security 且對效能敏感,Metro 是值得優先考慮的選擇。

系列預告

下一篇將轉向 Apache CXF Web 服務堆疊——另一個 Apache 基金會專案。CXF 與 Axis2 共享部分底層組件,但在配置與部署理念上截然不同。敬請期待。

來源:IBM developerWorks

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved