nginx

 

I/O模型:

              阻塞型、非阻塞型、複用型、信號驅動型、異步;

             

              同步/異步:

                     關注的是消息通知機制;

                    

                     消息通知:

                            同步:等待對方返回消息;

                            異步:被調用者通過狀態、通知或回調通知調用者被調用的運行狀態;

邊緣觸發:只發送回調信號一次

水平觸發:發送回調信號,如果進程沒有回調則繼續發送回調信號

             

              阻塞/非阻塞:

                     關注調用者在等待結果返回之前所處的狀態;

                    

                     阻塞:blocking,調用結果返回之前,調用者會被掛起;

                     非阻塞:nonblocking,調用結果返回之前,調用不會被掛起;

                    

             

              一次IO請求,都會由兩個階段組成:

                     第一步:等待數據,即數據從磁盤到內核內存;

                     第二步:複製數據,即數據從內核內存到進程內存;

             

             

                     SELECT(BSD):複用型io用,當多個數據準備時,將狀態發送給SELECT(像電子顯示牌一樣),準備好則顯示出來,最多支持1024個 顯示牌

                     POLL():       沒有限制 性能表現一般

dMYAAAAAAAAA&ek=1&kp=1&pt=0&bo=pwKwAQAAA

                    

                     c10k

                    

                     事件驅動模型實現:

                            Linux: epoll, libevent程序包;

                            FreeBSE: kqueue

                            Solaris: /dev/poll

**********************************************

Nginx:

http://nginx.org/ 官方站點

特性:

              http服務器

              http/imap/pop協議的反向代理服務器

              通用的TCP/UDP反代服務器(負載均衡)

dAYBAAAAAAAA&ek=1&kp=1&pt=0&bo=SwKRAQAAA

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

***************************************


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章