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