Nginx 原理和架構
Nginx 是一個免費的,開源的,高效能的 HTTP 伺服器和反向代理,以及 IMAP / POP3 代理伺服器。Nginx 以其高效能,穩定性,豐富的功能,簡單的配置和低資源消耗而聞名。
Nginx 的整體架構
Nginx 裡有一個 master 程式和多個 worker 程式。master 程式並不處理網路請求,主要負責排程工作程式:載入配置、啟動工作程式及非停升級。worker 程式負責處理網路請求與響應。
master程式主要用來管理worker程式,具體包括如下4個主要功能:
- 接收來自外界的訊號。
- 向各worker程式傳送訊號。
- 監控woker程式的執行狀態。
- 當woker程式退出後(異常情況下),會自動重新啟動新的woker程式。
woker程式主要用來處理基本的網路事件:
- 多個worker程式之間是對等且相互獨立的,他們同等競爭來自客戶端的請求。
- 一個請求,只可能在一個worker程式中處理,一個worker程式,不可能處理其它程式的請求。
- worker程式的個數是可以設定的,一般我們會設定與機器cpu核數一致。同時,nginx為了更好的利用多核特性,具有cpu繫結選項,我們可以將某一個程式繫結在某一個核上,這樣就不會因為程式的切換帶來cache的失效。
Ngnix 是如何實現高效能的?
事件驅動模型
基於非同步及非阻塞的事件驅動模型,可以說是 Nginx 得以獲得高併發、高效能的關鍵因素。這一點上和 Netty 類似,底層都是使用的 BSD kqueue、Linux epoll 及 Solaris event ports。
多程式機制
使用多程式的好處有兩點:
- 程式之間不共享資源,不需要加鎖,減少了使用鎖對效能造成的影響,同時降低程式設計的複雜度,降低開發成本。
- 採用獨立的程式,可以讓程式互相之間不會影響,如果一個程式發生異常退出時,其它程式正常工作,master 程式則很快啟動新的 worker 程式,確保服務不會中斷,從而將風險降到最低。
記憶體池
為了避免出現記憶體碎片,減少向作業系統申請記憶體的次數、降低各個模組的開發複雜度,Nginx 設計了簡單的記憶體池,它的作用主要是把多次向系統申請記憶體的操作整合成一次,這大大減少了 CPU 資源的消耗,同時減少了記憶體碎片。
模組化設計
高度模組化的設計是 Nginx 的架構基礎。Openresty 就是在 Nginx 上引入了 lua 等第三方模組,使得擴充套件更加方便了。
資料
推薦
相關文章
- storm 架構和原理ORM架構
- Nginx架構賞析Nginx架構
- Nginx架構設計Nginx架構
- nginx 整體架構Nginx架構
- Nginx-03-Nginx 專案架構Nginx架構
- HashMap原理(一) 概念和底層架構HashMap架構
- 深入 Nginx 之架構篇Nginx架構
- HDFS架構及原理架構
- RocketMQ(1)-架構原理MQ架構
- 深入HBase架構原理架構
- nginx介紹(二) 架構篇Nginx架構
- nginx的高效能架構Nginx架構
- Nginx 高效能架構解析Nginx架構
- 聊聊Dubbo(三):架構原理架構
- 架構思想之CAP原理架構
- React Fiber架構原理React架構
- Opensearch架構及引擎原理架構
- Nginx 架構——【核心流程+模組介紹】Nginx架構
- 軟體架構-nginx詳解上架構Nginx
- Kafka 架構和原理機制 (圖文全面詳解)Kafka架構
- spark基礎之spark sql執行原理和架構SparkSQL架構
- 邏輯架構和物理架構架構
- RabbitMQ架構詳解(7大架構原理模型圖解)MQ架構模型圖解
- Nginx實現原理master和workerNginxAST
- Nginx 工作原理和優化、漏洞Nginx優化
- [系統架構] AKKA工作原理架構
- Storm架構與執行原理ORM架構
- Apache Arrow DataFusion原理與架構Apache架構
- tomcat + spring mvc 原理(一):tomcat原理綜述和靜態架構TomcatSpringMVC架構
- RabbitMQ原理和架構圖解(附6大工作模式)MQ架構圖解模式
- 架構師必備:MySQL主從同步原理和應用架構MySql主從同步
- Flink原理與實現:架構和拓撲概覽架構
- 深入淺出Nginx實戰與架構Nginx架構
- MySQL主從原理, 高可用架構與高效能架構MySql架構
- Tomcat 架構原理解析到架構設計借鑑Tomcat架構
- 我的架構夢:(五十九) Apache Hadoop 架構與原理架構ApacheHadoop
- Nginx的工作原理和配置詳解Nginx
- 瀏覽器架構-原理篇瀏覽器架構