從JavaWeb的角度認識Nginx

  做爲一名JavaWeb方向程序員,更多的是寫服務器後臺代碼,可是俗話說,不想當架構師的程序員不是好程序員,咱們要對併發、負載等詞彙進行深刻探索。前端

 

1、從新認識Tomcatnginx

  1. Tomcat屬於輕量級的Web應用服務器,在中小型系統和併發訪問用戶不是不少的的場合下被廣泛使用。
  2. Tomcat其實是用來運行JSP頁面和Servlet的,獨立的Servlet容器是Tomcat的默認模式,能夠理解爲Tomcat只處理動態部分。
  3. 實際上Tomcat是Apache服務器項目的一個擴展組件,不過它是獨立運行的。
  4. 當配置正確時,Apache 爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。
  5. Tomcat具備處理HTML頁面的功能,可是它對HTML頁面的處理能力遠不如Apache。

 

  以上列舉了Tomcat這個Web應用服務器的不足之處以及它的側重點,由於它是Apache服務器的一個獨立擴展插件,因此要將Apache服務器和Tomcat應用服務器一塊兒使用才能取之長處避之短處。程序員

  可是隨着Nginx服務器的襲來,Apache服務器的主流功能均可被Nginx服務器代替,並且Nginx服務器的性能更好。Nginx對請求的處理是異步型的,非阻塞的;而Apache對請求的處理是阻塞型,非異步型的;在高併發狀況下Nginx能保持地資源低消耗高性能高度模塊化,並且Nginx的配置文件相對Apache更爲簡單。Nginx 同時也是一個很是優秀的郵件代理服務器,so,爲何不選擇Nginx服務器呢?後端

 

2、認識Nginx
瀏覽器

  1. Nginx是一個高性能的Http和反向代理服務器,也是一個IMAP/POP3/SMTP服務器(電子郵件代理)。
  2. Nginx可做爲負載均衡服務器,可做爲Http代理服務器對外進行服務。
  3. 處理靜態文件,索引文件以及自動索引;打開文件描述符緩衝。
  4. 模塊化的結構。
  5. 在國內,不少著名的網站都用Nginx走位網頁服務器,如百度、京東、新浪、網易、騰訊、淘寶等。

 

3、Nginx的功能緩存

  • 處理靜態文件,索引文件以及自動索引;
  • 反向代理加速(無緩存),簡單的負載均衡和容錯;
  • 基於IP 和名稱的虛擬主機服務;
  • 模塊化的結構。同一個 proxy的多個子請求併發處理;
  • IMAP/POP3/SMTP代理服務。
  • 基於客戶端 IP 地址和 HTTP 基本認證的訪問控制;
  • 支持 FLV (Flash 視頻);

 

Nginx還不止這些功能,我只是列出了常見的功能。tomcat

 

4、關於負載均衡服務器

  當一臺服務器的處理能力、存儲空間不足時,不要企圖去換更強大的服務器,對大型網站而言,無論多麼強大的服務器,都知足不了網站持續增加的業務需求。這種狀況下,更恰當的作法是增長一臺服務器分擔原有服務器的訪問及存儲壓力。擴展網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性。其意思就是分攤到多個操做單元上進行執行。網絡

  在這裏咱們只闡述對請求的的負載均衡。數據結構

  經過負載均衡調度服務器,未來自瀏覽器的訪問請求分發到應用服務器集羣中的任何一臺服務器上,若是有更多的用戶,就在集羣中加入更多的應用服務器,使應用服務器的負載壓力再也不成爲整個網站的瓶頸。

  理論上的JavaWeb項目結構應該是這樣的

   

 

5、Nginx和Tomcat對請求負載均衡的方案

  總體思想方向:前端部署nginx服務器,後端部署tomcat應用。用戶訪問nginx服務器,對於靜態資源nginx服務器直接返回到瀏覽器展現給用戶,對動態資源的請求被nginx服務器轉發(分配)到tomcat應用服務器,tomcat應用服務器將處理後獲得的數據結構返回給nginx服務器,而後返回到瀏覽器展現給用戶。

  注意:在這裏Tomcat應用服務器就是Java應用,能夠理解爲後臺。

 

總結:在這裏Nginx做爲反向代理服務器,能夠對後臺的多臺Tomcat服務器負載均衡,也可讓Nginx處理靜態頁面的請求、Tomcat處理JSP頁面請求,以此達到動靜分離的目的。

這篇博客講解科普、理論和方向,下篇博客將帶來實踐。

相關文章
相關標籤/搜索