美文网首页
Nginx 系列二:Nginx 服务器架构初探

Nginx 系列二:Nginx 服务器架构初探

作者: FlySheep_ly | 来源:发表于2018-02-21 15:00 被阅读79次

    一、Nginx模块化结构

    习惯上将 Nginx 涉及到的模块分为核心模块、标准 HTTP 模块、可选 HTTP 模块、邮件服务模块以及第三方模块等五大类。

    二、Nginx服务器的Web请求处理控制

    Web 服务器和客户端是一对多的关系,Web 服务器必须有能力同时为多个客户端提供服务。一般来说,完成并行处理请求工作有三种方式可供选择:多进程方式、多线程方式和异步方式。

    2.1 多进程方式

    多进程方式是指,服务器每当接收一个客户端时,就由服务器主进程生成一个子进程出来和该客户端建立连接进行交互,直到连接断开,该子进程就结束了。
      多进程方式的优点是设计和实现相对简单,各个子进程之间相互独立,处理客户端请求的过程彼此不受到干扰,并且当一个子进程产生问题时,不容易将影响蔓延到其它进程中,这保证了提供服务的稳定性。当子进程退出时,其占用资源会被操作系统回收,也不会留下任何垃圾。而其缺点也是很明显的。操作系统中生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的额外开销,因此,如果Web 服务器接受大量并发请求,就会对系统资源造成压力,导致系统性能下降。

    2.2 多线程方式

    多线程方式和多进程方式相似,它是指,服务器每当接收到一个客户端时,会由服务器主进程派生一个线程出来和该客户端进行交互。
      由于操作系统产生一个线程的开销远远小于产生一个进程的开销,所以多线程方式在很大程度上减轻了Web服务器对系统资源的要求。该方式使用线程进行任务调度,开发方面可以遵循一定的标准,这相对来说比较规范和有利于协作。但在线程处理方面,该方式有一定的不足。多个线程位于同一个进程内,可以访问同样的内茌空间,彼此之间相互影响;同时,在开发过程中不可避免地要由开发者自己对内存进行管理,其增加了出错的风险。服务器系统需要长时间连续不停地运转,错误的逐渐积累可能最终对整个服务器产生重大影响。

    2.3 异步方式

    异步方式是和多进程方式及多线程方式完全不同的一种处理客户端请求的方式。
      网络通信中的同步机制和异步机制是描述通信模式的概念。同步机制,是指发送方发送请求后,需要等待接受到接收方发回的响应后,才接着发送下一个请求;异步机制,和同步机制正好相反,在异步机制中,发送方发出一个请求后,不等待接收方响应这个请求,就继续发送下个请求。在同步机制中,所有的请求在服务器端得到同步,发送方和接收方对请求的处理步调是一致的;在异步机制中,所有来自发送方的请求形成一个队列,接收方处理完成后通知发送方。
      阻塞和非阻塞用来描述进程处理调用的方式,在网络通信中,主要指网络套接字Socket的阻塞和非阻塞方式,而 Socket 的实质也就是 IO 操作。Socket 的阻塞调用方式为,调用结果返回之前,当前线程从运行状态被挂起,一直等到调用结果返回之后,才进入就绪状态,获取 CPU 后继续执行;Socket 的非阻塞调用方式和阻塞调用方式正好相反,在非阻塞方式中,如果调用结果不能马上返回,当前线程也不会被挂起,而是立即返回执行下一个调用。
      两队概念的组合,就会产生四个新的概念,同步阻塞、异步阻塞、同步非阻塞、异步非阻塞。
      同步阻塞方式,发送方向接收方发送请求后,一直等待响应;接收方处理请求时进行的 IO 操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其它工作。
      同步非阻塞方式,发送方向接收方发送请求后,一直等待响应;接收方处理请求时进行的 IO 操作如果不能马上得到结果,就立即返回,去做其它事情,但由于没有得到请求处理结果,不响应发送方,发送方一直等待。一直到IO 操作完成后,接收方获得结果响应发送方后,接收方才进入下一次请求过程。在实际中不使用这种方式。
      异步阻塞方式,发送方向接收方发送请求后,不用等待响应,可以接着进行其它工作;接收方处理请求时进行的 IO 操作如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其它工作。这种方式在实际中也不使用。
      异步非阻塞方式,发送方向接收方发送请求后,不用等待响应,可以继续其它工作;接收方处理请求时进行的 IO 操作如果不能马上得到结果,也不等待,而是马上返回去做其它事情。当 IO 操作完成以后,将完成状态和结果通知接收方,接收方再响应发送方。在四种方式中,这种方式是发送方和接收方通信效率最高的一种。
      Nginx 服务器的一个显著优势是能够同时处理大量并发请求。它结合多进程机制和异步机制对外提供服务。异步机制使用的是异步非阻塞方式。

    相关文章

      网友评论

          本文标题:Nginx 系列二:Nginx 服务器架构初探

          本文链接:https://www.haomeiwen.com/subject/txxotftx.html