Apace、Ngnix、Tomcat三者关系
生活随笔
收集整理的這篇文章主要介紹了
Apace、Ngnix、Tomcat三者关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Apache,指的應該是Apache軟件基金會下的一個項目——Apache HTTP Server Project;Nginx同樣也是一款開源的HTTP服務器軟件(當然它也可以作為郵件代理服務器、通用的TCP代理服務器)。
Apache/Nginx 應該叫做「HTTP Server」;而 Tomcat 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發的應用也無法直接運行在 Tomcat 上)。 HTTP服務器本質上也是一種應用程序——它通常運行在服務器之上,綁定服務器的IP地址并監聽某一個tcp端口來接收并處理HTTP請求,這樣客戶端(一般來說是IE, Firefox,Chrome這樣的瀏覽器)就能夠通過HTTP協議來獲取服務器上的網頁(HTML格式)、文檔(PDF格式)、音頻(MP4格式)、視頻(MOV格式)等等資源。下圖描述的就是這一過程:
<img src="https://pic2.zhimg.com/904696074e077934e601f175913f42fd_b.png" data-rawwidth="849" data-rawheight="273" class="origin_image zh-lightbox-thumb" width="849" data-original="https://pic2.zhimg.com/904696074e077934e601f175913f42fd_r.png">
不僅僅是Apache HTTP Server和Nginx,絕大多數編程語言所包含的類庫中也都實現了簡單的HTTP服務器方便開發者使用:
Apache Tomcat則是Apache基金會下的另外一個項目,與Apache HTTP Server相比,Tomcat能夠動態的生成資源并返回到客戶端。Apache HTTP Server和Nginx都能夠將某一個文本文件的內容通過HTTP協議返回到客戶端,但是這個文本文件的內容是固定的——也就是說無論何時、任何人訪問它得到的內容都是完全相同的,這樣的資源我們稱之為靜態資源。動態資源則與之相反,在不同的時間、不同的客戶端訪問得到的內容是不同的,例如:
如果想要使用Java程序來動態生成資源內容,使用這一類HTTP服務器很難做到。Java Servlet技術以及衍生的Java Server Pages技術可以讓Java程序也具有處理HTTP請求并且返回內容(由程序動態控制)的能力,Tomcat正是支持運行Servlet/JSP應用程序的容器(Container):
<img src="https://pic3.zhimg.com/2651b72ce2170336d10ad17fd020ae7a_b.png" data-rawwidth="885" data-rawheight="502" class="origin_image zh-lightbox-thumb" width="885" data-original="https://pic3.zhimg.com/2651b72ce2170336d10ad17fd020ae7a_r.png">Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址并監聽TCP端口,同時還包含以下指責:
Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址并監聽TCP端口,同時還包含以下指責:
雖然Tomcat也可以認為是HTTP服務器,但通常它仍然會和Nginx配合在一起使用:
<img src="https://pic2.zhimg.com/904696074e077934e601f175913f42fd_b.png" data-rawwidth="849" data-rawheight="273" class="origin_image zh-lightbox-thumb" width="849" data-original="https://pic2.zhimg.com/904696074e077934e601f175913f42fd_r.png">
不僅僅是Apache HTTP Server和Nginx,絕大多數編程語言所包含的類庫中也都實現了簡單的HTTP服務器方便開發者使用:
- HttpServer (Java HTTP Server )
- Python SimpleHTTPServer
Apache Tomcat則是Apache基金會下的另外一個項目,與Apache HTTP Server相比,Tomcat能夠動態的生成資源并返回到客戶端。Apache HTTP Server和Nginx都能夠將某一個文本文件的內容通過HTTP協議返回到客戶端,但是這個文本文件的內容是固定的——也就是說無論何時、任何人訪問它得到的內容都是完全相同的,這樣的資源我們稱之為靜態資源。動態資源則與之相反,在不同的時間、不同的客戶端訪問得到的內容是不同的,例如:
- 包含顯示當前時間的頁面
- 顯示當前IP地址的頁面
如果想要使用Java程序來動態生成資源內容,使用這一類HTTP服務器很難做到。Java Servlet技術以及衍生的Java Server Pages技術可以讓Java程序也具有處理HTTP請求并且返回內容(由程序動態控制)的能力,Tomcat正是支持運行Servlet/JSP應用程序的容器(Container):
<img src="https://pic3.zhimg.com/2651b72ce2170336d10ad17fd020ae7a_b.png" data-rawwidth="885" data-rawheight="502" class="origin_image zh-lightbox-thumb" width="885" data-original="https://pic3.zhimg.com/2651b72ce2170336d10ad17fd020ae7a_r.png">Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址并監聽TCP端口,同時還包含以下指責:
Tomcat運行在JVM之上,它和HTTP服務器一樣,綁定IP地址并監聽TCP端口,同時還包含以下指責:
- 管理Servlet程序的生命周期
- 將URL映射到指定的Servlet進行處理
- 與Servlet程序合作處理HTTP請求——根據HTTP請求生成HttpServletResponse對象并傳遞給Servlet進行處理,將Servlet中的HttpServletResponse對象生成的內容返回給瀏覽器
雖然Tomcat也可以認為是HTTP服務器,但通常它仍然會和Nginx配合在一起使用:
- 動靜態資源分離——運用Nginx的反向代理功能分發請求:所有動態資源的請求交給Tomcat,而靜態資源的請求(例如圖片、視頻、CSS、JavaScript文件等)則直接由Nginx返回到瀏覽器,這樣能大大減輕Tomcat的壓力。
- 負載均衡,當業務壓力增大時,可能一個Tomcat的實例不足以處理,那么這時可以啟動多個Tomcat實例進行水平擴展,而Nginx的負載均衡功能可以把請求通過算法分發到各個不同的實例進行處理
作者的話:現在Apace用的越來越少了,取而代之的是Ngnix,因為Ngnix的性能更優異,輕量級,簡潔,這里就不重點講解二者的區別。
總結
以上是生活随笔為你收集整理的Apace、Ngnix、Tomcat三者关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决spring的bean同名冲突
- 下一篇: MySQL单表多字段模糊查询