學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

互聯(lián)網(wǎng)研發(fā)運(yùn)維都必用的Nginx到底是什么呢?

來源:北大青鳥總部 2023年06月19日 15:00

摘要: Nginx作為一款優(yōu)秀的開源web服務(wù)器軟件,因?yàn)樾阅芊€(wěn)定、適合多個(gè)場景、使用簡單等優(yōu)點(diǎn),在各互聯(lián)網(wǎng)公司,大到上萬人的阿里京東騰訊頭條滴滴美團(tuán),小到幾十百人的創(chuàng)業(yè)團(tuán)隊(duì),從研發(fā)都運(yùn)維,它都是最炙手可熱的。

如果說有一款工具是互聯(lián)網(wǎng)公司必備的,那一定是Nginx,作為一款優(yōu)秀的開源web服務(wù)器軟件,因?yàn)樾阅芊€(wěn)定、適合多個(gè)場景、使用簡單等優(yōu)點(diǎn),在各互聯(lián)網(wǎng)公司,大到上萬人的阿里京東騰訊頭條滴滴美團(tuán),小到幾十百人的創(chuàng)業(yè)團(tuán)隊(duì),從研發(fā)都運(yùn)維,它都是最炙手可熱的。在web服務(wù)應(yīng)用中,它可以實(shí)現(xiàn)靜態(tài)資源、PHP等網(wǎng)站的搭建;在后端代理服務(wù)中,它支持tcp/udp、http、grpc、fastcgi(PHP語言使用的協(xié)議)等協(xié)議的轉(zhuǎn)發(fā)處理;在緩存場景中,它自身可以緩存歷史數(shù)據(jù);在API網(wǎng)關(guān)應(yīng)用中,它提供了身份認(rèn)證、鑒權(quán)等操作。在云計(jì)算、大數(shù)據(jù)的海量高并發(fā)場景下,更是需要Nginx來協(xié)同工作。

簡單的介紹了Nginx的功能后,我們來看看Nginx背后的架構(gòu)是怎么樣的它是如何進(jìn)行設(shè)計(jì)的?在Nginx的架構(gòu)中包含master節(jié)點(diǎn)、worker節(jié)點(diǎn)、緩存、第三方(web服務(wù)器、應(yīng)用服務(wù)器)。Nginx啟動之后,前端每傳來一個(gè)用戶請求,master主進(jìn)程都會生成一個(gè)子進(jìn)程worker去進(jìn)行處理,worker負(fù)責(zé)監(jiān)聽事件,處理任務(wù),比如將請求基于http等通信協(xié)議轉(zhuǎn)發(fā)給webserver。在nginx啟動的同時(shí),會開啟緩存功能,創(chuàng)建cacheloader進(jìn)程,cacheloader進(jìn)程將磁盤緩存的對象加載在內(nèi)存當(dāng)中,供nginx使用。此外Nginx采用異步非阻塞通信模式,即進(jìn)程接收到請求之后,客戶端不用等待響應(yīng),可以去處理其它任務(wù),等待操作完成之后再將數(shù)據(jù)返回給到客戶端。



此外,Nginx的邏輯架構(gòu)設(shè)計(jì)還采用了當(dāng)下最流行的設(shè)計(jì)思想,即基于事件驅(qū)動。在Nginx的整個(gè)邏輯架構(gòu)中,包含核心模塊、http模塊、配置模塊、第三方模塊等,核心模塊處理Nginx的核心任務(wù),如進(jìn)程管理、權(quán)限控制,http模塊處理http任務(wù),如與第三方進(jìn)行通信,第三方模塊提供Nginx的擴(kuò)展功能,開發(fā)者可以根據(jù)自己需求進(jìn)行二次開發(fā)。



介紹完了Nginx的架構(gòu)之后,我們來看看Nginx的使用用途。因?yàn)镹ginx非常的強(qiáng)大,它的用途自然也非常的廣,而當(dāng)下最熱門的技術(shù)理念莫過于DevOps,最熱的事件莫過于雙十一大促春節(jié)搶票了,那我們就從這兩個(gè)場景來進(jìn)行講解吧。

DevOps理念倡導(dǎo)的是微服務(wù)模式,快速開發(fā),快速迭代,持續(xù)集成,持續(xù)交付。也就是說會隨著業(yè)務(wù)的不斷擴(kuò)展,衍生出很多的新業(yè)務(wù),并且會拆分的非常原子化,由不同團(tuán)隊(duì)負(fù)責(zé)不同模塊的開發(fā)與上線。對于大公司來說,如果技術(shù)體系成熟,順其自然的拆分微服務(wù)架構(gòu)即可,但對于技術(shù)體系不成熟或歷史包袱比較重的公司,基于Nginx也可以很好的實(shí)現(xiàn)DevOps。如下圖所示,業(yè)務(wù)拆分成了電影、酒店、商超、旅游部分,通過Redis將不同業(yè)務(wù)的key存儲起來,用戶請求來了之后,經(jīng)過Nginx負(fù)載均衡去請求不同業(yè)務(wù)的ID,再把請求做轉(zhuǎn)發(fā),如果再有新的業(yè)務(wù)擴(kuò)展,在redis中增加一條記錄即可。



雙十一大促和春運(yùn)都面臨的一個(gè)問題是海量請求高并發(fā),雙十一是很多人搶東西,春運(yùn)是很多人搶票,當(dāng)請求突然爆發(fā)性的增長時(shí),如果沒有應(yīng)急措施,很有可能會造成服務(wù)癱瘓,業(yè)務(wù)不可用。作為技術(shù)部門的研發(fā)運(yùn)維都必須要保證服務(wù)的高可用,借助Nginx,當(dāng)業(yè)務(wù)請求量正常時(shí),訪問正常業(yè)務(wù)集群,同時(shí)也把數(shù)據(jù)備份到降級集群中,當(dāng)業(yè)務(wù)訪問量異常發(fā)生故障時(shí),通過Nginx將業(yè)務(wù)切到降級集群,恢復(fù)之后再把用戶切回,簡簡單單的保證了業(yè)務(wù)的高可用。



除了上述兩個(gè)最應(yīng)景的場景之外,其實(shí)Nginx還可以用來做運(yùn)營運(yùn)維數(shù)據(jù)的統(tǒng)計(jì)分析。你想想看啊,所有的請求都是通過Nginx的入口轉(zhuǎn)發(fā)的,那自然可以統(tǒng)計(jì)到用戶最長訪問的URL、接口,進(jìn)而可以獲取到用戶最長訪問的服務(wù)、業(yè)務(wù)、模塊,根據(jù)訪問量、請求量來做對應(yīng)模塊的性能優(yōu)化與業(yè)務(wù)運(yùn)維了。所以你也可以看到,不只是前端可以獲取用戶訪問數(shù)據(jù),后端也是可以獲取的喲。

通過本文,相信大家對Nginx已經(jīng)有了比較清楚的了解了,高并發(fā)、性能好、用途廣,難怪滴滴美團(tuán)阿里頭條內(nèi)部各業(yè)務(wù)線各技術(shù)部門都紛紛使用,青睞有加呢,在中小型創(chuàng)業(yè)公司它的使用也不賴噢。此外。如果你的業(yè)務(wù)正在遭遇高并發(fā)崩潰問題,抑或是正面臨技術(shù)架構(gòu)轉(zhuǎn)型,微服務(wù)落地,devops實(shí)踐等問題,那么你不妨考慮使用Nginx。它真的很簡單,也真的很好用。對于加入互聯(lián)網(wǎng)公司的研發(fā)運(yùn)維人員,熟練掌握Nginx也是一門技巧噢。


標(biāo)簽: nginx
熱門班型時(shí)間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計(jì)全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運(yùn)營班 爆滿開班
報(bào)名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接