Jetty 和 Tomcat 之爭,到底孰強孰弱

Jetty是一個開源的HTTP服務器和Servlet引擎,它可以為JSP和Servlet提供運行時環境。Tomcat的前身為Catalina,是一個Servlet容器,支持最新的Servlet和JSP規範。

Jetty 和 Tomcat 之爭,到底孰強孰弱

Jetty 架構

Jetty 的核心組件包括 Server,Handle和Connector,Server是整個Jetty的核心,包含了Handle和Connector。Jetty的核心由Server和Connector兩個組件構成,Server組件是基於Handler容器工作的,它類似Tomcat的Container容器。Connector組件負責接受客戶端的連接請求,並將請求分配給一個處理隊列去執行。

Jetty 和 Tomcat 之爭,到底孰強孰弱

Jetty的核心圍繞著Server類來構建,Server類繼承了Handler,關聯了Connector和Container,Container是管理Mbean的容器。Jetty的Server的擴展主要是實現一個個Handler並將Handler加到Server中,Server中提供了調用這些Handler的訪問規則。

Tomcat 架構

Server是Tomcat的最頂層元素,是service的集合,即可包含多個service,Server控制整個Tomcat的生命週期。Service由一個Container和多個Connector組成(或者說由Connector,Engine和線程池[可選]組成),形成一個獨立完整的處理單元,對外提供服務。

Jetty 和 Tomcat 之爭,到底孰強孰弱

架構比較

  1. Jetty的架構比Tomcat的更為簡單。
  2. Jetty的架構是基於Handler來實現的,主要的擴展功能都可以用Handler來實現,擴展簡單。
  3. Tomcat的架構是基於容器設計的,進行擴展是需要了解Tomcat的整體設計結構,不易擴展。

性能比較

  1. Jetty可以同時處理大量連接而且可以長時間保持連接,適合於web聊天應用等等。
  2. Jetty的架構簡單,因此作為服務器,Jetty可以按需加載組件,減少不需要的組件,減少了服務器內存開銷,從而提高服務器性能。
  3. Jetty默認採用NIO結束在處理I/O請求上更佔優勢,在處理靜態資源時,性能較高。

其他比較

  1. Jetty的應用更加快速,修改簡單,對新的Servlet規範的支持較好。
  2. Tomcat目前應用比較廣泛,對JavaEE和Servlet的支持更加全面,很多特性會直接集成進來。
  3. Tomcat適合處理少數非常繁忙的鏈接,也就是說鏈接生命週期短的話,Tomcat的總體性能更高。
  4. Tomcat默認採用BIO處理I/O請求,在處理靜態資源時,性能較差。
Jetty 和 Tomcat 之爭,到底孰強孰弱

綜上,具體使用jetty還是Tomcat,大家可根據具體根據場景自主選擇。


分享到:


相關文章: