1.背景介紹
2.知識剖析
3.常見問題
4.解決方案
5.編碼實戰
6.擴展思考
7.參考文獻
8.更多討論
1.背景介紹
Tomcat服務器
Tomcat是SUN公司推出的一個優秀的Servlet容器,由Apache、Sun 和其他一些公司及個人共同開發而成。
Tomcat本身完全用java語言編寫。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
特點:
1、提供了可被服務器加載并執行的程序代碼,并服務于來自客戶端的請求。
2、Servlet不依賴瀏覽器,是允許在服務器端,所以不管瀏覽器是否支持java,都能請求訪問servlet。
Resin服務器
Resin是CAUCHO公司的產品,是一個非常流行的application server,對servlet和JSP提供了良好的支持,性能也比較優良,resin同樣也采用JAVA語言開發。
Resin提供了最快的jsp/servlets運行平臺。在java和javascript的支持下,Resin可以為任務靈活選用合適的開發語言。
特點:
1、Resin包含了很多可靠的特性,包括服務器自動重啟、檢測并重啟死鎖的服務器、管理JVM內存以防止內存泄露等。
2、Resin可以將多個服務器作為一個服務器來對客戶進行響應,從而增強服務器的擴展能力。
3、Resin可實現持久和分布的sessions:持久的session能夠在服務器重啟的時候保持現有的Http會話,分布式的session可以在多個服務器之間共享Http會話的狀態。
Jetty服務器
Jetty是一個開源、基于標準、全功能實現的JAVA服務器,Jetty也是使用Java語言編寫的,
它的API以一組JAR包的形式發布。開發人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨立運行的Java應用提供網絡和web連接。
特點:
1、Jetty嵌入比較便利,它設計之初就是作為一個優秀的組件來設計的,因此Jetty可以非常容易的嵌入到應用程序當中而不需要程序為了使用Jetty做修改。
2、Jetty是輕量的web服務器,一般來說,它的默認配置便可以滿足日常大部分需求,
如果要完成較為復雜的功能,只需修改相關的xml文件。jetty的嵌入只需少量的代碼就可以做到。
3、Jetty易拓展,有許多非常良好的接口,因此在Jetty的某種實現無法滿足用戶的需要時,用戶可以非常方便地對Jetty的某些實現進行修改,使得Jetty適用于特殊的應用程序的需求。
2.知識剖析
Tomcat和Resin的區別
相同點:他們都是用java編寫的,都是web服務器,并且支持集群部署。
不同點:
1、速度方面,Resin比Tomcat快2倍以上,不過Tomcat也很快,所以這個差別幾乎感受不到。
2、開關機制上方面,Resin要比Tomcat好,比如修改了配置文件之后,Resin是會自動重啟的,而Tomcat需要人工手動關閉并重啟。
3、報錯方面,Tomcat比較詳細,一個小小的錯誤也會用大篇幅來描述,而Resin則相對簡潔明確一些。
Tomcat和Jetty的區別
相同點:他們同樣是用java編寫,都是一種Servlet引擎,他們都支持標準的servlet規范和JavaEE的規范。
不同點:
1、架構方面,Jetty的架構是基于Handler來實現的,主要的擴展功能都可以用Handler來實現,擴展簡單。
Tomcat的架構是基于容器設計的,進行擴展是需要了解Tomcat的整體設計結構,不易擴展。
2、靈活性方面,Jetty更靈活,體現在其可插拔性和可擴展性,更易于開發者對Jetty本身進行二次開發,定制一個適合自身需求的Web Server。
相比之下,重量級的Tomcat因為本來就支持過多特性,要對其精簡,比對jetty進行拓展都更難。
3、處理性能方面,Tomcat適合處理少數非常繁忙的鏈接,也就是說鏈接生命周期短的話,Tomcat的總體性能更高。另外,Jetty在處理靜態資源時,性能優于Tomcat。
3.常見問題
在線上服務應該選擇哪一種WEB服務器?
4.解決方案
這些服務器各有優劣,選擇服務器時應該先參考項目,預估規模大小等。比如大規模的企業級應用,Tomcat自身擴展了大量JEE特性可滿足企業級應用的需求,
所以這種情況下應選用Tomcat。
5.編碼實戰
6.擴展思考
7.參考文獻
http://blog.csdn.net/lihua2915/article/details/5997105
8.更多討論
除了這幾種服務器,還有哪些重要的服務器?
Jboss,weblogic,apache等。
可否使用nginx對這幾種服務器設置均衡負載配置?
可以,nginx反向代理這幾種服務器就行了。