天天看點

走進JavaWeb技術世界7:Tomcat和其他WEB容器的差別

本系列文章将整理到我在GitHub上的《Java面試指南》倉庫,更多精彩内容請到我的倉庫裡檢視

https://github.com/h2pl/Java-Tutorial

喜歡的話麻煩點下Star哈

文章首發于我的個人部落格:

www.how2playlife.com

本文是微信公衆号【Java技術江湖】的《走進JavaWeb技術世界》其中一篇,本文部分内容來源于網絡,為了把本文主題講得清晰透徹,也整合了很多我認為不錯的技術部落格内容,引用其中了一些比較好的部落格文章,如有侵權,請聯系作者。

該系列博文會告訴你如何從入門到進階,從servlet到架構,從ssm再到SpringBoot,一步步地學習JavaWeb基礎知識,并上手進行實戰,接着了解JavaWeb項目中經常要使用的技術群組件,包括日志元件、Maven、Junit,等等内容,以便讓你更完整地了解整個Java Web技術體系,形成自己的知識架構。

為了更好地總結和檢驗你的學習成果,本系列文章也會提供每個知識點對應的面試題以及參考答案。

如果對本系列文章有什麼建議,或者是有什麼疑問的話,也可以關注公衆号【Java技術江湖】聯系作者,歡迎你參與本系列博文的創作和修訂。

下面主要介紹下tomcat 與 nginx,apache的定義、差別及優缺點。

Tomcat和實體伺服器的差別

Tomcat:

1.     本質:軟體 Web 應用伺服器----一個免費的開放源代碼的Web 應用伺服器,屬于輕量級應用伺服器,在中小型系統和并發通路使用者不是很多的場合下被普遍使用,是開發和調試JSP 程式的首選。

2.     用途:

a.  當在一台機器(即實體伺服器,也就是實體機)上配置好Apache 伺服器,可利用它響應HTML頁面的通路請求。實際上Tomcat是Apache 伺服器的擴充,但運作時它是獨立運作的,是以當你運作tomcat 時,它實際上作為一個與Apache 獨立的程序單獨運作的,Tomcat 實際上運作JSP 頁面和Servlet

b. Tomcat和IIS等Web伺服器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的預設模式。

實體伺服器:

1.本質:硬體,也就是我們經常講的伺服器或者實體機,我們的PC就是一台性能較低的網絡伺服器,常見的有 雲伺服器(例如阿裡雲ECS)等

2.組成:處理器、硬碟、記憶體、系統總線等,和通用的計算機架構類似,但是由于需要提供高可靠的服務,是以在處理能力、穩定性、可靠性、安全性、可擴充性、可管理性等方面要求較高。

詳解tomcat 與 nginx,apache的差別及優缺點

定義:

1. Apache

Apache HTTP伺服器是一個子產品化的伺服器,可以運作在幾乎所有廣泛使用的計算機平台上。其屬于應用伺服器。Apache支援支援子產品多,性能穩定,Apache本身是靜态解析,适合靜态HTML、圖檔等,但可以通過擴充腳本、子產品等支援動态頁面等。

(Apche可以支援PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache背景支撐,将Java請求由Apache轉發給Tomcat處理。) 缺點:配置相對複雜,自身不支援動态頁面。

2. Tomcat:

Tomcat是應用(Java)伺服器,它隻是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充,但是可以獨立于Apache運作。

3. Nginx

Nginx是俄羅斯人編寫的十分輕量級的HTTP伺服器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理伺服器,同時也是一個IMAP/POP3/SMTP 代理伺服器。

走進JavaWeb技術世界7:Tomcat和其他WEB容器的差別

差別

1. Apache與Tomcat的比較

相同點:

兩者都是Apache組織開發的兩者都有HTTP服務的功能兩者都是免費的 不同點:

Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛拟主機、URL轉發等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet标準下開發的一個JSP伺服器.

走進JavaWeb技術世界7:Tomcat和其他WEB容器的差別

Apache是一個Web伺服器環境程式,啟用他可以作為Web伺服器使用,不過隻支援靜态網頁如(ASP,PHP,CGI,JSP)等動态網頁的就不行。如果要在Apache環境下運作JSP的話就需要一個解釋器來執行JSP網頁,而這個JSP解釋器就是Tomcat。

Apache:側重于HTTPServer ,Tomcat:側重于Servlet引擎,如果以Standalone方式運作,功能上與Apache等效,支援JSP,但對靜态網頁不太理想;

Apache是Web伺服器,Tomcat是應用(Java)伺服器,它隻是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充,但是可以獨立于Apache運作。

實際使用中Apache與Tomcat常常是整合使用:

如果用戶端請求的是靜态頁面,則隻需要Apache伺服器響應請求。 如果用戶端請求動态頁面,則是Tomcat伺服器響應請求。 因為JSP是伺服器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷。

可以了解Tomcat為Apache的一種擴充。

2. Nginx與Apache比較

1) nginx相對于apache的優點

輕量級,同樣起web 服務,比apache占用更少的記憶體及資源 抗并發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發下nginx 能保持低資源低消耗高性能高度子產品化的設計,編寫子產品相對簡單提供負載均衡

社群活躍,各種高性能子產品出品迅速

2) apache 相對于nginx 的優點

apache的 rewrite 比nginx 的強大 ;

支援動态頁面;

支援的子產品多,基本涵蓋所有應用;

性能穩定,而nginx相對bug較多。

3) 兩者優缺點比較

Nginx 配置簡潔, Apache 複雜 ;

Nginx 靜态處理性能比 Apache 高 3倍以上 ;

Apache 對 PHP 支援比較簡單,Nginx 需要配合其他後端用;Apache 的元件比 Nginx 多 ;

apache是同步多程序模型,一個連接配接對應一個程序;nginx是異步的,多個連接配接(萬級别)可以對應一個程序;

nginx處理靜态檔案好,耗費記憶體少;

動态請求由apache去做,nginx隻适合靜态和反向;

Nginx适合做前端伺服器,負載性能很好;

Nginx本身就是一個反向代理伺服器 ,且支援負載均衡

總結

Nginx優點:負載均衡、反向代理、處理靜态檔案優勢。nginx處理靜态請求的速度高于apache;

Apache優點:相對于Tomcat伺服器來說處理靜态檔案是它的優勢,速度快。Apache是靜态解析,适合靜态HTML、圖檔等。

Tomcat:動态解析容器,處理動态請求,是編譯JSPServlet的容器,Nginx有動态分離機制,靜态請求直接就可以通過Nginx處理,動态請求才轉發請求到背景交由Tomcat進行處理。

Apache在處理動态有優勢,Nginx并發性比較好,CPU記憶體占用低,如果rewrite頻繁,那還是Apache較适合。

微信公衆号

個人公衆号:程式員黃小斜

微信公衆号【程式員黃小斜】新生代青年聚集地,程式員成長充電站。作者黃小斜,職業是阿裡程式員,身份是斜杠青年,希望和更多的程式員交朋友,一起進步和成長!專注于分享技術、面試、職場等成長幹貨,這一次,我們一起出發。

關注公衆号後回複“2020”領取我這兩年整理的學習資料,涵蓋自學程式設計、求職面試、算法刷題、Java技術學習、計算機基礎和考研等8000G資料合集。

技術公衆号:Java技術江湖

微信公衆号【Java技術江湖】一位阿裡 Java 工程師的技術小站,專注于 Java 相關技術:SSM、SpringBoot、MySQL、分布式、中間件、叢集、Linux、網絡、多線程,偶爾講點Docker、ELK,同時也分享技術幹貨和學習經驗,緻力于Java全棧開發!

關注公衆号後回複“PDF”即可領取200+頁的《Java工程師面試指南》強烈推薦,幾乎涵蓋所有Java工程師必知必會的知識點。