1. 程式人生 > >JETTY,RESIN,TOMCAT的差別在哪裡,在線上服務應該選擇哪一種WEB伺服器?

JETTY,RESIN,TOMCAT的差別在哪裡,在線上服務應該選擇哪一種WEB伺服器?

1.背景介紹

Tomcat伺服器

TomcatTomcat是一個實現了JAVA EE標準的最小的WEB伺服器,是Apache 軟體基金會的Jakarta 專案中的一個核心專案,由Apache、Sun 和其他一些公司及個人共同開發而成。因為Tomcat 技術先進、效能穩定,而且開源免費,因而深受Java 愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。學習JavaWeb開發一般都使用Tomcat伺服器,該伺服器支援全部JSP以及Servlet規範


Tomcat 特點


1、提供了可被伺服器載入並執行的程式程式碼,並服務於來自客戶端的請求。


2、Servlet不依賴瀏覽器,是允許在伺服器端,所以不管瀏覽器是否支援java,都能請求訪問servlet。


Resin伺服器


Resin是CAUCHO公司的產品,是一個非常流行的application server,對servlet和JSP提供了良好的支援,效能也比較優良,resin自身採用JAVA語言開發。支援負載均衡。


Resin特點


1、Resin包含了很多可靠的特性,包括伺服器自動重啟、檢測並重啟死鎖的伺服器、管理JVM記憶體以防止記憶體洩露等。


2、Resin可以將多個伺服器作為一個伺服器來對客戶進行響應,從而增強伺服器的擴充套件能力。


3、Resin可實現持久和分佈的sessions:持久的session能夠在伺服器重啟的時候保持現有的Http會話,分散式的session可以在多個伺服器之間共享Http會話的狀態。


Jetty伺服器


Jetty 是一個開源的servlet容器,它為基於Java的web內容,例如JSP和servlet提供執行環境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式釋出。開發人員可以將Jetty容器例項化成一個物件,可以迅速為一些獨立執行(stand-alone)的Java應用提供網路和web連線。


Jetty特點


1、Jetty的指導原則是“簡單不復雜“。Jetty容易理解和使用: 通過API或者XML檔案配置; XML檔案語法直接了當地在POJOs上影射API操作; 預設的配置檔案可以使Jetty作為外盒(out-of-the-box); 只需少量的行數就可以嵌入一個Jetty例項。


2、可擴充套件性在非同步的WEB2.0型別的應用程式使用的技術,例如AJAX,連線停留時間要比處理一個靜態頁長,執行緒和記憶體需求可能急劇增長。 底層必須優雅地處理這些問題,一個低速的資料庫連線可能造成站點癱瘓,因為執行緒被佔滿了。使用Jetty...


3、高效大量的努力用來優化程式碼,精煉的程式碼以至於漏洞儘可能少:相關性儘可能少; 核心保持最小,附加函式放在可選包中;可擴充套件性是一個關鍵問題;高強度下效能衰減平緩。


4、嵌入性 Jetty是一個非常好的元件。這意味著很容易嵌入到一個應用程式中,而不需要應用程式去適應它: 使用依賴注射和反轉的控制模式


5、Jetty內建插入性。所有Jetty核心元件的實現允許不同的選擇,至少一個或者更多,元件的實現總是會提供的。如果這些仍然不能滿足你的要求,你可以自由的編寫底層介面和抽象類最為基礎。這意味著Jetty能夠容易地用在一個特別的應用環境中。當Jetty在一個 JavaEE伺服器中作為web容器時,這是相當有用的,Jetty的插入性保證了它和主機容器的一個緊密的整合。

 

2.知識剖析

Tomcat和Resin的區別


相同點:他們都是用java編寫的,都是web伺服器,並且支援叢集部署。


不同點:1、速度方面,Resin比Tomcat快2倍以上,不過Tomcat也很快,所以這個差別幾乎感受不到。


2、開關機制上方面,Resin要比Tomcat好,比如修改了配置檔案之後,Resin是會自動重啟的,而Tomcat需要人工手動關閉並重啟。


3、報錯方面,Tomcat比較詳細,一個小小的錯誤也會用大篇幅來描述,而Resin則相對簡潔明確一些


Tomcat和Jetty的區別


相同點:tomcat與jetty都是一種servlet引擎,他們都支援標準的servlet規範和javaEE規範


不同點:1.架構方面,jetty相比tomcat更為簡單jetty架構是基於Handler來實現的,主要的擴充套件功能都可以用Handler來實現,擴充套件簡單tomcat的框架是基於容量設計的,進行擴充套件是需要了解tomcat的整體設計結構,不易擴充套件


2.jetty的應用更加快捷,修改簡單,對新的servlet規範的支援更好,tomcat目前應用比較廣泛,對javaEE和servlet的支援更加全面,很多特性會直接整合進來

 

3.常見問題

1,在線上服務應該選擇哪一種web伺服器?

2,為什麼要選擇jetty?

3,jetty與tomcat的比較?
 

4.解決方案

1,這些伺服器各有優劣,選擇伺服器時應該先參考專案,預估規模大小等。比如大規模的企業級應用,Tomcat自身擴充套件了大量JEE特性可滿足企業級應用的需求, 所以這種情況下應選用Tomcat。

2,Jetty是Java領域另一個出色的Web伺服器,它同樣也是開源的。與tomcat不同的是它可作為一個嵌入式伺服器。也就是說,如果我們在應用中加入jetty的核心jar檔案,應用即可對外提供http服務。它同時也是平臺無關的java web伺服器,既可以在Windos平臺上執行,也可以在Linux平臺上執行。

3,單純比較Tomcat和Jetty的效能意義不是很大,只能說在某些使用場景下它們的表現各有差異,因為它們面向的使用場景不盡相同。從架構上來看Tomcat在處理少數非常繁忙的連線上更有優勢,也就是連線的生命週期如果比較短,Tomcat的效能比較優。

而Jetty則恰好相反,Jetty可以同時處理大量連結並且長時間的保持這些連結,例如,一些Web聊天應用非常適合用Jetty伺服器,淘寶的Web 旺旺就是用Jetty作為Servlet引擎

參考文獻

文獻一:  http://www.jnshu.com/daily/65399?dailyType=others&total=37&page=2&uid=25812&sort=0&orderBy=3


文獻二:  https://blog.csdn.net/xinxin19881112/article/details/5870677<