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