NGINX 架構 - 《模組化設計》

更新於 發佈於 閱讀時間約 4 分鐘
上一篇有提到﹝NGINX﹞低消耗高效能的原由,正來至於它優秀的架構設計,其架構主要包括:『模組化設計』、『事件驅動架構』、『請求處理機制』、『管理程式與多工程式設計』、『記憶體池設計』。
而這邊透過自己的理解,來專門介紹『模組化設計』,以此來幫助自己認識NGINX架構的內容。

什麼是「模組化設計」

談到Nginx Server的架構,就不能不提「模組化設計」,那什麼是「模組化設計」呢?
模組化設計(英語:Modular design),也稱模塊化設計,是門設計理論與實作方法,其旨在於將一個系統細分為許多小單元,稱為模組(module)或模塊(block),可以獨立的於不同的系統中被建立與使用。模組化設計的特徵為將功能切分為抽象的、可擴充的、可重複使用的模組;更多細節,在維基百科上就有介紹了 - 《模組化設計wiki
因為這不是這篇主要介紹的重點,故不深入介紹,只需要理解概念就行,所以我們應該要透過簡單的文字,來讓自己迅速理解才是,就好比我們學加法時的候都知道「1+1=2」,但不用真的去理解為什麼等於2吧!
簡而言之,所謂的「模組化設計」就是支援應用擴充與升級。就如同用積木搭房子一樣,各個模組之間既能保持自己原有的獨立性,也能透過介面保持聯繫。
模組是由數個「基礎功能元件」組成的「特定功能組件」
Nginx Server 的開發完全遵循模組化設計思想,因此在應用擴充及升級方面,表現出極大的優越性。

Nginx 模組化結構

高度模組化的設計是Nginx 的架構基礎。Nginx Server 被分解為多個模組 ,每個模組就是一個功能模組,只負責自身的功能,模組之間嚴格遵循“高內聚,低耦合”的原則。
Nginx的模組又區分為五大類,分別為核心模組、標準HTTP模組、可選HTTP模組、郵件服務模組、第三方協力廠商模組。
NGINX 模組架構
Nginx的原始碼主要分佈在src/目錄下,src/目錄下也包含了所有的模組:
NGINX Default Repository
來源:連結

核心模組:

核心模組主要包含了對兩種功能的支援:
a. 主體功能:包含處理程序管理、許可權控制、錯誤記錄檔紀錄、設定解析等。
b. 回應請求事件功能:包含事件驅動機制、正規表示法解析等。
ngx_core:基礎核心庫和框架 -
NGINX的核心原始碼,包含常用的資料結構以及Nginx核心實現的程式碼。
ngx_event:事件驅動模型 -
NGINX事件驅動模型,以及定時器的實現相關代碼。

標準HTTP模組:

Nginx Server主要提供HTTP Service協議解析相關的功能,包含進階HTTP服務、Mail Service..等等,該模組皆在預設的情況下,直接被編譯到Nginx中。
ngx_http:HTTP 主要模組 -
Nginx主要都是Http Server的相關代碼,Port Config、Web編碼設定、HTTP響應頭設定 ...等等。
下面分享一些官方提供的常用標準HTTP模組:
常見標準HTTP模組
來源:連結
常見標準HTTP模組
來源:連結

可選HTTP模組:

可選HTTP模組與標準HTTP模組較為不同,這邊在快速編譯時,是預設不編譯的。如果想要使用相關模組,就必須再設定時使用
--with-XXX參數宣告
例如:Flash 多媒體傳輸 、解析 GeoIP 請求、 網路傳輸壓縮 、 安全協議 SSL 支援 ...等
下面分享一些官方提供的常用可選HTTP模組:
常見可選HTTP模組
來源:連結

郵件服務模組:

Mail Service是Nginx Server提供的主要服務之一,但和可選HTTP模組一樣,快速編譯時,預設不編譯郵件服務模組。
Mail Service Module
來源:連結
這些模組完成了郵件服務的主要功能,包含對POP3協定、IMAP協定和SMTP協定的支援,對身分認證、郵件代理和SSL安全服務的提供

協力廠商模組:

主要是為了擴充套件 Nginx 伺服器應用,由眾多的協力廠商的開發者來自定義功能,比如: Json 支援、 Lua 支援等。

參考資料:

此篇文章會顯示動態置底廣告
為什麼會看到廣告
avatar-img
14會員
28內容數
技術筆記紀錄、生活隨筆
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Scott Salon 的其他內容
什麼是NGINX ﹝NGINX﹞是一款免費的開源軟體的非同步框架的Web Server
什麼是NGINX ﹝NGINX﹞是一款免費的開源軟體的非同步框架的Web Server
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這篇文章中,我們深入探討系統架構的不同層面,尤其關注於軟體層面。文章介紹了幾種常見的架構模式,包括一體化架構、微服務架構、事件驅動架構、服務導向架構及無服務架構,並討論了其優缺點。此外,我們還探討了技術選型與性能優化的重要性,並提供實用的建議,幫助讀者在未來的軟體開發中做出更明智的選擇。
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
Thumbnail
作者主張當我們進行重大決策時,應先架構起一個框架(Frame)。善用這個框架之所有相關因素,才能達成預定成效。首先先定義何謂「思考框架」。其次就分多個章節仔細論述「思考框架」的具體內涵有哪些? 作者們舉出很多實際案例來闡述如何運用架構落實,在落實過程中應該注意哪些重要概念。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
微服務是一種分散式的專案架構,換個說法,就是將一個專案做“應用切割”,切出數個可以獨立執行的應用,如此可以降低耦合性,並提升敏捷性。 特點 低耦合 獨立部署 高可維護性 高可測試性
物件導向設計的一個重點就是封裝,這有很多層面上的意義,但基本上就是控制物件的成員變數和方法的存取權。物件導向的封裝還跟繼承機制有關,這使得有一些時候我們逼不得已必須把函式定義在類別上,這種做法使得物件的功能變得難以拆解。封裝應該是模組的職責,並不需要再給物件相同的能力。 一般的模組系統就是把相
Thumbnail
區塊鏈原理 什麼是區塊鏈? 區塊鏈(Blockchain)是一種分散式帳本技術,它基於加密學和分散式計算的原理,通過將數據以區塊的形式連接在一起,形成鏈條。每個區塊包含一定時間內的多筆交易記錄,並使用密碼學哈希函數與前一個區塊相連,這種連接保證了數據的不可篡改性。 2. 區塊鏈的基本結構 2
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在這篇文章中,我們深入探討系統架構的不同層面,尤其關注於軟體層面。文章介紹了幾種常見的架構模式,包括一體化架構、微服務架構、事件驅動架構、服務導向架構及無服務架構,並討論了其優缺點。此外,我們還探討了技術選型與性能優化的重要性,並提供實用的建議,幫助讀者在未來的軟體開發中做出更明智的選擇。
※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
Thumbnail
作者主張當我們進行重大決策時,應先架構起一個框架(Frame)。善用這個框架之所有相關因素,才能達成預定成效。首先先定義何謂「思考框架」。其次就分多個章節仔細論述「思考框架」的具體內涵有哪些? 作者們舉出很多實際案例來闡述如何運用架構落實,在落實過程中應該注意哪些重要概念。
Thumbnail
樣板模式的定義極為簡單,卻是大型系統程式、WEB/APP應用框架的設計核心,完美展現設計模式的價值: 簡單、高效、強大。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
微服務是一種分散式的專案架構,換個說法,就是將一個專案做“應用切割”,切出數個可以獨立執行的應用,如此可以降低耦合性,並提升敏捷性。 特點 低耦合 獨立部署 高可維護性 高可測試性
物件導向設計的一個重點就是封裝,這有很多層面上的意義,但基本上就是控制物件的成員變數和方法的存取權。物件導向的封裝還跟繼承機制有關,這使得有一些時候我們逼不得已必須把函式定義在類別上,這種做法使得物件的功能變得難以拆解。封裝應該是模組的職責,並不需要再給物件相同的能力。 一般的模組系統就是把相
Thumbnail
區塊鏈原理 什麼是區塊鏈? 區塊鏈(Blockchain)是一種分散式帳本技術,它基於加密學和分散式計算的原理,通過將數據以區塊的形式連接在一起,形成鏈條。每個區塊包含一定時間內的多筆交易記錄,並使用密碼學哈希函數與前一個區塊相連,這種連接保證了數據的不可篡改性。 2. 區塊鏈的基本結構 2