国产三区四区_亚洲精品国产精品色欲AV_青青操av在线_黄的网站在线观看_中文字幕无码无遮挡在线看_日韩精品中文字幕吗一区二区

中國專業(yè)IT外包服務(wù)

用心服務(wù)每一天
IT之道-艾銻知道

您當前位置: 主頁 > 資訊動態(tài) > IT知識庫 >

IT運維架構(gòu) | Nginx 架構(gòu)詳解


2020-03-28 20:08 作者:艾銻無限 瀏覽量:


與眾不同的服務(wù)是因為有心

 
 
 
 
所有艾銻人可能都知道艾銻無限為客戶提供三種與客戶接觸的方式,一種是產(chǎn)品,一種是技術(shù),還有一種是服務(wù),那這三種所謂的方式構(gòu)建起一個三角形,這種穩(wěn)固的體系,看起來還不錯,但我們細細思考卻發(fā)現(xiàn)很多企業(yè)也都提供這三種方式與客戶建立一個長久的關(guān)系。

 
 
 
那艾銻無限到底與這些企業(yè)有什么區(qū)別呢?有什么明顯的區(qū)別,讓客戶和其他人一看這種服務(wù)就明白是艾銻無限的服務(wù),這個世界上獨一無二的服務(wù)呢,大家都看過3D電影吧,無論后來的技術(shù)提升或其他人如何模仿,如何超越,大家首先可能想到的3D電影的代表作是《阿凡達》,是的這就是獨一無二,那如何讓我們的三種與客戶建立聯(lián)系的方式也能變的立體呢,我們來看怎樣把這三種方式賦予生命,讓他們與眾不同.

 
 
 
 
大家可能已發(fā)現(xiàn)原來“艾銻服務(wù)心”讓我們的服務(wù)變的立體,開始有了美感,開始賦予了新的生命,而不是之前人們認為的那種“無聊”,沒有生趣的服務(wù),這是一種全新的與客戶建立聯(lián)系的方式,與客戶產(chǎn)生互動的方式,這是生命與生命的互動,這是靈魂與靈魂間的碰撞,就像我們的每一顆蒲公英種子一樣讓每一次與人的接觸都賦予了生命,而不是人與機器的單調(diào)互動,更不是那種看起來死氣沉沉的三角形。我們用我們的愛,付出,喜悅轉(zhuǎn)化出我們的誠心,細心,貼心的彼此體驗,讓更多的三面體不斷去聚合,形成一顆璀璨的鉆石。

 
 

 
這就這個世界上與眾不同的艾銻服務(wù),這就是艾銻無限的現(xiàn)成,這更是艾銻無限的未來。
 
北京it外包 |   Nginx 架構(gòu)詳解

 
Nginx 服務(wù)器是一個高性能的 Web 和反向代理服務(wù)器。Nginx 在激烈的 Web 服務(wù)器競爭中依舊保持良好的發(fā)展勢頭,一度成為 Web 服務(wù)器市場的后期之秀,這一切跟 Nginx 的架構(gòu)設(shè)計是分不開的。
 
Nginx 模塊化設(shè)計

高度模塊化的設(shè)計是 Nginx 的架構(gòu)基礎(chǔ)。Nginx 服務(wù)器被分解為多個模塊,每個模塊就是一個功能模塊,只負責自身的功能,模塊之間嚴格遵循“高內(nèi)聚,低耦合”的原則。
 


 

核心模塊
核心模塊是 Nginx 服務(wù)器正常運行必不可少的模塊,提供錯誤日志記錄、配置文件解析、事件驅(qū)動機制、進程管理等核心功能。

標準 HTTP 模塊

標準 HTTP 模塊提供 HTTP 協(xié)議解析相關(guān)的功能,如:端口配置、網(wǎng)頁編碼設(shè)置、HTTP 響應(yīng)頭設(shè)置等。

可選 HTTP 模塊

可選 HTTP 模塊主要用于擴展標準的 HTTP 功能,讓 Nginx 能處理一些特殊的服務(wù),如:Flash 多媒體傳輸、解析 GeoIP 請求、SSL 支持等。

郵件服務(wù)模塊

郵件服務(wù)模塊主要用于支持 Nginx 的郵件服務(wù),包括對 POP3 協(xié)議、IMAP 協(xié)議和 SMTP 協(xié)議的支持。

第三方模塊

第三方模塊是為了擴展 Nginx 服務(wù)器應(yīng)用,完成開發(fā)者自定義功能,如:Json 支持、Lua 支持等。

Nginx 請求處理方式

Nginx 是一個高性能的 Web 服務(wù)器,能夠同時處理大量的并發(fā)請求。它結(jié)合多進程機制和異步機制,異步機制使用的是異步非阻塞方式,接下來就給大家介紹一下 Nginx 的多線程機制和異步非阻塞機制。

多進程

服務(wù)器每當收到一個客戶端時。就有服務(wù)器主進程(master process)生成一個子進程(worker process)出來和客戶端建立連接進行交互,直到連接斷開,該子進程就結(jié)束了。

使用進程的好處是各個進程之間相互獨立,不需要加鎖,減少了使用鎖對性能造成影響,同時降低編程的復(fù)雜度,降低開發(fā)成本。其次,采用獨立的進程,可以讓進程互相之間不會影響,如果一個進程發(fā)生異常退出時,其它進程正常工作,master 進程則很快啟動新的 worker 進程,確保服務(wù)部中斷,將風險降到最低。

缺點是操作系統(tǒng)生成一個子進程需要進行內(nèi)存復(fù)制等操作,在資源和時間上會產(chǎn)生一定的開銷;當有大量請求時,會導(dǎo)致系統(tǒng)性能下降。

異步非阻塞

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

Nginx 事件驅(qū)動模型

在 Nginx 的異步非阻塞機制中,工作進程在調(diào)用 IO 后,就去處理其他的請求,當 IO 調(diào)用返回后,會通知該工作進程。對于這樣的系統(tǒng)調(diào)用,主要使用 Nginx 服務(wù)器的事件驅(qū)動模型來實現(xiàn)。
 


 
如上圖所示,Nginx 的事件驅(qū)動模型由事件收集器、事件發(fā)送器和事件處理器三部分基本單元組成。其中,事件收集器負責收集 worker 進程的各種 IO 請求,事件發(fā)送器負責將 IO 事件發(fā)送到事件處理器,而事件處理器負責各種事件的響應(yīng)工作。事件發(fā)送器將每個請求放入一個待處理事件的列表,使用非阻塞 I/O 方式調(diào)用“事件處理器”來處理該請求。其處理方式稱為“多路 IO 復(fù)用方法”,常見的包括以下三種:select 模型、poll 模型、epoll 模型。

針對上面的技術(shù)我特意整理了一下,有很多技術(shù)不是靠幾句話能講清楚,所以干脆找朋友錄制了一些視頻,很多問題其實答案很簡單,但是背后的思考和邏輯不簡單,要做到知其然還要知其所以然。


Nginx 設(shè)計架構(gòu)

Nginx 服務(wù)器使用 master/worker 多進程模式。多線程啟動和執(zhí)行的流程如下:主程序 Master process 啟動后,通過一個 for 循環(huán)來接收和處理外部信號;主進程通過 fork() 函數(shù)產(chǎn)生子進程,每個子進程執(zhí)行一個 for 循環(huán)來實現(xiàn) Nginx 服務(wù)器對事件的接收和處理。一般推薦 worker 進程數(shù)與 cpu 內(nèi)核數(shù)一致,這樣一來不存在大量的子進程生成和管理任務(wù),避免了進程之間競爭 CPU 資源和進程切換的開銷。而且 Nginx 為了更好的利用多核特性,提供了 cpu 親緣性的綁定選項,我們可以將某一個進程綁定在某一個核上,這樣就不會因為進程的切換帶來 cache 的失效。對于每個請求,有且只有一個工作進程對其處理。首先,每個 worker 進程都是從 master 進程 fork 過來,在 master 進程里面,先建立好需要 listen 的 socket(listenfd)之后,然后再 fork 出多個 worker 進程。所有 worker 進程的 listenfd 會在新連接到來時變得可讀,為保證只有一個進程處理該連接,所有 worker 進程在注冊 listenfd 讀事件前搶 accept_mutex,搶到互斥鎖的那個進程注冊 listenfd 讀事件,在讀事件里調(diào)用 accept 接受該連接。當一個 worker 進程在 accept 這個連接之后,就開始讀取請求,解析請求,處理請求,產(chǎn)生數(shù)據(jù)后,再返回給客戶端,最后才斷開連接,這樣一個完整的請求就是這樣的了。我們可以看到,一個請求,完全由 worker 進程來處理,而且只在一個 worker 進程中處理。
 


 
在 Nginx 服務(wù)器的運行過程中,主進程和工作進程需要進程交互。交互依賴于 Socket 實現(xiàn)的管道來實現(xiàn)。

Master-Worker 交互

這條管道與普通的管道不同,它是由主進程指向工作進程的單向管道,包含主進程向工作進程發(fā)出的指令,工作進程 ID 等;同時主進程與外界通過信號通信;每個子進程具備接收信號,并處理相應(yīng)的事件的能力。

worker-worker 交互

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

通過這篇文章,我們對 Nginx 服務(wù)器的整體架構(gòu)有了一個整體的認識。包括其模塊化的設(shè)計、多進程和異步非阻塞的請求處理方式、事件驅(qū)動模型等。通過這些理論知識,對于我們以后學習 Nginx 的源碼有很大的幫助;也推薦大家多看看 Nginx 的源碼,才能更好地領(lǐng)悟 Nginx 的設(shè)計思想。
 
 
 

相關(guān)文章

IT外包服務(wù)
二維碼 關(guān)閉
主站蜘蛛池模板: 日韩成人无码中文字幕 | 9l亚洲国产成人精品一区二三 | 国产综合欧美无毒不卡怡红院 | 亚洲人成色77777在线观看大战P | 又爽又黄又无遮挡的视频在线观看 | 爱久久视频 | 懂色av影视一区二区三区 | 免费观看作爱视频网站 | a∨色狠狠一区二区三区 | 欧美精品国产一区二区三区 | 美腿玉足一区二区三区视频 | 亚洲成人精 | 日韩亚洲一区在线 | 国产精品久久久久7777婷婷 | 国产精品爆乳在线播放第一人称 | av免费在线播放网站 | 极品少妇XXXX| 欧美高清视频手机在在线 | 黑人女人性较视频免费视频 | 日本系列_7777ih_1页 | 亚洲春色无码Av不卡久久 | 嫩草视频网站 | 曰本三级在线 | 国产免费小视频在线观看 | 成人性生交片无码免费看 | 日韩亚洲欧美一区二区 | 精品精品精品 | 欧美性猛交XXXX乱大交 | 国产97av在线播放 | 337P大胆日本欧美人体艺术噜噜噜 | 在线看播放免费网站 | 天天操天天摸天天爽 | 99久久夜色精品国产亚洲1000部 | 亚洲国产精品系列 | 狠狠综合久久久久综合网 | 国产av毛片| 日韩欧美综合在线 | 成人毛片18女人 | 91精品国产综合久久久久久久久 | 福利精品在线观看 | 一边摸一边做爽的视频17国产有奶水 |