Nginx 爲什麼是高效服務器,架構設計是怎樣的?

一、Nginx 簡介

Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音爲“engine X”,是一個高性能的 HTTP 和反向代理服務器,同時也是一個 IMAP/POP3/SMTP 代理服務器。

Nginx 因爲它的穩定性、豐富的模塊庫、靈活的配置和低系統資源的消耗而聞名.業界一致認爲它是 Apache2.2+mod_proxy_balancer 的輕量級代替者,不僅是因爲響應靜態頁面的速度非常快,而且它的模塊數量達到 Apache 的近 2/3。對 proxy 和 rewrite 模塊的支持很徹底,還支持 mod_fcgi、ssl、vhosts ,適合用來做 mongrel clusters 的前端 HTTP 響應。

目前 Nginx 在國內很多大型企業都有應用,且普及率呈逐年上升趨勢。選擇 Nginx 的理由也很簡單:

第一,它可以支持 5W 高併發連接;

第二,內存消耗少;

第三,成本低。

Nginx 在架構中發揮的作用:

網關

---面向客戶的總入口。

虛擬主機

---一臺機器爲不同的域名/ip/端口提供服務

路由

---使用反向代理,整合後續服務爲一個完整業務

靜態服務器

---mvvm 模式中,用來發布前端 html/css/js/img

負載集羣

---使用 upstream,負載多個 tomcat

二、Nginx特點

與其他web服務器相比,Nginx特點:

1、速度快

nginx使用預讀、連接池、內存池等技術,使得單次HTTP請求速度更快。

2、擴展性好

Nginx的結構是“核心+模塊”的結構,Nginx本身就是一個Epool或Kqueue的事件處理和分發架構,後面會講到模塊知識。

3、高可靠性

Nginx的核心由一個任務很輕的管理進程(master進程)和若干工作進程(worker進程)組成。具體的HTTP請求在工作進程內負載均衡,如果某個工作進程異常終止了,管理進程會迅速重啓一個新的工作進程接替該進程。

4、低內存佔用

一般情況下,10000個非活躍HTTP保活連接僅佔用2.5MB內存。ngx_lua每擴展10000個連接也僅佔2.xMB內存。

5、高併發能力

部署在萬級以上的場合下。

Nginx全異步、非阻塞I/O的思想貫徹在覈心、模塊以及ngx_lua 模塊中,無論是自己實現的模塊,還是通過lua實現的腳本代碼,都是非阻塞的高速運行。

6、熱部署

由於Nginx的管理進程和工作進程是分開設計的,所以能夠實現熱部署功能。也就是系統不間斷的情況下升級可執行程序,更新配置文件,更新日誌。

7、開源

三、Nginx 架構設計

高度模塊化的設計是 Nginx 的架構基礎。Nginx 服務器被分解爲多個模塊,每個模塊就是

一個功能模塊,只負責自身的功能,模塊之間嚴格遵循“高內聚,低耦合”的原則。

Nginx 模塊圖

核心模塊

核心模塊是 Nginx 服務器正常運行必不可少的模塊,提供錯誤日誌記錄、配置文件解析、

事件驅動機制、進程管理等核心功能。

標準 HTTP 模塊

標準 HTTP 模塊提供 HTTP 協議解析相關的功能,如:端口配置、網頁編碼設置、HTTP

響應頭設置等。

可選 HTTP 模塊

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

Flash 多媒體傳輸、解析 GeoIP 請求、SSL 支持等。

郵件服務模塊

郵件服務模塊主要用於支持 Nginx 的郵件服務,包括對 POP3 協議、IMAP 協議和

SMTP 協議的支持。

第三方模塊

第三方模塊是爲了擴展 Nginx 服務器應用,完成開發者自定義功能,如:Json 支持、Lua

支持等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章