求課吧精通OpenResty:1.Nginx介紹

簡介

Nginx是一款輕量級Web服務器,特點是高性能、高併發。由俄羅斯程序設計師Igor Sysoev開發,供俄國大型入口網站及搜索引擎Rambler使用。其在BSD-like協議下發行,是一款高性能Web服務器,目前在Web服務器中排名第二。雖然Apache還是全球Web服務器的"老大",但是Nginx已經佔到了Web服務器市場的22%以上,是成長最快的Web服務器。Nginx使用了大量的高併發和低內存佔用技術,並使用了高可靠性技術,擁有高過Apache一個數量級以上的接入能力。因為併發能力強的特點,Nginx在中國的互聯網公司中得到了大量應用,中國的大型互聯網公司無一不使用了Nginx,以應對中國眾多的網民,以及各種搶購熱潮(如淘寶雙十一、阿里六一八等)、世界盃等熱點事件。Nginx在這種大量的流量湧入、需要分流、導流、反向代理的場景下得到大量應用

Nginx的特點

與其他Web服務器相比,Nginx具有以下顯著特點

1.速度更快

Nginx使用了預讀、連接池、內存池等技術,使得單次HTTP請求速度更快。同時,因為其整體的多進程架構以及輕任務思想,在更多連接的情況下(以為單位的併發情況),Nginx比其他Web服務器速度更快

2.擴展性好

Nginx的結構是"核心+模塊"的結構,其本身就是一個基於Epoll或Kqueue的事件處理和分發架構,管理HTTP主流程,其他功能都可以通過模塊實現。模塊專注於自身功能實現,可以更穩定,模塊的升級和修復不影響其他功能以及核心本身。模塊可以不斷添加或升級,如事件模塊、代理模塊、過濾模塊、請求地址獲取模塊、地址轉換模塊、應答處理模塊、日誌模塊等。Nginx提供了眾多的模塊以供選擇,可以配置出不同行為的Web服務器

Nginx提供了C級別的模塊開發機制,但C級別的開發需要遵從複雜的數據結構。現在可以ngx_lua模塊以lua腳本實現業務邏輯。利益於lua協程的支持,ngx_lua在萬級併發請求時只佔用很少的內存,而性能都是萬級(QPS,每秒操作次數),這使得Nginx的擴展性更好

高可靠性

得益於整體架構的優秀以及模塊設計的簡單性,Nginx擁有極高的可靠性,在各大型網站中得到了認可。Nginx核心由一個任務很輕的管理進程(master進程)和若干工作進程(worker進程)組成。具體的HTTP請求在工作進程內負載均衡,如果某個工作進程異常終止了,管理進程會迅速重啟一個新的工作進程接替該進程

低內存佔用

一般情況下,10000個非活躍的HTTP保活連接僅佔用2.5MB內存。而ngx_lua每擴展10000個連接也僅佔2.xMB內存,使得Nginx可以大量部署

高併發能力

一般Nginx是部署在萬級以上的場合。為了應付少量的請求,各網站都需要單機能處理峰值10W以上併發請求的Web服務器。理論上,Nginx處理能力的上限僅受內存限制,簡單的業務場景下Nginx還可以提供更高的處理能力

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

熱部署

因為Nginx的管理進程和工作進程是分開設計的,所以可以實現熱部署功能,即能在系統不間斷的情況下升級可執行程序、更新配置文件、更新日誌文件等

開源

Nginx遵守相對自由的BSD協議。用戶可以自由使用Nginx,還可以自由修改和使用Nginx的源碼。用戶可以在節省大量時間和成本的情況下,得到一個高性能的服務器框架

更多精彩內容,請關注求課吧公眾號 itqiuke


分享到:


相關文章: