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
原創文章,作者:wanghui,如若轉載,請注明出處:http://www.www58058.com/53983
概念性的知識可以總結在詳細一些,加油!