Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器css
Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器 目前使用的最多的web服務器或者代理服務器,像淘寶、新浪、網易、迅雷等都在使用html
優勢:java
得益於它的事件處理機制: 異步非阻塞事件處理機制:運用了epoll模型,提供了一個隊列,排隊解決nginx
service nginx start以後,而後輸入#ps -ef|grep nginx,會發現Nginx有一個master進程和若干個worker進程,這些worker進程是平等的,都是被master fork過來的。在master裏面,先創建須要listen的socket(listenfd),而後再fork出多個worker進程。當用戶進入nginx服務的時候,每一個worker的listenfd變的可讀,而且這些worker會搶一個叫accept_mutex的東西,accept_mutex是互斥的,一個worker獲得了,其餘的worker就歇菜了。而搶到這個accept_mutex的worker就開始「讀取請求–解析請求–處理請求」,數據完全返回客戶端以後(目標網頁出如今電腦屏幕上),這個事件就算完全結束。web
nginx用這個方法是底下的worker進程搶注用戶的要求,同時搭配「異步非阻塞」的方式,實現高併發量。後端
由於線程建立和上下文的切換很是消耗資源,線程佔用內存大,上下文切換佔用cpu也很高,採用epoll模型避免了這個缺點瀏覽器
首先,nginx在啓動時,會解析配置文件,獲得須要監聽的端口與ip地址,而後在nginx的master進程裏面緩存
先初始化好這個監控的socket(建立socket,設置addrreuse等選項,綁定到指定的ip地址端口,再listen)tomcat
而後再fork(一個現有進程能夠調用fork函數建立一個新進程。由fork建立的新進程被稱爲子進程 )出多個子進程出來服務器
而後子進程會競爭accept新的鏈接。此時,客戶端就能夠向nginx發起鏈接了。當客戶端與nginx進行三次握手,與nginx創建好一個鏈接後
此時,某一個子進程會accept成功,獲得這個創建好的鏈接的socket,而後建立nginx對鏈接的封裝,即ngx_connection_t結構體
接着,設置讀寫事件處理函數並添加讀寫事件來與客戶端進行數據的交換。最後,nginx或客戶端來主動關掉鏈接,到此,一個鏈接就壽終正寢了
一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器)
而後代理向原始服務器轉交請求並將得到的內容返回給客戶端。客戶端才能使用正向代理
正向代理總結就一句話:代理端代理的是客戶端
反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的鏈接請求,而後將請求,發給內部網絡上的服務器
並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器
反向代理總結就一句話:代理端代理的是服務端
動態資源、靜態資源分離是讓動態網站裏的動態網頁根據必定規則把不變的資源和常常變的資源區分開來,動靜資源作好了拆分之後
咱們就能夠根據靜態資源的特色將其作緩存操做,這就是網站靜態化處理的核心思路
動態資源、靜態資源分離簡單的歸納是:動態文件與靜態文件的分離
在咱們的軟件開發中,有些請求是須要後臺處理的(如:.jsp,.do等等),有些請求是不須要通過後臺處理的(如:css、html、jpg、js等等文件)
這些不須要通過後臺處理的文件稱爲靜態文件,不然動態文件。所以咱們後臺處理忽略靜態文件。這會有人又說那我後臺忽略靜態文件不就完了嗎
固然這是能夠的,可是這樣後臺的請求次數就明顯增多了。在咱們對資源的響應速度有要求的時候,咱們應該使用這種動靜分離的策略去解決
動、靜分離將網站靜態資源(HTML,JavaScript,CSS,img等文件)與後臺應用分開部署,提升用戶訪問靜態代碼的速度,下降對後臺應用訪問
這裏咱們將靜態資源放到nginx中,動態資源轉發到tomcat服務器中
負載均衡便是代理服務器將接收的請求均衡的分發到各服務器中
負載均衡主要解決網絡擁塞問題,提升服務器響應速度,服務就近提供,達到更好的訪問質量,減小後臺服務器大併發壓力
原文:Java架構筆記
免費Java高級資料須要本身領取,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高併發分佈式等教程,一共30G。
傳送門: https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q