NGINX(理论)

【http MPM】
prefork:进程模型,两级结构,主进程master负责生成子进程,每个子进程负责负责响应一个请求。
worker:线程模型,三级结构,主进程master负责生成子进程,每个子进程负责生成多个线程,每个线程响应一个请求。
event:线程模型,三级结构,主进程master负责人生成子进程,每个子进程响应多个请求。

【nginx服务的请求过程】
第一步:经数据从磁盘文件先加载至内核内存空间(缓冲区),等待数据准备完成,时间较长
第二部:将数据从内核缓冲区复制到用户空间的进程的内存中,时间较短

【I/O模型】
[同步/异步]:关注是的消息通告机制
同步:synchronous,调用者等待被调用者返回消息,才能继续执行
异步:asynchronous,被调用者通过状态、通知或回调机制主动通知调用者被调用者的运行状态

        [阻塞/非阻塞]:关注调用者在等待结果返回之前所处的状态
                阻塞:blocking,指IO操作需要企彻底完成后返回到用户空间,调用结果返回之前,调用者被挂起
                非阻塞:ninblocking,指IO操作被调用后立即返回给用户一个状态值,无须等到IO操作彻底完成,最终的调用结果返回之前,调用者不会被挂起
        
        [I/O模型]:
                阻塞型、非阻塞型、复用型、信号驱动型、异步
        
        [同步阻塞IO模型]:用户发起指令,给内核,只能等待用户进程;除非从盘上复制给内核,然后数据再把文件复制到用户缓冲区中,然后返回一个成功的结果
                缺陷:CPU的资源利用率不高
        
        [同步非阻塞IO模型]:数据从磁盘放到内核中才做完,将数据从内核复制到用户空间,给用户返回一个返回值
                缺陷:消耗了大量的CPU的资源
        
        [IO多路复用模型]:使用select函数进行IO请求和同步阻塞没有太多大区别,甚至还多添监视IO,以及调用selec函数的额外操作,效率更差。并且阻塞了两次,但是第一次阻塞在select上时,select可以监控多个IO上是否已有IO操作准备就绪,即可到达在一个线程内同事处理多个IO请求的目的。不像阻塞IO那种,一次只能监控一个IO。
                优势:接受很多的进程的并发量,提高了CPU的利用率

        [信号驱动IO模型]:此模型的优势在于等待数据报道达期间进程比被堵塞。用户主程序可以继续执行,只要等待来自信号处理函数的通知。

        [异步IO模型]:用户的请求,发给系统内核,再读取磁盘数据。当磁盘复制到系统内核缓冲区,然后再从系统内核复制到用户缓冲区,这期间不影响内核和用户之间的数据复制和请求的过程。



        【I/O多路复用】
                [同步I/O]
                        select阻塞/非阻塞
                            linux最多句柄显示1024
                            水平触发
                            跨平台使用
                        poll阻塞/非阻塞
                            无句柄数量限制
                            水平触发
                            仅限制linux
                [异步I/O]:
                        epoll
                            无句柄数量限制
                            水平触发/边缘触发
                            仅限制linux

【nginx介绍】
特性:
模块化设计,较好的扩展性
高可靠性
支持热部署:不停机更新配置文件,升级版本,更新日志文件
低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
event-driven,aio,mmap,sendfile
基本功能:
静态资源的web服务器
http协议反向代理服务器
pop3/imap4协议反向代理服务器
FastCGI(LNMP),uWSGI(python)等协议
模式化(非DSO),如zip,SSL模块

13分钟

你可能感兴趣的:(网络)