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

本系列文章將整理到我在GitHub上的《Java面試指南》倉庫,更多精彩內容請到個人倉庫裏查看前端

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

喜歡的話麻煩點下Star哈git

文章首發於個人我的博客:程序員

www.how2playlife.comgithub

本文是微信公衆號【Java技術江湖】的《走進JavaWeb技術世界》其中一篇,本文部份內容來源於網絡,爲了把本文主題講得清晰透徹,也整合了不少我認爲不錯的技術博客內容,引用其中了一些比較好的博客文章,若有侵權,請聯繫做者。web

該系列博文會告訴你如何從入門到進階,從servlet到框架,從ssm再到SpringBoot,一步步地學習JavaWeb基礎知識,並上手進行實戰,接着瞭解JavaWeb項目中常常要使用的技術和組件,包括日誌組件、Maven、Junit,等等內容,以便讓你更完整地瞭解整個Java Web技術體系,造成本身的知識框架。面試

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

若是對本系列文章有什麼建議,或者是有什麼疑問的話,也能夠關注公衆號【Java技術江湖】聯繫做者,歡迎你參與本系列博文的創做和修訂。apache

文末贈送8000G的Java架構師學習資料,須要的朋友能夠到文末了解領取方式,資料包括Java基礎、進階、項目和架構師等免費學習資料,更有數據庫、分佈式、微服務等熱門技術學習視頻,內容豐富,兼顧原理和實踐,另外也將贈送做者原創的Java學習指南、Java程序員面試指南等乾貨資源)後端

<!-- more -->

下面主要介紹下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 代理服務器。

區別

1. Apache與Tomcat的比較

相同點:

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

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

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 能保持低資源低消耗高性能高度模塊化的設計,編寫模塊相對簡單提供負載均衡

社區活躍,各類高性能模塊出品迅速

  1. apache 相對於nginx 的優勢

apache的 rewrite 比nginx 的強大 ;

支持動態頁面;

支持的模塊多,基本涵蓋全部應用;

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

  1. 二者優缺點比較

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較適合。

微信公衆號

我的公衆號:黃小斜

黃小斜是跨考軟件工程的 985 碩士,自學 Java 兩年,拿到了 BAT 等近十家大廠 offer,從技術小白成長爲阿里工程師。

做者專一於 JAVA 後端技術棧,熱衷於分享程序員乾貨、學習經驗、求職心得和程序人生,目前黃小斜的CSDN博客有百萬+訪問量,知乎粉絲2W+,全網已有10W+讀者。

黃小斜是一個斜槓青年,堅持學習和寫做,相信終身學習的力量,但願和更多的程序員交朋友,一塊兒進步和成長!

原創電子書: 關注公衆號【黃小斜】後回覆【原創電子書】便可領取我原創的電子書《菜鳥程序員修煉手冊:從技術小白到阿里巴巴Java工程師》

程序員3T技術學習資源: 一些程序員學習技術的資源大禮包,關注公衆號後,後臺回覆關鍵字 「資料」 便可免費無套路獲取。

考研複習資料: 計算機考研大禮包,都是我本身考研複習時用的一些複習資料,包括公共課和專業的複習視頻,這裏也推薦給你們,關注公衆號後,後臺回覆關鍵字 「考研」 便可免費獲取。

技術公衆號:Java技術江湖

若是你們想要實時關注我更新的文章以及分享的乾貨的話,能夠關注個人公衆號【Java技術江湖】一位阿里 Java 工程師的技術小站,做者黃小斜,專一 Java 相關技術:SSM、SpringBoot、MySQL、分佈式、中間件、集羣、Linux、網絡、多線程,偶爾講點Docker、ELK,同時也分享技術乾貨和學習經驗,致力於Java全棧開發!

Java工程師必備學習資源: 一些Java工程師經常使用學習資源,關注公衆號後,後臺回覆關鍵字 「Java」 便可免費無套路獲取。

個人公衆號

相關文章
相關標籤/搜索