Nginx核心流程及模塊介紹

Nginx核心流程及模塊介紹

1. Nginx簡介以及特色

Nginx簡介:nginx

Nginx (engine x) 是一個高性能的web服務器和反向代理服務器,也是一個IMAP/POP3/SMTP服務器程序員

  • 俄羅斯程序員Igor Sysoev於2002年開始
  • Nginx是增加最快的Web服務器,市場份額已達33.3%
  • 全球使用量排名第二2011年成立商業公司

Nginx社區分支:web

  • Openresty做者@agentzh(章宜春)開發的,最大特色是引入了ngx_lua模塊,支持使用lua開發插件,而且集合了不少豐富的模塊,以及lua庫。
  • Tengine主要是淘寶團隊開發。特色是融入了因淘寶自身的一些業務帶來的新功能。
  • Nginx官方版本,更新迭代比較快,而且提供免費版本和商業版本。

Nginx源碼結構:算法

  • 代碼量大約11萬行C代碼
  • 源代碼目錄結構
    • core (主幹和基礎設置)
    • event (事件驅動模型和不一樣的IO複用模塊)
    • http (HTTP服務器和模塊)
    • mail (郵件代理服務器和模塊)
    • os (操做系統相關的實現)
    • misc (雜項)

Nginx特色:後端

  • 反向代理,負載均衡器
  • 高可靠性、單master多worker模式
  • 高可擴展性、高度模塊化
  • 非阻塞
  • 事件驅動
  • 低內存消耗
  • 熱部署

2. Nginx應用場景

場景以下:緩存

  • 靜態文件服務器
  • 反向代理,負載均衡
  • 安全防護
  • 智能路由(企業級灰度測試、地圖POI一鍵切流)
  • 灰度發佈
  • 靜態化
  • 消息推送
  • 圖片實時壓縮
  • 防盜鏈

3. Nginx框架模型及流程介紹

進程組件角色:安全

  • master進程
    • 監視工做進程的狀態
    • 當工做進程死掉後重啓一個新的
    • 處理信號和通知工做進程
  • worker進程
    • 處理客戶端請求
    • 從主進程處得到信號作相應的事情
  • cache loader進程
    • 加載緩存索引文件信息,而後退出
  • cache manager進程
    • 管理磁盤的緩存大小,超過預約值大小後最少使用數據將被刪除

框架模型:服務器

 
image.png

 

框架模型流程:網絡

 
image.png

 

框架模型流程:負載均衡

 
image.png

 

 
image.png

核心流程圖:

 
master初始化流程.png

 

 
image.png

核心流程圖:

 
worker進程初始化流程.png

 

 
image.png

http請求流程:

 
HTTP請求流程.png

 

 
image.png

Upstream設計:

  • 訪問第三方Server服務器
  • 底層HTTP通訊很是完善
  • 異步非阻塞
  • 上下游內存零拷貝,節省內存
  • 支持自定義模塊開發
 
image.png

upstream流程:

 
upstream流程.png

 

 
image.png

4. Nginx定製化模塊開發

Nginx的模塊化設計特色:

  • 高度抽象的模塊接口
  • 模塊接口很是簡單,具備很高的靈活性
  • 配置模塊的設計
  • 核心模塊接口的簡單化
  • 多層次、多類別的模塊設計
 
image.png

核心模塊:

 
Nginx核心模塊.png

 

handler模塊:

  • 接受來自客戶端的請求並構建響應頭和響應體。
     
    handler.png

filter模塊:

  • 過濾(filter)模塊是過濾響應頭和內容的模塊,能夠對回覆的頭和內容進行處理。它的處理時間在獲取回覆內容以後,向用戶發送響應以前。


     
    filter.png

upstream模塊:

  • 使nginx跨越單機的限制,完成網絡數據的接收、處理和轉發,純異步的訪問後端服務。


     
    upstream.png

load_balance:

  • 負載均衡模塊,實現特定的算法,在衆多的後端服務器中,選擇一個服務器出來做爲某個請求的轉發服務器。


     
    load_balabce.png

ngx_lua模塊:

  • 腳本語言
  • 內存開銷小
  • 運行速度快
  • 強大的 Lua 協程
  • 非阻塞
  • 業務邏輯以天然邏輯書寫
 
相關文章
相關標籤/搜索