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