成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Nginx服務(wù)器架構(gòu)解析

開發(fā) 架構(gòu) 服務(wù)器
我們知道Nginx從總體上來講是有許多個(gè)模塊構(gòu)成的。習(xí)慣將Nginx分為5大模塊分別為:核心模塊,標(biāo)準(zhǔn)HTTP模塊,可選HTTP模塊,郵件服務(wù)模塊和第三方模塊。

[[286666]]

 一.Nginx的模塊化

模塊化結(jié)構(gòu)的思想是一個(gè)很久的概念,但也正是成熟的思想造就了Nginx的巨大優(yōu)越性。

我們知道Nginx從總體上來講是有許多個(gè)模塊構(gòu)成的。習(xí)慣將Nginx分為5大模塊分別為:核心模塊,標(biāo)準(zhǔn)HTTP模塊,可選HTTP模塊,郵件服務(wù)模塊和第三方模塊。

 

Nginx服務(wù)器架構(gòu)解析

 

這5個(gè)模塊由上到下重要性一次遞減。

(1)核心模塊;

核心模塊是Nginx服務(wù)器正常運(yùn)行必不可少的模塊,如同操作系統(tǒng)的內(nèi)核。它提供了Nginx最基本的核心服務(wù)。像進(jìn)程管理、權(quán)限控制、錯(cuò)誤日志記錄等;

(2)標(biāo)準(zhǔn)HTTP模塊;

標(biāo)準(zhǔn)HTTP模塊支持標(biāo)準(zhǔn)的HTTP的功能;

(3)可選HTTP模塊;

可選HTTP模塊主要用于擴(kuò)展標(biāo)準(zhǔn)的HTTP功能,讓Nginx能處理一些特殊的服務(wù);

(4)郵件服務(wù)模塊;

郵件服務(wù)模塊主要用于支持Nginx的郵件服務(wù);

(5)第三方模塊;

第三方模塊是為了擴(kuò)展Nginx服務(wù)器應(yīng)用,完成開發(fā)者想要的功能;

*******Nginx中的模塊命名有自己的習(xí)慣*********

一般以Ngx_作為前綴,——module作為后綴,中間使用一個(gè)或者多個(gè)英文單詞描述模塊的工能,例如Ngx_core_module表示該模塊提供Nginx的核心功能等;

具體各個(gè)模塊中包含哪些模塊可以自己去源碼中查詢,這里略過;

二.Nginx的web請求處理機(jī)制

從架構(gòu)設(shè)計(jì)上說,Nginx服務(wù)器是與眾不同的。其一在于它的模塊化設(shè)計(jì);其二也是更重要的一點(diǎn)在于它對與客戶端請求的處理機(jī)制上;

web服務(wù)器和客戶端是一對多的關(guān)系,Web服務(wù)器必須有能力同時(shí)為多個(gè)客戶端提供服務(wù)。一般來說完成并行處理請求工作有三種方式:

1.多進(jìn)程方式;

2.多線程方式;

3.異步方式;

這里簡單說明一下這三種方式:

(1)多進(jìn)程方式

多進(jìn)程方式指,服務(wù)器每當(dāng)收到一個(gè)客戶端時(shí)。就有服務(wù)器主進(jìn)程生成一個(gè)子進(jìn)程出來和客戶端建立連接進(jìn)行交互。指導(dǎo)連接斷開。該子進(jìn)程就結(jié)束了。

多進(jìn)程方式的優(yōu)點(diǎn)是設(shè)計(jì)簡單,各個(gè)子進(jìn)程相對獨(dú)立,處理客戶端請求時(shí)彼此不受干擾;缺點(diǎn)是操作系統(tǒng)生成一個(gè)子進(jìn)程需要進(jìn)行內(nèi)存復(fù)制等操作,在資源和時(shí)間上會產(chǎn)生一定的開銷;當(dāng)有大量請求時(shí),會導(dǎo)致系統(tǒng)性能下降;

(2)多線程方式

多線程方式指每當(dāng)服務(wù)器接收到一個(gè)請求后,會由服務(wù)器主進(jìn)程派生出一個(gè)線程出來和客戶端進(jìn)行交互。由于操作系統(tǒng)產(chǎn)生出一個(gè)線程的開銷遠(yuǎn)遠(yuǎn)小于一個(gè)進(jìn)程的開銷。故多線程方式在很大程度上減輕了Web服務(wù)器對系統(tǒng)資源的要求。但同時(shí)由于多個(gè)線程位于一個(gè)進(jìn)程內(nèi),可以訪問同樣的內(nèi)存空間。所以需要開發(fā)者自己對內(nèi)存進(jìn)程管理,增大了難度。

(3)異步方式

異步方式適合多進(jìn)程和多線程完全不同的一種處理客戶端請求的方式。這里有幾個(gè)概念我們需要熟悉一下:同步,異步,阻塞,非阻塞;

在網(wǎng)絡(luò)通信中同步和異步是描述通信模式的概念。

同步:發(fā)送方發(fā)送完請求后,需要等待接收到接收方發(fā)回的響應(yīng),才能發(fā)送下一個(gè)請求;所有請求在服務(wù)端得到同步,發(fā)送方和接收方的步調(diào)是一致的;

異步:和同步機(jī)制相反,在異步機(jī)制中,發(fā)送方發(fā)出一個(gè)請求后,不等接收方響應(yīng)這個(gè)請求,就繼續(xù)發(fā)送下一個(gè)請求;所有來自發(fā)送方的請求形成一個(gè)隊(duì)列,接收方處理完成后通知發(fā)送方;

在進(jìn)程處理調(diào)度方式上用阻塞與非阻塞。在網(wǎng)絡(luò)通信中主要指套接字socket的阻塞和非阻塞,而socket的實(shí)質(zhì)就是IO操作。

阻塞:調(diào)用結(jié)果返回之前,當(dāng)前線程從運(yùn)行狀態(tài)被掛起,一直等到調(diào)用結(jié)果返回之后,才進(jìn)入就緒狀態(tài),獲取CPU后繼續(xù)執(zhí)行。

非阻塞:和阻塞方式正好相反,如果調(diào)用結(jié)果不能馬上返回,當(dāng)前線程也不會馬上返回,而是立即返回執(zhí)行下一個(gè)調(diào)用。

因此就衍生出4中方式:同步阻塞,同步非阻塞,異步阻塞,異步非阻塞

這里簡單解釋一下異步非阻塞:發(fā)送方向接收方發(fā)送請求后,不用等待響應(yīng),可以繼續(xù)其他工作;接收方處理請求時(shí)進(jìn)行的IO操作如果不能馬上得到結(jié)果,也不必等待,而是馬上返回去去做其他事情。當(dāng)IO操作完成以后,將完成狀態(tài)和結(jié)果通知接收方,接收方再響應(yīng)發(fā)送方。

與此同時(shí)Nginx服務(wù)器處理請求是怎樣的呢???

Nginx服務(wù)器的一個(gè)顯著的優(yōu)勢就是能夠同時(shí)處理大量的并發(fā)請求。它結(jié)合多進(jìn)程機(jī)制和異步機(jī)制。異步機(jī)制使用的是異步非阻塞方式。(Master-Worker)。

每個(gè)工作進(jìn)程使用異步非阻塞方式,可以處理多個(gè)客戶端請求。當(dāng)某個(gè)工作進(jìn)程接收到客戶端的請求以后,調(diào)用IO進(jìn)行處理,如果不能立即得到結(jié)果,就去處理其他的請求;而客戶端在此期間也無需等待響應(yīng),可以去處理其他事情;當(dāng)IO返回時(shí),就會通知此工作進(jìn)程;該進(jìn)程得到通知,暫時(shí)掛起當(dāng)前處理的失誤去響應(yīng)客戶端請求。

也就是:

Nginx采用異步非阻塞方式來處理請求,處理請求具體到系統(tǒng)底層就是讀寫事件(所謂阻塞調(diào)用方式即請求事件還沒準(zhǔn)備好,線程只能一直去等,等事件準(zhǔn)備好了再處理;而非阻塞即事件沒準(zhǔn)備好,馬上返回ENGAIN,告訴你事件還沒準(zhǔn)準(zhǔn)備好,而在這期間可以先去做其他事,再回頭看看事件準(zhǔn)備好了嗎,時(shí)不時(shí)會看,需要的開銷也是不小的)

異步可以理解為循環(huán)處理多個(gè)準(zhǔn)備好的事件,不會導(dǎo)致無謂的資源浪費(fèi),當(dāng)有更多的并發(fā)數(shù)只會占用更多的內(nèi)存而已;

三.Nginx服務(wù)器的實(shí)踐驅(qū)動模型

從上面我們可以知道,Nginx服務(wù)器的工作進(jìn)程調(diào)用IO后,就取進(jìn)行其他工作了;當(dāng)IO調(diào)用返回后,會通知工作進(jìn)程。但I(xiàn)O調(diào)用時(shí)如何把自己的狀態(tài)通知給工作進(jìn)程的呢??

一般解決這個(gè)問題有兩種方法:(1)讓工作進(jìn)程在進(jìn)行其他工作的過程中間隔一段時(shí)間就去檢查一下IO的狀態(tài),如果完成就響應(yīng)客戶端,如果未完成,繼續(xù)工作。

(2)IO調(diào)用在完成后能主動通知工作進(jìn)程。

當(dāng)然最好的就是用第二種方法了;像select/poll/epoll等這樣的系統(tǒng)調(diào)用就是用來支持第二種解決方案的。這些系統(tǒng)調(diào)用也常被稱為事件驅(qū)動模型。他們提供了一種機(jī)制就只讓進(jìn)程同時(shí)處理多個(gè)并發(fā)請求,不用關(guān)心IO調(diào)用的具體狀態(tài)。IO調(diào)用完全由事件驅(qū)動模型來管理。

Nginx中的事件驅(qū)動模型

就是用事件驅(qū)動處理庫(多路IO復(fù)用),最常用的就是select模型,poll模型,epoll模型。

關(guān)于這三個(gè)模型的詳解在這里可以看到:https://segmentfault.com/a/1190000003063859

四.架構(gòu)簡介

通過這個(gè)上面的簡單講解,再加上服務(wù)器的架構(gòu)的了解,可以對Nginx有一個(gè)簡單的了解,希望對之后的源碼剖析有幫助。

 

Nginx服務(wù)器架構(gòu)解析

 

大致上Nginx的架構(gòu)就是這樣:

1.Nginx啟動后,會產(chǎn)生一個(gè)主進(jìn)程,主進(jìn)程執(zhí)行一系列的工作后會產(chǎn)生一個(gè)或者多個(gè)工作進(jìn)程;

2.在客戶端請求動態(tài)站點(diǎn)的過程中,Nginx服務(wù)器還涉及和后端服務(wù)器的通信。Nginx將接收到的Web請求通過代理轉(zhuǎn)發(fā)到后端服務(wù)器,由后端服務(wù)器進(jìn)行數(shù)據(jù)處理和組織;

3.Nginx為了提高對請求的響應(yīng)效率,降低網(wǎng)絡(luò)壓力,采用了緩存機(jī)制,將歷史應(yīng)答數(shù)據(jù)緩存到本地。保障對緩存文件的快速訪問;

##工作進(jìn)程##

工作進(jìn)程的主要工作有以下幾項(xiàng):

接收客戶端請求;

將請求一次送入各個(gè)功能模塊進(jìn)行過濾處理;

IO調(diào)用,獲取響應(yīng)數(shù)據(jù);

與后端服務(wù)器通信,接收后端服務(wù)器處理結(jié)果;

數(shù)據(jù)緩存

響應(yīng)客戶端請求;

##進(jìn)程交互##

Nginx服務(wù)器在使用Master-Worker模型時(shí),會涉及到主進(jìn)程和工作進(jìn)程的交互和工作進(jìn)程之間的交互。這兩類交互都依賴于管道機(jī)制。

1.Master-Worker交互

這條管道與普通的管道不同,它是由主進(jìn)程指向工作進(jìn)程的單向管道,包含主進(jìn)程向工作進(jìn)程發(fā)出的指令,工作進(jìn)程ID等;同時(shí)主進(jìn)程與外界通過信號通信;

2.worker-worker交互

這種交互是和Master-Worker交互是基本一致的。但是會通過主進(jìn)程。工作進(jìn)程之間是相互隔離的,所以當(dāng)工作進(jìn)程W1需要向工作進(jìn)程W2發(fā)指令時(shí),首先找到W2的進(jìn)程ID,然后將正確的指令寫入指向W2的通道。W2收到信號采取相應(yīng)的措施。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2019-01-10 11:12:15

Nginx服務(wù)器架構(gòu)

2019-09-10 15:22:17

Nginx服務(wù)器架構(gòu)

2020-05-12 21:17:18

Nginx服務(wù)器架構(gòu)

2009-02-27 15:06:00

IA架構(gòu)服務(wù)器服務(wù)器解析

2018-02-07 10:24:01

Nginx服務(wù)器架構(gòu)

2012-05-21 10:52:43

2017-03-06 09:26:56

Nginx服務(wù)器 SSL

2011-06-30 09:22:32

服務(wù)器ARM架構(gòu)x86架構(gòu)

2021-09-10 10:07:17

Nginx虛擬主機(jī)服務(wù)器

2018-08-13 09:09:35

Nginx服務(wù)器內(nèi)部

2018-02-09 08:40:37

Nginx服務(wù)器架構(gòu)

2018-03-09 11:16:53

Nginx

2018-10-12 09:06:37

2010-02-06 10:24:52

CentOS Ngin

2018-05-18 09:43:37

服務(wù)器架構(gòu)大型網(wǎng)站

2018-05-31 09:27:38

服務(wù)器架構(gòu)原理

2021-01-29 14:41:43

Nginx直播服務(wù)器rtmp

2018-02-08 08:52:37

2010-09-25 09:23:11

2003 dhcp服務(wù)

2018-01-19 10:30:48

HTTP服務(wù)器代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人黄色av | 国产精品视频在线免费观看 | 天天狠狠 | 精品久久99 | 欧美人妖网站 | 国偷自产av一区二区三区 | 亚洲综合资源 | 狠狠艹 | 日韩aⅴ在线观看 | 超碰人人做 | 欧美日韩久久精品 | 欧美视频一区 | 午夜黄色 | 精品日韩一区二区 | 精品在线一区 | 中文字幕成人av | 国产精品久久亚洲 | 国产精品久久久久久久久久久久冷 | 亚洲精品久久 | 久久成人免费观看 | 亚洲成人毛片 | 成人国产精品久久 | 欧美亚洲国产一区二区三区 | 免费成人在线网站 | 国色天香成人网 | 九九热这里 | 欧美激情国产日韩精品一区18 | 国产免费拔擦拔擦8x高清 | 午夜男人视频 | 99综合| 岛国午夜 | 日韩精品999 | 少妇精品久久久久久久久久 | 久久久久久国产精品免费免费狐狸 | 成年无码av片在线 | 亚洲综合视频 | 精品久久成人 | 成人免费高清 | 久久久久久国产精品久久 | 午夜影院在线观看 | 亚洲a一区二区 |