乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

       taotao_2016 2025-06-23
      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      nginx是什么架構(gòu)?是怎么樣的?你是一個(gè)程序員,你在電腦上編輯了一段文本,將它保存為t x t文件,將它拖到瀏覽器打開就能看到文件里的內(nèi)容。但這看起來太過單調(diào),為了讓畫面更豐富,我們定個(gè)規(guī)則,在文本邊上加兩個(gè)h e符號,文本就以標(biāo)題形式展示。加入u l和l i就能變成列表,加入i m g還能讓u r l文本直接變成對應(yīng)的圖片。這些帶尖括號的特殊符號,我們叫它標(biāo)簽,只要瀏覽器識別到這些標(biāo)簽就展示對應(yīng)的樣式。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      為了將這個(gè)自帶標(biāo)簽的文本跟t x t純文本區(qū)分開來,我們給了他新的后綴名html。瀏覽器只要識別到文件是html就會(huì)解析里面的標(biāo)簽,這樣我們就有了標(biāo)題、輸入框等各種豐富的內(nèi)容了。這其實(shí)就是我們平時(shí)在瀏覽器中看到的網(wǎng)頁。但不同的是,這個(gè)h t m l文件是瀏覽器從我們本地電腦文件中打開的,而我們平時(shí)訪問的網(wǎng)頁則是從某個(gè)遠(yuǎn)端服務(wù)器將文件傳到我們電腦的瀏覽器后打開的。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      那么問題就來了。我們是怎么獲得這個(gè)遠(yuǎn)端服務(wù)器上的h t m l文件的?沒有什么是加一層中間層不能解決的,如果有那就再加一層。這次我們要加的中間層是n g x,假設(shè)我們完全不了解n g x,來看一下它是怎么設(shè)計(jì)出來的。之前你點(diǎn)贊了嗎?關(guān)注了嗎?謝謝。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      h t t p服務(wù)器是什么?想要讓本地的瀏覽器獲取到放在遠(yuǎn)端服務(wù)器上的h t m l文件,那很簡單,我們可以在遠(yuǎn)端服務(wù)器啟動(dòng)一個(gè)進(jìn)程,這個(gè)進(jìn)程對外提供h t t p服務(wù),說白了就是提供了一個(gè)u r l。用戶在瀏覽器中輸入這個(gè)u r l回車,瀏覽器就會(huì)向這個(gè)進(jìn)程發(fā)起http請求。進(jìn)程收到瀏覽器的請求后,就將h t m l文件發(fā)給瀏覽器,瀏覽器完成解析和展示完美。而像這種根據(jù)瀏覽器請求返回html文件的服務(wù)進(jìn)程,其實(shí)就叫http服務(wù)器。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      有了它,前端開發(fā)老哥寫的各種h t m l文件就能部署到遠(yuǎn)端服務(wù)器上,對外提供網(wǎng)頁服務(wù)了。反向代理是什么?但一個(gè)完整產(chǎn)品往往不只有前端頁面,還有后端服務(wù)。比如某寶前端商城頁面,需要從后端服務(wù)那獲取最新的商品數(shù)據(jù)。假設(shè)現(xiàn)在前端頁面已經(jīng)被加載到瀏覽器中,瀏覽器會(huì)按頁面里寫好的代碼邏輯向后端商品服務(wù)發(fā)起請求獲取數(shù)據(jù)。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      流量小的時(shí)候沒什么問題,流量變大后,后端服務(wù)器扛不住的話,就需要增加商品服務(wù)的個(gè)數(shù)。服務(wù)變多后,每個(gè)都有對應(yīng)的ip和端口,瀏覽器就不知道該訪問哪個(gè)服務(wù)了。所以我們還需要在這幾個(gè)后端服務(wù)前面加一個(gè)進(jìn)程,對外提供一個(gè)u r l域名請求來了,由這個(gè)進(jìn)程均勻轉(zhuǎn)發(fā)給背后的幾個(gè)服務(wù),讓每個(gè)服務(wù)都能處理上請求,也就實(shí)現(xiàn)了所謂的負(fù)載均衡。像這種屏蔽掉背后具體有哪些服務(wù)器的代理方式,就是我們常說的反向代理。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      有了反向代理,我們對外就可以只提供一個(gè)u i l域名,背后根據(jù)需要隨時(shí)擴(kuò)縮容服務(wù)。這個(gè)反向代理的功能正好可以加到前面放h t m l文件的進(jìn)程上。那現(xiàn)在這個(gè)過程就很靈性了。既可以為前端h t m l文件提供h t t p服務(wù)器的功能。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      當(dāng)h t m l文件被加載到瀏覽器并向后端發(fā)起請求的時(shí)候,這個(gè)進(jìn)程還能為后端服務(wù)器提供反向代理的功能。模塊化網(wǎng)關(guān)能力。既然是中間層,所有網(wǎng)絡(luò)流量都要經(jīng)過進(jìn)程,那它高低也算個(gè)網(wǎng)關(guān)了。于是我們就可以順理成章的在它上面加入一些通用網(wǎng)關(guān)能力。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      比如加個(gè)日志記錄每次調(diào)用的結(jié)果,方便后續(xù)排查問題。又比如加個(gè)對輸入輸出的內(nèi)容進(jìn)行壓縮的功能,減少網(wǎng)絡(luò)帶寬消耗。又或者是對某個(gè)i p進(jìn)行限流或封禁,甚至還可以修改輸入輸出的內(nèi)容。能實(shí)現(xiàn)的功能實(shí)在太多,想象空間很大。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      于是將這部分功能設(shè)計(jì)為開放接口,讓用戶通過自定義模塊來實(shí)現(xiàn)特定功能。這還不夠,現(xiàn)在這個(gè)網(wǎng)關(guān)只支持h t t p,我們其實(shí)還能擴(kuò)展下,讓它支持t c p、u d p、h t t p二和web socket。你能想到的我都要支持,我本來不支持的,就會(huì)有人通過自定義模塊幫我支持。配置能力。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      前面提到那么多種能力,用戶肯定不會(huì)全用上。所以需要有個(gè)地方讓人選擇用哪些能力。于是我們可以加個(gè)配置文件,也就是n g x點(diǎn)com fig,用戶想用什么能力就在配置文件上說明清楚就行,非常方便。單線程現(xiàn)在這個(gè)網(wǎng)關(guān)進(jìn)程的主要任務(wù)就是跟上下游建立網(wǎng)絡(luò)連接,順便內(nèi)部做下處理。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      多個(gè)客戶端請求通過網(wǎng)絡(luò)進(jìn)入到一個(gè)進(jìn)程。如果用多線程并發(fā)處理,那就需要考慮并發(fā)問題影響性能,怎么辦呢?很簡單,外部不管有多少個(gè)網(wǎng)絡(luò)連接,網(wǎng)關(guān)進(jìn)程,收到客戶端請求后,都統(tǒng)一塞到一個(gè)線程上。在一個(gè)線程上處理客戶端請求,什么并發(fā)問題和線程切換開銷完全不存在。多worker進(jìn)程,但單個(gè)進(jìn)程要單線程處理,那么多流量哪怕再快壓力也不小。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      萬一這里面有美羊羊發(fā)的流量,你看見人那么久,怎么忍心讓他久等?沸羊羊你說話你干嘛?怎么辦呢?既然多線程不行,那我們就上多進(jìn)程。于是可以將單個(gè)進(jìn)程改為多個(gè)進(jìn)程,我們管它們叫worker進(jìn)程。進(jìn)程之間互相獨(dú)立,一個(gè)worker貴了并不影響另外一個(gè)worker進(jìn)程。讓多個(gè)worker進(jìn)程同時(shí)監(jiān)聽一個(gè)ip地址,加端口一有流量進(jìn)來,操作系統(tǒng)就會(huì)隨機(jī)給到其中一個(gè)進(jìn)程處理。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      將進(jìn)程數(shù)量設(shè)置為跟操作系統(tǒng)c p u核數(shù)一致,那每個(gè)進(jìn)程都能得到一個(gè)核。開足馬力猛猛干。聽到這里問題就來啊,看到這里看到這里問題就來了,為什么多個(gè)進(jìn)程同時(shí)監(jiān)聽一個(gè)端口,不會(huì)出現(xiàn)端口沖突?評論區(qū)告訴我答案。內(nèi)存共享。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      但多worker進(jìn)程的情況下,同一個(gè)客戶端的多個(gè)請求會(huì)隨機(jī)打到某個(gè)worker。對于限流這種需要技術(shù)的場景,就會(huì)被分散到多個(gè)worker上單獨(dú)計(jì)數(shù)。那還怎么限流?所以還需要給這些worker進(jìn)程分配一個(gè)共享內(nèi)存區(qū)域,方便多個(gè)進(jìn)程之間共用同一份數(shù)據(jù)做邏輯,確保系統(tǒng)數(shù)據(jù)一致性。proxy cache作為網(wǎng)關(guān),它在收到前端網(wǎng)頁請求后會(huì)轉(zhuǎn)發(fā)給后端,并將后端處理結(jié)果中轉(zhuǎn)給前端。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      如果它能將響應(yīng)結(jié)果緩存起來,這樣下次收到同樣的請求,直接將緩存里的數(shù)據(jù)返回給前端,從而減少響應(yīng)時(shí)間和網(wǎng)絡(luò)負(fù)載。那這個(gè)數(shù)據(jù)是放在共享內(nèi)存里面,內(nèi)存貴不合適。我們可以維護(hù)一些磁盤文件,用于在前端請求后端的過程中暫存。后端響應(yīng)的結(jié)果后面再有相同請求就可以將磁盤里的數(shù)據(jù)返回。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      這就是經(jīng)典的空間換時(shí)間,用廉價(jià)的磁盤空間換取網(wǎng)絡(luò)傳輸和cpu計(jì)算耗時(shí)。對于后端響應(yīng)較慢或重復(fù)請求較多的場景,讀寫磁盤總歸。可以直接將請求打到后端來得快。這些用于緩存響應(yīng)數(shù)據(jù)的磁盤文件就是所謂的proxy cache加入master進(jìn)程。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      但這還不夠,現(xiàn)在每個(gè)worker會(huì)分走一部分流量。如果功能更新,所有worker同時(shí)一起重啟,上面的網(wǎng)絡(luò)連接就會(huì)全部斷掉。更好的方式是創(chuàng)建worker和關(guān)閉worker挨個(gè)陸續(xù)執(zhí)行。這樣前端網(wǎng)頁連接斷開后,還能去連另外一個(gè)worker,保證任意時(shí)間一直有worker在工作,也就是所謂的滾動(dòng)升級。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      因此還需要一個(gè)新的進(jìn)程,協(xié)調(diào)各個(gè)worker誰先誰后。這個(gè)協(xié)調(diào)進(jìn)程就是所謂的master進(jìn)程,讓master讀取前面提到的n g x點(diǎn)config配置,統(tǒng)一管理多個(gè)worker。n g x是什么?到這里,當(dāng)初那個(gè)簡陋的單進(jìn)程網(wǎng)關(guān)服務(wù)就變成了一個(gè)支持動(dòng)態(tài)配置多種通用網(wǎng)關(guān)能力和多種網(wǎng)絡(luò)協(xié)議,單master多worker架構(gòu),多個(gè)worker進(jìn)程之間共享內(nèi)存和proxy cache,對外提供一個(gè)埃批加端口,支持h t t p服務(wù)器和反向代理的高性能網(wǎng)關(guān)服務(wù)。它就是所謂的n g x,它不僅支持日志限流等各種通用能力,還支持自定義網(wǎng)關(guān)能力。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      只要你寫好配置,就能讓它給你當(dāng)牛做馬。性能上五萬q p s非常輕松,應(yīng)付你那只有幾十q p s的服務(wù)更是綽綽有余了。現(xiàn)在大家通了嗎?好了,如果你覺得這個(gè)視頻對你有幫助,記得點(diǎn)贊并轉(zhuǎn)發(fā)給你那不成器的兄弟。文字版的筆記見評論區(qū)。

      Nginx是什么?看我如何一步步給你講透這個(gè)神奇的架構(gòu)

      打開今日頭條查看圖片詳情

      最后遺留一個(gè)問題,想必大家也發(fā)現(xiàn)了,聊到現(xiàn)在它其實(shí)也只是某臺(tái)服務(wù)器上的多個(gè)進(jìn)程,一旦服務(wù)器貴了,n g x也就貴了,存在單點(diǎn)問題,那怎么解決n g x的單點(diǎn)問題呢?n g x有集群模式嗎?評論區(qū)告訴我答案。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多