一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

西西 ? 來源:51CTO ? 2019-01-10 16:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Nginx是一款免費(fèi)的、開源的、高性能、模塊化、輕量級的HTTP服務(wù)器、反向代理服務(wù)器以及電子郵件(IMAP/POP3)代理服務(wù)器。

很多大型的網(wǎng)站都使用Nginx,如:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。

1.Nginx的整體架構(gòu)簡介

Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

1)Nginx啟動后,會產(chǎn)生一個主進(jìn)程,主進(jìn)程執(zhí)行一系列的工作后會產(chǎn)生一個或者多個工作進(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ù)緩存到本地。保障對緩存文件的快速訪問;

2. Nginx的模塊化

高度模塊化的設(shè)計是 Nginx 的架構(gòu)基礎(chǔ)。Nginx嚴(yán)格遵循“高內(nèi)聚,低耦合”的原則,將服務(wù)器設(shè)計為多個模塊,每個模塊就是一個獨(dú)立的功能模塊,只負(fù)責(zé)自身的功能。

Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

這5個模塊從上到下重要性依次遞減。

(1)核心模塊

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

(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ā)者想要的功能;

3.Nginx的Web請求處理機(jī)制

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

1)多進(jìn)程

多進(jìn)程方式指服務(wù)器每當(dāng)收到一個客戶端請求時就由服務(wù)器主進(jìn)程生成一個子進(jìn)程出來和客戶端建立連接進(jìn)行交互,直到連接斷開,該子進(jìn)程就結(jié)束了。多進(jìn)程方式的優(yōu)點(diǎn)是設(shè)計簡單,各個子進(jìn)程相對獨(dú)立,處理客戶端請求時彼此不受干擾;缺點(diǎn)是操作系統(tǒng)生成一個子進(jìn)程需要進(jìn)行內(nèi)存復(fù)制等操作,在資源和時間上會產(chǎn)生一定的開銷;當(dāng)有大量請求時,會導(dǎo)致系統(tǒng)性能下降;

2)異步非阻塞

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

4. Nginx服務(wù)器的事件驅(qū)動模型

從上面我們可以知道,Nginx服務(wù)器的工作進(jìn)程調(diào)用IO后,就取進(jìn)行其他工作了;當(dāng)IO調(diào)用返回后,會主動通知工作進(jìn)程。像select/poll/epoll等這樣的系統(tǒng)調(diào)用就是用來支持這種解決方案的。這些系統(tǒng)調(diào)用也常被稱為事件驅(qū)動模型,他們提供了一種機(jī)制就只讓進(jìn)程同時處理多個并發(fā)請求,不用關(guān)心IO調(diào)用的具體狀態(tài)。IO調(diào)用完全由事件驅(qū)動模型來管理。

Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

如上圖所示,Nginx的事件驅(qū)動模型由事件收集器、事件發(fā)送器和事件處理器三部分基本單元組成。

select,poll,epoll都是IO多路復(fù)用的機(jī)制。I/O多路復(fù)用就是通過一種機(jī)制,一個進(jìn)程可以監(jiān)視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒),能夠通知程序進(jìn)行相應(yīng)的讀寫操作。select,poll,epoll本質(zhì)上都是同步I/O,因?yàn)樗麄兌夹枰谧x寫事件就緒后自己負(fù)責(zé)進(jìn)行讀寫,也就是說這個讀寫過程是阻塞的。

5. Nginx服務(wù)器Master-Worker進(jìn)程處理模型

Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

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

Master-Worker交互

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

Worker-Worker交互

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

通過這篇文章,我們對Nginx服務(wù)器的整體架構(gòu)有了一個整體的認(rèn)識。另外推薦大家多看看Nginx的源碼,以便能更好地領(lǐng)悟 Nginx的設(shè)計思想。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9797

    瀏覽量

    88043
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    171

    瀏覽量

    12619
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux開發(fā)_CentOS7.4服務(wù)器搭建NFS、NGINX服務(wù)器,安裝ffmpeg、Qt環(huán)境

    在CentOS7.4服務(wù)器版本的環(huán)境下搭建NFS服務(wù)器、安裝ffmpeg、安裝nginx服務(wù)器、部署Qt編譯環(huán)境。
    的頭像 發(fā)表于 07-14 13:45 ?2268次閱讀
    Linux開發(fā)_CentOS7.4<b class='flag-5'>服務(wù)器</b>搭建NFS、<b class='flag-5'>NGINX</b><b class='flag-5'>服務(wù)器</b>,安裝ffmpeg、Qt環(huán)境

    【NanoPi2試用體驗(yàn)】高級(一):基于nginx的web服務(wù)器

    /nginx reload在瀏覽中打開地址192.168.1.222:8080服務(wù)器正常!征文活動,多多捧場:https://bbs.elecfans.com/jishu_531047_1_1.html
    發(fā)表于 01-03 11:00

    NanoPi NEO - 可靠的Nginx 網(wǎng)絡(luò)服務(wù)器

    服務(wù)器部署,并刪除匿名用戶和測試數(shù)據(jù)庫。#mysql_secure_installation根據(jù)提示進(jìn)行選擇:3. 安裝nginx如果你之前已經(jīng)安裝了Apache2,則需要先移除apache2
    發(fā)表于 06-20 15:43

    Nginx的主要功能

    大數(shù)據(jù)基礎(chǔ)——Nginx服務(wù)器基本配置
    發(fā)表于 05-31 07:57

    Nginx的安裝和啟動服務(wù)

    Mac上搭建直播服務(wù)器 Nginx+rtmp
    發(fā)表于 08-05 14:54

    Nginx服務(wù)器的搭建步驟

    ①搭建Nginx服務(wù)器②SSL加密網(wǎng)站③基于域名虛擬主機(jī)
    發(fā)表于 04-07 16:20

    構(gòu)建實(shí)戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負(fù)載均衡

    構(gòu)建實(shí)戰(zhàn):Nginx+IIS構(gòu)筑Web服務(wù)器集群負(fù)載均衡
    發(fā)表于 09-05 10:56 ?4次下載
    構(gòu)建實(shí)戰(zhàn):<b class='flag-5'>Nginx</b>+IIS構(gòu)筑Web<b class='flag-5'>服務(wù)器</b>集群負(fù)載均衡

    一文知道Nginx服務(wù)器的緩存原理和機(jī)制

    Nginx服務(wù)器的緩存原理,是在學(xué)習(xí)過程中比較重要的一個知識點(diǎn),學(xué)習(xí)通透之后,對于自己的能力會有不小的提升——而且提升不只限于nginx一方面,技術(shù)理論一通百通,對于理解其他內(nèi)容也會有很大幫助。
    的頭像 發(fā)表于 10-05 09:01 ?2655次閱讀
    一文知道<b class='flag-5'>Nginx</b><b class='flag-5'>服務(wù)器</b>的緩存原理和機(jī)制

    詳解Nginx高性能的HTTP和反向代理服務(wù)器

    Nginx 是一個高性能的 HTTP 和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上 Nginx 的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好。
    的頭像 發(fā)表于 03-16 11:23 ?2744次閱讀

    【技術(shù)分享】如何在嵌入式Linux平臺上使用Nginx搭建RTMP流媒體服務(wù)器?

    RTMP作為目前主流的流媒體傳輸協(xié)議,廣泛應(yīng)用于音視頻領(lǐng)域。那么我們?nèi)绾慰焖僭谇度胧桨遄由洗罱ㄆ鹱约旱膔tmp流媒體服務(wù)器?本篇文章將帶大家實(shí)踐一下。 ?? 概述 Nginx是一個以高效穩(wěn)定著稱
    的頭像 發(fā)表于 01-05 15:15 ?903次閱讀

    【技術(shù)分享】如何在嵌入式Linux平臺上使用Nginx搭建RTMP流媒體服務(wù)器?

    RTMP作為目前主流的流媒體傳輸協(xié)議,廣泛應(yīng)用于音視頻領(lǐng)域。那么我們?nèi)绾慰焖僭谇度胧桨遄由洗罱ㄆ鹱约旱膔tmp流媒體服務(wù)器?本篇文章將帶大家實(shí)踐一下。概述Nginx是一個以高效穩(wěn)定著稱的高性能
    的頭像 發(fā)表于 01-13 09:27 ?1727次閱讀
    【技術(shù)分享】如何在嵌入式Linux平臺上使用<b class='flag-5'>Nginx</b>搭建RTMP流媒體<b class='flag-5'>服務(wù)器</b>?

    Apache服務(wù)器Nginx服務(wù)器

    Apache和Nginx都是常見的開源Web服務(wù)器軟件,它們用于處理HTTP請求并提供網(wǎng)站和應(yīng)用程序的服務(wù)。下面是對Apache和Nginx的一些基本特點(diǎn)的比較: 一、Apache H
    的頭像 發(fā)表于 01-22 16:48 ?840次閱讀

    nginx負(fù)載均衡配置介紹

    目錄 nginx負(fù)載均衡 nginx負(fù)載均衡介紹 反向代理與負(fù)載均衡 nginx負(fù)載均衡配置 Keepalived高可用nginx負(fù)載均衡器
    的頭像 發(fā)表于 11-10 13:39 ?774次閱讀
    <b class='flag-5'>nginx</b>負(fù)載均衡配置<b class='flag-5'>介紹</b>

    nginx隱藏版本號與WEB服務(wù)器信息

    nginx不僅可以隱藏版本信息,還支持自定義web服務(wù)器信息 先看看最終的隱藏結(jié)果吧 具體怎么實(shí)現(xiàn)呢,其實(shí)也很簡單,請往下看 1 官網(wǎng)下載最新穩(wěn)定版 wget http://nginx
    的頭像 發(fā)表于 11-22 10:25 ?626次閱讀
    <b class='flag-5'>nginx</b>隱藏版本號與WEB<b class='flag-5'>服務(wù)器</b>信息

    Nginx在企業(yè)環(huán)境中的調(diào)優(yōu)策略

    Nginx作為現(xiàn)代互聯(lián)網(wǎng)架構(gòu)中最重要的Web服務(wù)器和反向代理服務(wù)器,其性能調(diào)優(yōu)對企業(yè)級應(yīng)用的穩(wěn)定性和效率至關(guān)重要。本指南將從運(yùn)維實(shí)踐角度出發(fā),詳細(xì)
    的頭像 發(fā)表于 07-14 11:13 ?120次閱讀