Jetty和Tomcat的選擇:按場景而定

xz43發表於2015-05-11
Jetty和Tomcat為目前全球範圍內最著名的兩款開源的webserver/servlet容器。由於它們的實現都遵循Java Servlet規範,一個Java Web應用部署於兩款容器的任意一個皆可。但選擇哪個更優?也許這得看場景。 

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

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

    1)Jetty更輕量級。這是相對Tomcat而言的。

    由於Tomcat除了遵循Java 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可以更好地定製一個足夠小的Java Web Server為其GAE服務。
     而Tomcat為滿足更多的企業級需求,增加了JEE特性,在服務企業級應用時,它的支援優於Jetty。然而,即使Tomcat效能略優於Jetty,但對於大多非企業級應用而言,配置複雜體積龐大的Tomcat顯得過於重量級。
 
    正因為這個,實驗室的雲平臺實現便是把雲平臺本身的入口網站放在Tomcat內,而云臺託管的Java Web應該是部署在Jetty內的。
 
 
參考文章:
《 》(譯文: )

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

相關文章