《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > Nginx架構介紹 Nginx服務器模型分析

Nginx架構介紹 Nginx服務器模型分析

2019-01-14
關鍵詞: Nginx 服務器

  Nginx是一款免費的、開源的、高性能、模塊化、輕量級的HTTP服務器、反向代理服務器以及電子郵件(IMAP/POP3)代理服務器。

  很多大型的網站都使用Nginx,如:百度、京東、新浪、網易、騰訊、淘寶等。

o4YBAFw3B-iAExqbAACUxLkAmgE671.jpg

  1.Nginx的整體架構簡介

  Nginx架構介紹 Nginx服務器模型分析

  1)Nginx啟動后,會產生一個主進程,主進程執行一系列的工作后會產生一個或者多個工作進程;

  2)在客戶端請求動態站點的過程中,Nginx服務器還涉及和后端服務器的通信。Nginx將接收到的Web請求通過代理轉發到后端服務器,由后端服務器進行數據處理和組織;

  3)Nginx為了提高對請求的響應效率,降低網絡壓力,采用了緩存機制,將歷史應答數據緩存到本地。保障對緩存文件的快速訪問;

  2. Nginx的模塊化

  高度模塊化的設計是 Nginx 的架構基礎。Nginx嚴格遵循“高內聚,低耦合”的原則,將服務器設計為多個模塊,每個模塊就是一個獨立的功能模塊,只負責自身的功能。

o4YBAFw3B-iAWpEYAACeXjG73RI491.jpg

  這5個模塊從上到下重要性依次遞減。

  (1)核心模塊

  核心模塊是Nginx服務器正常運行必不可少的模塊,如同操作系統的內核。它提供了Nginx最基本的核心服務。像進程管理、權限控制、錯誤日志記錄等;

  (2)標準HTTP模塊

  標準HTTP模塊支持標準的HTTP的功能;

  (3)可選HTTP模塊

  可選HTTP模塊主要用于擴展標準的HTTP功能,讓Nginx能處理一些特殊的服務;

  (4)郵件服務模塊

  郵件服務模塊主要用于支持Nginx的郵件服務;

  (5)第三方模塊

  第三方模塊是為了擴展Nginx服務器應用,完成開發者想要的功能;

  3.Nginx的Web請求處理機制

  從架構設計上說,Nginx服務器是與眾不同的。其一在于它的模塊化設計;其二也是更重要的一點在于它對與客戶端請求的處理機制上。 Nginx請求處理機制結合多進程機制和異步非阻塞機制。

  1)多進程

  多進程方式指服務器每當收到一個客戶端請求時就由服務器主進程生成一個子進程出來和客戶端建立連接進行交互,直到連接斷開,該子進程就結束了。多進程方式的優點是設計簡單,各個子進程相對獨立,處理客戶端請求時彼此不受干擾;缺點是操作系統生成一個子進程需要進行內存復制等操作,在資源和時間上會產生一定的開銷;當有大量請求時,會導致系統性能下降;

  2)異步非阻塞

  發送方向接收方發送請求后,不用等待響應,可以繼續其他工作;接收方處理請求時進行的IO操作如果不能馬上得到結果,也不必等待,而是馬上返回去去做其他事情。當IO操作完成以后,將完成狀態和結果通知接收方,接收方再響應發送方。

  4. Nginx服務器的事件驅動模型

  從上面我們可以知道,Nginx服務器的工作進程調用IO后,就取進行其他工作了;當IO調用返回后,會主動通知工作進程。像select/poll/epoll等這樣的系統調用就是用來支持這種解決方案的。這些系統調用也常被稱為事件驅動模型,他們提供了一種機制就只讓進程同時處理多個并發請求,不用關心IO調用的具體狀態。IO調用完全由事件驅動模型來管理。

  Nginx架構介紹 Nginx服務器模型分析

o4YBAFw3B-mALM_EAABDcF9SJNc719.jpg

  如上圖所示,Nginx的事件驅動模型由事件收集器、事件發送器和事件處理器三部分基本單元組成。

  select,poll,epoll都是IO多路復用的機制。I/O多路復用就是通過一種機制,一個進程可以監視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒),能夠通知程序進行相應的讀寫操作。select,poll,epoll本質上都是同步I/O,因為他們都需要在讀寫事件就緒后自己負責進行讀寫,也就是說這個讀寫過程是阻塞的。

  5. Nginx服務器Master-Worker進程處理模型

o4YBAFw3B-mAWu2hAABJ0twsUNQ516.jpg

  Nginx架構介紹 Nginx服務器模型分析

  Nginx服務器在使用Master-Worker模型時,會涉及到主進程和工作進程的交互和工作進程之間的交互。這兩類交互都依賴于管道機制。

  Master-Worker交互

  這條管道與普通的管道不同,它是由主進程指向工作進程的單向管道,包含主進程向工作進程發出的指令,工作進程ID等;同時主進程與外界通過信號通信;

  Worker-Worker交互

  這種交互是和Master-Worker交互是基本一致的,但是會通過主進程。工作進程之間是相互隔離的,所以當工作進程W1需要向工作進程W2發指令時,首先找到W2的進程ID,然后將正確的指令寫入指向W2的通道。W2收到信號采取相應的措施。

  通過這篇文章,我們對Nginx服務器的整體架構有了一個整體的認識。另外推薦大家多看看Nginx的源碼,以便能更好地領悟 Nginx的設計思想。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 成人羞羞视频免费看 | freexxxxⅹhd18日本 | 日p免费视频| 97国产在线公开免费观看 | 国产国语一级a毛片高清视频 | 在线播放一区二区三区 | 成人满18在线观看网站免费 | 大香网伊人久久综合网2020 | 国产欧美日韩不卡在线播放在线 | 国产成人一区二区三区影院免费 | xxxx69中国hd老师18 | 日本大片成人免费网址 | 香蕉视频破解 | 全黄一级裸片视频在线观看 | 国产婷婷综合丁香亚洲欧洲 | 亚洲永久中文字幕在线 | 你懂的免费在线观看 | 欧美性受xxxx喷水性欧洲 | 经典三级四虎在线观看 | 一级毛片成人免费看免费不卡 | 免费麻豆国产黄网站在线观看 | 国产高清黄色 | 久久天天躁狠狠躁夜夜2020一 | 美国一级做a爰片性色毛片 美国一级做a一级视频 | 国产亚洲视频网站 | 国产农村精品一级毛片视频 | 久久制服丝袜 | 在线观看色 | 九九在线精品视频播放 | 天天艹日日干 | 日韩福利社 | 国产在线99| 免费看欧美一级片 | www午夜免费漫画 | 精品一区视频 | 伊人久久综合视频 | 三级毛片在线免费观看 | 高清波多野结衣一区二区三区 | 欧美午夜在线 | 欧美一级高清黄图片 | 中国videos露脸hd |