從JavaWeb的角度認識Nginx


  作為一名JavaWeb方向程序員,更多的是寫服務器后台代碼,但是俗話說,不想當架構師的程序員不是好程序員,我們要對並發、負載等詞匯進行深入探索。

 

一、重新認識Tomcat

  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服務器呢?

 

二、認識Nginx

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

 

三、Nginx的功能

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

 

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

 

四、關於負載均衡

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

  在這里我們只闡述對請求的的負載均衡。

  通過負載均衡調度服務器,將來自瀏覽器的訪問請求分發到應用服務器集群中的任何一台服務器上,如果有更多的用戶,就在集群中加入更多的應用服務器,使應用服務器的負載壓力不再成為整個網站的瓶頸。

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

   

 

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

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

  注意:在這里Tomcat應用服務器就是Java應用,可以理解為后台。

 

總結:在這里Nginx作為反向代理服務器,可以對后台的多台Tomcat服務器負載均衡,也可以讓Nginx處理靜態頁面的請求、Tomcat處理JSP頁面請求,以此達到動靜分離的目的。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM