Jetty和Tomcat的選擇 按場景而定

2022-09-15 14:42:25 字數 1165 閱讀 2009

jetty和tomcat為目前全球範圍內最著名的兩款開源的webserver/servlet容器。由於它們的實現都遵循j**a servlet規範,乙個j**a web應用部署於兩款容器的任意乙個皆可。但選擇哪個更優?也許這得看場景。 

近期很多人關注jetty,也許主要是因為gae放棄了tomcat而選擇了jetty。於是,以很直接的想法,jetty更符合gae的需求、即云環境的需求,亦分布式環境的需求。

那jetty與tomcat比較,有哪差異呢? 自己簡單做了些調研,也請救了熟悉tomcat和jetty的朋友和師兄,得出以下結論:

1)jetty更輕量級。這是相對tomcat而言的。

由於tomcat除了遵循j**a servlet規範之外,自身還擴充套件了大量jee特性以滿足企業級應用的需求,所以tomcat是較重量級的,而且配置較jetty亦複雜許多。但對於大量普通網際網路應用而言,並不需要用到tomcat其他高階特性,所以在這種情況下,使用tomcat是很浪費資源的。這種劣勢放在分布式環境下,更是明顯。換成jetty,每個應用伺服器省下那幾兆記憶體,對於大的分布式環境則是節省大量資源。而且,jetty的輕量級也使其在處理高併發細粒度請求的場景下顯得更快速高效。

2)jetty更靈活,體現在其可插拔性和可擴充套件性,更易於開發者對jetty本身進行二次開發,定製乙個適合自身需求的web server。

相比之下,重量級的tomcat原本便支援過多特性,要對其**的成本遠大於豐富jetty的成本。用自己的理解,即增肥容易**難。

3)然而,當支援大規模企業級應用時,jetty也許便需要擴充套件,在這場景下tomcat便是更優的。

總結:jetty更滿足公有雲的分布式環境的需求,而tomcat更符合企業級環境。

gae放棄了tomcat,選擇了jetty,正是因為jetty的體積和靈活性,google可以更好地定製乙個足夠小的j**a web server為其gae服務。

而tomcat為滿足更多的企業級需求,增加了jee特性,在服務企業級應用時,它的支援優於jetty。然而,即使tomcat效能略優於jetty,但對於大多非企業級應用而言,配置複雜體積龐大的tomcat顯得過於重量級。

正因為這個,實驗室的雲平台實現便是把雲平台本身的門戶**放在tomcat內,而雲台託管的j**a web應該是部署在jetty內的。

Jetty和Tomcat 配置上的一些異同

jetty和tomcat在有些關鍵地方的配置有一些異同,這裡簡單列舉下 jetty 7 get uri querystring 編碼預設使用 utf 8 編碼,可以通過 request.setattribute org.eclipse.jetty.server.request.queryencodi...

Jetty和Tomcat 配置上的一些異同

jetty和tomcat在有些關鍵地方的配置有一些異同,這裡簡單列舉下 jetty 7 get uri querystring 編碼預設使用 utf 8 編碼,可以通過 request.setattribute org.eclipse.jetty.server.request.queryencodi...

jetty和tomcat中,war包解壓縮的差別

jetty中處理war包解壓的 是 org.eclipse.jetty.util.resource.jarresource。使用jarinputstream來讀取war檔案,jarinputstream是首先處理可選的meta inf manifest.mf檔案,也就是說getnextjarentr...