I/O模型: 阻塞型、非阻塞型、複用型、信號驅動型、異步;
同步/異步: 關注的是消息通知機制;
消息通知: 同步:等待對方返回消息; 異步:被調用者通過狀態、通知或回調通知調用者被調用的運行狀態; 邊緣觸發:只發送回調信號一次 水平觸發:發送回調信號,如果進程沒有回調則繼續發送回調信號
阻塞/非阻塞: 關注調用者在等待結果返回之前所處的狀態;
阻塞:blocking,調用結果返回之前,調用者會被掛起; 非阻塞:nonblocking,調用結果返回之前,調用不會被掛起;
一次IO請求,都會由兩個階段組成: 第一步:等待數據,即數據從磁盤到內核內存; 第二步:複製數據,即數據從內核內存到進程內存;
SELECT(BSD):複用型io用,當多個數據準備時,將狀態發送給SELECT(像電子顯示牌一樣),準備好則顯示出來,最多支持1024個 顯示牌 POLL(): 沒有限制 性能表現一般
c10k
事件驅動模型實現: Linux: epoll, libevent程序包; FreeBSE: kqueue Solaris: /dev/poll ********************************************** Nginx: http://nginx.org/ 官方站點 特性: http服務器 http/imap/pop協議的反向代理服務器 通用的TCP/UDP反代服務器(負載均衡) Sendfile機制:httpd也支持,通常只對靜態資源有效(不需要執行) 用戶發送請求,請求從內核空間發往用戶空間,用戶空間程序向內核發起io請求,內核從磁盤加載文件放在內核緩衝區,內核緩衝區的內容再複製到用戶空間,進程封裝響應報文,送回內核並相應給用戶。 Sendifle機制則可實現,當內核在磁盤加載資源,直接在內核空間構建相應報文,並直接相應給用戶。 Mmap機制:內存映射機制 一個文件要想被訪問到,要先加載到內存當中,(內核內存,用戶空間)複製了兩遍, 內存映射,直接在內存中開闢出一段內存空間,把磁盤文件映射(內存地址空間和磁盤地址空間向對應)關聯,直接映射在用戶空間。 ****************************** Nginx程序架構: master/worker 一個master進程:主控進程 負責加載配置文件、管理worker進程、平滑升級等 ; 一個或多個worker進程: 處理並響應用戶請求; 緩存進程: cache loader cache manager nginx的功用: 靜態的web資源服務器; 結合FastCGI/uwsgi/SCGI等協議反代動態資源請求;(lnmt, lnmp) http/https協議的反向代理(負載均衡upstream) smtp/imap/pop協議的反代; tcp/udp協議的反代; Nginx的模塊類型: 核心模塊:core module 標準模塊: Standard HTTP modules 標準http模塊 Optional HTTP modules 可選http模塊 Mail modules E-Mail模塊 Stream modules 負載均衡模塊 3rd party modules 第三方模塊 nginx安裝配置: 官方的預製包: http://nginx.org/packages/centos/7/x86_64/
編譯安裝: # yum install pcre-devel zlib-devel openssl-devel # ./configure --prefix=/usr/local/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio # make -j # && make install *************************************** |
nginx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.