玩轉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
下一篇 2016-10-29

相關推薦

  • LVS NAT模型

    LVS NAT NAT模式顧名思義就是對地址進行轉換 通過訪問前端外網的VIP調度到后端兩臺真實主機 拓撲圖如下                      &n…

    2017-05-15
  • CentOS 系統啟動流程

    CentOS 系統啟動流程 一、Linux系統的組成部分:內核+根文件系統 1.內核: 進程管理:進程之間的通信為:IPC(Inter Process Communication)機制,有消息隊列、semerphor、shm、socket(跨主機之間的通信) 內存管理; 網絡管理; 文件系統; 驅動程序; 安全功能; 2.運行中的系統環境可分為兩層:內核空間…

    Linux干貨 2016-09-13
  • Linux基礎知識

    命令的語法通用格式: # COMMAND OPTIONS ARGUMENTS COMMAND:  發起一命令:請求內核將某個二進制程序運行為一個進程; 程序 –> 進程 靜態 –> 動態(有生命周期) 命令本身是一個可執行的程序文件:二進制格式的文件,有可能會調用共享庫文件; 多數系統程序文件都存放在:/bin,…

    Linux干貨 2016-10-29
  • pam_mysql認證ftp虛擬用戶賬號

    pam_mysql認證ftp虛擬用戶賬號: 虛擬用戶:        用戶賬號存儲于何處?        文件、MySQL、Redis、…       &nb…

    2017-06-13
  • 命令行歷史和調用命令參數

    history顯示當前終端的歷史記錄 !! 重復執行上一條命令 !-n 重復執行倒數第n條命令 !n 重復執行第n條命令 ctrl+p 等于向上方向鍵,翻出上一條命令。 ctrl+n 等于向下方向鍵,翻出下一條命令。 ctrl+j 等于enter 執行當前命令 !:0 執行前一條命令(去除參數) !string 重復前一個以“string”開頭的命令(只限于…

    2017-07-14

評論列表(1條)

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

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

欧美性久久久久