玩轉Nginx之一:基礎概念

Nginx

web服務器:http協議

http協議:html,MIME(多用途互聯網郵件拓展)

major/minor

text/html,text/plain,image/jpeg

web資源:URL(scheme://server:port/path/to/source)

方法:GET,HEAD(相應首部)讀取資源

POST提交表單

PUT上傳數據

DELETE刪除數據

WEBDAV: 開發處理數據傳輸

http事務:request<—>responce

request:<method><URL><version>

          <HEADERS>

          …

          <body>

responce:<version><status><reason phrase>

<HEADERS>

<body>

status:

            1xx:信息類

            2xx:成功類

            3xx:重定向(301,302)

            4xx:錯誤類(客戶端錯誤)

            5xx:錯誤類(服務器端錯誤)

認證:basic:明文認證

digest:表單認證,密文

httpd:MPM(用來定義并發響應模型)

prefok(select模式只支持1014路的并發):進程按照自己的狀態創建子進程,子進程響應用戶請求

worker:cow(寫時復制模型),線程響應請求,模擬一個線程響應多個請求(進程創建的線程數是有限的,性能夠比較差)

event:真正意義上的事件驅動,實現一個進程響應多個請求

I/O模型:

進程間通信:關注的是消息通知的機制

同步:synchronous 一個任務的完成需要依賴的話要保證依賴的完成才能執行被依賴的任務。兩個任務的狀態保持一致

異步:asynchronous不需要等待被依賴的任務完成,只是通知被依賴的任務完成了什么工作即可。依賴于回調函數等,

消息通知:

        同步:等待對方返回消息

        異步:被調用者不能立即返回消息給調用者,通過消息(狀態),通知,回調通知調用者

        狀態:調用者每隔一段時間就要檢查一次;輪詢,效率很低

        通知:效率較高;

        回調:和通知方式類似

阻塞/非阻塞:在同步過程中,關注調用者等待調用結果返回之前所處的狀態

阻塞(block):調用結果返回之前,調用者會被掛起(和同步是有區別的)

非阻塞(nonblock):和阻塞相反,調用結果返回之前,調用者不會被掛起,明顯提高CPU利用率,不理之處在于導致cpu上下文切換之間的負載

常用的io模型:

同步阻塞:同步模型的調用者在被調用者訪問之前是被掛起的,效率最低

同步非阻塞:同步模型的調用者在等待被調用者的過程中還能執行其他,性能同樣比較低,第一階段盲等,第二階段仍然是掛起

io multipexing:io復用,同步阻塞的另外一種方式,select,poll。不是內核級別的調用了

signal driven io:信號量驅動io也可以叫做異步阻塞IO;event;一個進程響應多個請求(第一階段不會被阻塞)

asynchronous io:異步非阻塞io;第一階段和第二階段都不會被阻塞

異步阻塞:等待消息通知時被阻塞,

常見的io方式:網絡io:本質是socket文件的讀取

    磁盤io:數據流的讀取

    每次io都會經由兩個階段:

      本地讀取為例:(1)數據加載到內核的內存中(內核緩沖區)

      (2)從內核內存空間復制到用戶空間的進程內存空間中

總結:等待數據準備完成也就是上述(1)

數據從內核復制到進程的階段就是上述(2)

       同步阻塞    同步非阻塞     io復用            信號驅動機制         異步io

blob.png

玩轉Nginx之一:基礎概念

原創文章,作者:wanghui,如若轉載,請注明出處:http://www.www58058.com/53983

(0)
wanghuiwanghui
上一篇 2016-10-29 21:24
下一篇 2016-10-29 21:25

相關推薦

  • Python函數式編程指南(二):函數

    這是此系列的第二篇,試圖說明在Python中如何更好地使用函數并引導諸位使用函數式的思維進行思考。掌握并應用這些內容,就已經是至少形似的函數式風格的代碼了,至于思維么,這個真靠自己。 作者水平有限,如有錯漏之處還請指出;轉載請注明原作者和原地址:) 2. 從函數開始 2.1. 定義一個函數 如下定義了一個求和函數: def add(x, y): return…

    Linux干貨 2015-03-11
  • 馬哥面授班20期-第一周(計算機基礎,linux入門)

    一.計算機發展歷史及硬件組成部分     計算機發展歷史:第一代:(1946-1957)電子管時代,第二代:(1958-1964)晶體管時代,              第三代:(1965-1970)集成電路時…

    Linux干貨 2016-07-26
  • 0811linux基礎小記(shell編程基礎)

    1.編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 #!/bin/bash echo "hostname: `hostname`" echo "OS VERSION: `cat /etc/issue`" e…

    Linux干貨 2016-08-15
  • Week 1–Linux基礎2

    四. Linux系統命令使用格式:  但首先,在linux中我們要知道linux系統中基本的命令格式如下: 命令字 【命令選項】 【命令參數】   Command 【option】 【arguments】 在這里主要介紹這幾個命令的使用格式(Ifconfig,echo, tty, startx, export, pwd, history, shut…

    Linux干貨 2016-12-05
  • LAMP在三臺服務器上部署

    準備:centos7.3.3172.16.254.28 CentOS7.3.1 ip172.16.251.109? centos7.3.2 ip172.16.252.81? 部署: ??????? centos7.3.1部署mariadb ??????? centos7.3.2 中部署httpd ??????? centos7.3.3 中部署php-fpm …

    2017-06-08
  • 磁盤管理—MBR分區與GPT分區總結

    描述: 1,什么是磁盤分區   磁盤分區是使用分區編輯器(partition editor)在磁盤上劃分幾個邏輯部分,盤片一旦劃分成數個分區(Partition),不同類的目錄與文件可以存儲進不同的分區。 2,硬盤結構及參數   3D參數(Disk Geometry):CHS(Cylinder/Head/Sector)  &nb…

    Linux干貨 2016-08-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-02 17:09

    概念性的知識可以總結在詳細一些,加油!

欧美性久久久久