1. 程式人生 > >常見的Web伺服器、應用伺服器(Apache、tomcat、jetty、Nginx)簡介及優缺點總結

常見的Web伺服器、應用伺服器(Apache、tomcat、jetty、Nginx)簡介及優缺點總結

介紹各個伺服器前,有必要講一下Apache與Tomcat關係,伺服器間的優缺點也是相比於apache與tomcat而言。

Apache是web伺服器(靜態解析,如HTML),tomcat是java應用伺服器(動態解析,如JSP)Tomcat只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴充套件,但是可以獨立於apache執行 ,同為伺服器,Tomcat的特別之處在於它還是Java的Web容器,能夠處理JSP;而Apache一般是與PHP結合,並不能處理JSP。

Apache常常與Tomcat整合起來使用,Apache處理靜態頁面,比如Html頁面,而Tomcat負責編譯處理JSP頁面與Servlet。

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

一、Apache簡介
Apache是世界使用排名第一的Web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等直譯器編譯到伺服器中。Apache HTTP伺服器是一個模組化的伺服器,源於NCSAhttpd伺服器,經過多次修改,成為世界使用排名第一的Web伺服器軟體。

Apache HTTP Server和Nginx都能夠將某一個文字檔案的內容通過HTTP協議返回到客戶端,但是這個文字檔案的內容是固定的——也就是說無論何時、任何人訪問它得到的內容都是完全相同的,這樣的資源我們稱之為靜態資源

優點:

1、相對於Tomcat伺服器來說Apache處理靜態檔案速度快。

2、apache的 rewrite 比nginx 的強大  

3、Apache效能穩定

缺點:

1、屬於老牌重量級web伺服器(重量級主要是在軟體包的大小上比較大,軟體的耦合度大)

2、速度、效能不及其他輕量級web伺服器,並且消費記憶體較高。

3、使用傳統的select模型,比較穩定的Prefork模式為多程序模式,需要經常派生子程序。所以消耗的cpu等伺服器資源比較大。

5、配置相對複雜,自身不支援動態頁面,不適合高併發場景。

二、Tomcat簡介
Tomcat 伺服器是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 伺服器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。、

動態資源:在不同的時間、不同的客戶端訪問得到的內容是不同的,例如:

包含顯示當前時間的頁面
顯示當前IP地址的頁面
Tomcat也可以認為是HTTP伺服器,但通常它仍然會和Nginx配合在一起使用:

動靜態資源分離——運用Nginx的反向代理功能分發請求:所有動態資源的請求交給Tomcat,而靜態資源的請求(例如圖片、視訊、CSS、JavaScript檔案等)則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力。

負載均衡,當業務壓力增大時,可能一個Tomcat的例項不足以處理,那麼這時可以啟動多個Tomcat例項進行水平擴充套件,而Nginx的負載均衡功能可以把請求通過演算法分發到各個不同的例項進行處理

優點:

1、Tomcat是開源的Web伺服器,經過長時間的發展,效能、穩定性等方面都非常好。

2、Tomcat是開源免費、功能強大易用的

3、與Apache HTTP Server相比,Tomcat能夠動態的生成資源並返回到客戶端。

缺點:

1、在靜態頁面處理能力上,Tomcat不如Apache。

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

優點:

1、Jetty可作為一個嵌入式伺服器,即:如可以在應用中加入Jetty的JAR檔案,應用便可以在程式碼中對外提供Web服務。

2、相對於Tomcat而言,Jetty更輕量級

3、Jetty 可以同時處理大量連線而且可以長時間保持這些連線。例如像一些 web 聊天應用非常適合用 Jetty 做伺服器,像淘寶的 web 旺旺就是用 Jetty 作為 Servlet 引擎。

缺點:

1、在處理少數非常繁忙的連線上沒有Tomcat強,也就是說連線的生命週期如果短的話,Tomcat 的總體效能更高

四、Nginx簡介
Nginx (engine x) 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器。Nginx也是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,並在一個BSD-like 協議下發行。

Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到後臺交由Tomcat進行處理。

優點:

1、輕量級,高效能http和反向代理伺服器。

2、高併發連線達到2-4萬個,記憶體、cpu等系統資源消耗低。Rewrite重寫規則(根據域名,URL的不同將HTTP請求分到不同的後端伺服器群組),內建的健康檢查功能(Nginx Proxy 後端的某臺web伺服器宕機也不會影響前端訪問),節省頻寬(支援GZIP壓縮,可以新增瀏覽器本地快取的Header頭)。

3、比apache佔用更少的記憶體及資源

4、 Nginx 靜態處理效能比 Apache 高 3倍以上 

5、安裝非常簡單 , 配置檔案非常簡潔(還能夠支援perl語法)

缺點:

1、nginx處理動態請求雞肋般動態請求要apache去做nginx只適合靜態和反向 

2、rewrite頻繁不如Apache
---------------------

轉載地址:https://blog.csdn.net/u012002125/article/details/81605577