1. Nginx簡介以及特色
Nginx簡介:nginx
Nginx (engine x) 是一個高性能的Web服務器和反向代理服務器,也是一個IMAP/POP3/SMTP服務器程序員
- 俄羅斯程序員Igor Sysoev於2002年開始
- Nginx是增加最快的Web服務器,市場份額已達33.3%
- 全球使用量排名第二2011年成立商業公司
Nginx社區分支:算法
- 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進程
- 管理磁盤的緩存大小,超過預約值大小後最少使用數據將被刪除
框架模型:併發
框架模型流程:負載均衡
框架模型流程:
核心流程圖:
核心流程圖:
http請求流程:
Upstream設計:
- 訪問第三方Server服務器
- 底層HTTP通訊很是完善
- 異步非阻塞
- 上下游內存零拷貝,節省內存
- 支持自定義模塊開發
upstream流程:
4. Nginx定製化模塊開發
Nginx的模塊化設計特色:
- 高度抽象的模塊接口
- 模塊接口很是簡單,具備很高的靈活性
- 配置模塊的設計
- 核心模塊接口的簡單化
- 多層次、多類別的模塊設計
核心模塊:
handler模塊:
接受來自客戶端的請求並構建響應頭和響應體。
filter模塊:
過濾(filter)模塊是過濾響應頭和內容的模塊,能夠對回覆的頭和內容進行處理。它的處理時間在獲取回覆內容以後,向用戶發送響應以前。
upstream模塊:
使nginx跨越單機的限制,完成網絡數據的接收、處理和轉發,純異步的訪問後端服務。
load_balance:
負載均衡模塊,實現特定的算法,在衆多的後端服務器中,選擇一個服務器出來做爲某個請求的轉發服務器。
ngx_lua模塊:
- 腳本語言
- 內存開銷小
- 運行速度快
- 強大的 Lua 協程
- 非阻塞
- 業務邏輯以天然邏輯書寫
以上是我的對Nginx的一下看法,對Java感興趣的在這裏給你們免費分享一波福利,都是視頻資料,裏面就包涵了Java高併發、分佈式、微服務、高性能、源碼分析、JVM等技術資料
感興趣的加秋秋羣:856443934【免費】獲取!