如果你混跡IT圈兒,你可能聽說過,或見過Nginx,IT技術人員對她都會有所耳聞,云計算工程師因為要應對負載均衡問題,需要更深入的了解Nginx,而Nginx也是百度、阿里、騰訊等企業IT架構中的常客。今天,筆者就與大家一起來探究一下,Nginx究竟是什么。
Nginx是什么?
根據維基百科的定義,Nginx(發音同engine x)是一個網頁服務器,它能反向代理HTTP,HTTPS,SMTP,POP和IMAP的協議鏈接,以及一個負載均衡器和一個HTTP緩存。
其初始版本發于12年前(2004年10月4日),起初只是供俄羅斯大型門戶網站及搜索引擎Rambler(Рамблер)使用,后再2011年俄羅斯Nginx公司獲得300萬美元風投,也在國內外獲得了大量的追隨者,國內的BAT、新浪、搜狐都有應用,國外的Facebook、TechCrunch、Groupon和WordPress等公司,也是Nginx的簇擁。
技術創始人為為Igor Sysoev
此軟件BSD-like協議下發行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系統中均可運行。技術創始人為為Igor Sysoev。
特性如何
Nginx之所以能夠受到世界各大互聯網公司的青睞,當然是基于前面提過的在BSD-like協議下發行,更重要的還是Nginx擁有高性能的特點,主要體現在占用內存少,穩定性高等方面。
正因為這個特點,Nginx在四年前,就被某寶內部系統廣泛使用。同時Nginx在處理并發服務能力方面十分優異,整體采用模塊化設計,在處理負載均衡方面有著出色表現。根據Nginx的官方測試結果顯示,Nginx可以支持五萬個平行鏈接,而在實際運作中,可以支持2萬至4萬個平行鏈接。
架構如何
Nginx高性能的特點很大原因要歸功于Nginx的架構與設計方式。當我們啟動Nginx之后,會出現一個Master進程和多個Wocker進程,Master進程主要用來管理Wocker進程,放Wocker進程異常退出后,會自動重新啟動新的Wocker進程。多個Wocker進程之間是對等的,同時也是相互獨立的。
Nginx架構圖(圖片來自網絡)
另外,Nginx使用了最新的epoll和kqueue網絡IO模型,這種模型在高并發的情況下,時間模型能夠有更高的效率。與多線程相比,這種事件處理方式優勢明顯,能夠不需要創建線程,每個請求占用的內存也很少,沒有上下文切換,事件處理十分輕量級。
結束語
五年前,Nginx技術創始人做了家公司,沖擊了微軟IIS(互聯網信息服務器Internet Information Server),如今,互聯網在快速發展中,高并發、高負載情況愈加平常,Nginx依然煥發著自己的活力。
如果你混跡IT圈兒,你可能聽說過,或見過Nginx,IT技術人員對她都會有所耳聞,云計算工程師因為要應對負載均衡問題,需要更深入的了解Nginx,而Nginx也是百度、阿里、騰訊等企業IT架構中的常客。今天,筆者就與大家一起來探究一下,Nginx究竟是什么。
Nginx是什么?
根據維基百科的定義,Nginx(發音同engine x)是一個網頁服務器,它能反向代理HTTP,HTTPS,SMTP,POP和IMAP的協議鏈接,以及一個負載均衡器和一個HTTP緩存。
其初始版本發于12年前(2004年10月4日),起初只是供俄羅斯大型門戶網站及搜索引擎Rambler(Рамблер)使用,后再2011年俄羅斯Nginx公司獲得300萬美元風投,也在國內外獲得了大量的追隨者,國內的BAT、新浪、搜狐都有應用,國外的Facebook、TechCrunch、Groupon和WordPress等公司,也是Nginx的簇擁。
技術創始人為為Igor Sysoev
此軟件BSD-like協議下發行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系統中均可運行。技術創始人為為Igor Sysoev。
特性如何
Nginx之所以能夠受到世界各大互聯網公司的青睞,當然是基于前面提過的在BSD-like協議下發行,更重要的還是Nginx擁有高性能的特點,主要體現在占用內存少,穩定性高等方面。
正因為這個特點,Nginx在四年前,就被某寶內部系統廣泛使用。同時Nginx在處理并發服務能力方面十分優異,整體采用模塊化設計,在處理負載均衡方面有著出色表現。根據Nginx的官方測試結果顯示,Nginx可以支持五萬個平行鏈接,而在實際運作中,可以支持2萬至4萬個平行鏈接。
架構如何
Nginx高性能的特點很大原因要歸功于Nginx的架構與設計方式。當我們啟動Nginx之后,會出現一個Master進程和多個Wocker進程,Master進程主要用來管理Wocker進程,放Wocker進程異常退出后,會自動重新啟動新的Wocker進程。多個Wocker進程之間是對等的,同時也是相互獨立的。
Nginx架構圖(圖片來自網絡)
另外,Nginx使用了最新的epoll和kqueue網絡IO模型,這種模型在高并發的情況下,時間模型能夠有更高的效率。與多線程相比,這種事件處理方式優勢明顯,能夠不需要創建線程,每個請求占用的內存也很少,沒有上下文切換,事件處理十分輕量級。
結束語
五年前,Nginx技術創始人做了家公司,沖擊了微軟IIS(互聯網信息服務器Internet Information Server),如今,互聯網在快速發展中,高并發、高負載情況愈加平常,Nginx依然煥發著自己的活力。