APP開發(fā)對于后臺制作的相關(guān)知識,深圳APP開發(fā)公司-博納網(wǎng)絡(luò)在前面的文章中對相關(guān)的工具在Linux系統(tǒng)上應(yīng)該如何使用以及部署做過詳細(xì)介紹,本文我們主要說說App后臺HTTP服務(wù)的利器Nginx。
Nginx是個高性能的HTTP和反同代理服務(wù)器.在BAT等巨頭和眾多的移動互聯(lián)網(wǎng)公司中有廣泛的應(yīng)用。其王要特點是占用內(nèi)存少,并發(fā)能力強(qiáng)。
Nginx簡介
Nginx與Apache類似,其是個高}生能的HTTP和反同代理服務(wù)器訪問量第二的Rambler.ru站點開發(fā)的,其已經(jīng)在該站點運行超過三年也是個imap/pop3/smtp代理服務(wù)器。Nginx是由IgorSysoev為俄羅斯Igor將Nginx源代碼以類似BSD許可證的形式發(fā)布。到目前為止,Nginx已經(jīng)成為個非常流行的Web服務(wù)器在國內(nèi)外有著眾多的用戶。各個Web服務(wù)器的使用情況如圖5-l所示
APP開發(fā)使用Nginx圖5-1各個Web服務(wù)器的使用情況
根據(jù)圖5-1的統(tǒng)計結(jié)果,全球Top1000的網(wǎng)站中,有44.8%使用的是Nginx,全球Top10,000的網(wǎng)站中,有47.7%使用的是Nginx。
Nginx基本原理
下面講述Nginx兩方面的基本原理
·工作模型
·進(jìn)程解析
1.工作模型
Nginx的高性能主要是其使用了epoll(使用于Linux內(nèi)核26版本及以后的系統(tǒng)。在某些發(fā)行版本中如SuSE82,有讓2.4版本的內(nèi)核支持epoll的補(bǔ)?。┖蚹queue(使用于FreeBSD4l_、OpenBSD29_、NetBSD20和MacOSX)網(wǎng)絡(luò)I/O模型,而Apache則使用的是傳統(tǒng)的select模型(注:Apache24版本后也使用了epoll網(wǎng)絡(luò)I/O模型)。目前在Liuux下能夠承受而并發(fā)訪問的著名開源軟件Squid 、MeⅢcached采用的都是epoll網(wǎng)絡(luò)I/O模型。處理大量連續(xù)的讀寫請求,Apache所采用的select網(wǎng)絡(luò)I/O模型是非常低效的。下面用個例子分析Apache采用的select模型和Nginx采用的epoll模型之間的區(qū)別。
在菜館中,把服務(wù)員接待一個客人看成是處理一次請求,使用select模型的服務(wù)員是這樣接待客人的:當(dāng)客人入門,服務(wù)員就立刻引導(dǎo)客人入座,然后把菜單遞給客人,等待客人點菜??腿它c菜完畢后,服務(wù)員到廚房下單。當(dāng)廚房把菜做好后,服務(wù)員送菜到客人的桌上,平時服務(wù)員就在桌子旁邊招待客人。如果客人這時看電影,服務(wù)員也要守候在客人桌子旁邊。最后等客人吃完飯結(jié)賬后,送客人出門,服務(wù)員繼續(xù)招待下一個客人。
使用epoll模型的服務(wù)員是這樣接待客人的:當(dāng)客人進(jìn)門,門口有感應(yīng)器通知服務(wù)員,服務(wù)人就引導(dǎo)客人入座然后招待其他客人。客人看完菜單準(zhǔn)備點菜,客人呼喚服務(wù)員,服務(wù)員來到客人的桌上記下客人所點的菜,然后到廚房下單后繼續(xù)招待其他客人。當(dāng)服務(wù)員收到廚房通知菜做好了,服務(wù)員把菜送到客人桌后繼續(xù)干其他工作??腿顺酝觑埩?,客人呼喚服務(wù)員結(jié)賬,服務(wù)員送客人出門后繼續(xù)招待其他客人。
從上面的過程可看到,當(dāng)處理大量的請求(相當(dāng)于接待很多客人),epoll模型遠(yuǎn)遠(yuǎn)高效于select模型。由于頁面篇幅關(guān)系,本文關(guān)于APP開發(fā)與Nginx的使用以及功能介紹暫時就分享到這里。深圳APP開發(fā)-博納網(wǎng)絡(luò)會在下期的文章中繼續(xù)進(jìn)行詳細(xì)介紹。謝謝你關(guān)注。