Nginx服务器知识熟知架构阔张

模块化.Nginx

       一、模块化设计结构的思想是一个概念,但也正是发展成熟的思想文化造就了Nginx的巨大优越性。我们可以知道Nginx从总体上来讲是有许多个管理模块主要构成的。五大功能模块分别为:核心技术模块,标准HTTP模块,可选HTTP模块,邮件信息服务系统模块和第三方支付模块。这五个模块由上到下,重要性进行依次递减。

1、核心模块:核心模块是Nginx服务器正常运行必不可少的模块,和操作系统内核一样。 它提供Nginx最基本的核心服务。 如流程管理、权限控制、错误日志记录等。

       2、标准 http 模块: 标准 http 模块支持标准 http 的功能。

       3、可选的HTTP模块:可选的HTTP模块主要用于扩展标准的HTTP的功能,使Nginx的可以处理一些特殊的服务。

       4、邮件服务管理模块:邮件服务功能模块设计主要可以用于支持Nginx的邮件服务。

       5、第三方模块:第三方模块来扩展Nginx的服务器应用程序开发人员来完成所期望的功能。

       6、Nginx中的模块进行命名有自己的习惯:一般以Ngx_作为前缀,——module作为后缀,中间可以使用也是一个企业或者其他多个国家英文学习单词以及描述系统模块的工能,例如Ngx_core_module表示该模块设计提供Nginx的核心管理功能等。

7、具体模块包含哪些模块可以自己进行源码查询,这里略过。

       二、Nginx 的 web 请求处理机制

       建筑设计,他说,Nginx的服务器是不同的。一个是它的模块化设计;另一种是更重要的一点是,它的与客户机请求的处理机制。 Web服务器和客户端的关系是一对多,Web服务器必须能够同时服务多个客户端的能力。在一般的工作并行执行的处理方式有三种请求:路多进程多线程异步。

       这里可以简单分析说明一下这三种方式:

1、多线型

       多线程意味着每次服务器接收到请求时,都会从服务器的主进程派生出一个线程来与客户机交互。 因为操作系统产生一个线程,开销远远小于一个进程的开销。 因此,多线程方法在很大程度上缓解了 web 服务器对系统资源的需求。 但同时,由于多个线程在同一个进程中,可以访问相同的内存空间。 所以需要开发人员自己对内存进行处理,增加了难度。

       2、多进型

       多进程模式的装置,每当一个客户端接收的服务器。有主服务器进程生成一个子进程出来,并与客户端交互来建立连接。指导断开。子进程结束。

       多进程发展方式的优点是设计一个简单,各个子进程相对比较独立,处理客户端请求时彼此不受干扰;缺点是操作管理系统数据生成一个子进程我们需要学生进行内存复制等操作,在资源和时间上会产生提供一定的开销;当有大量请求时,会导致信息系统安全性能下降;

       3、异步型

       异步模式适用于多进程和多线程处理完全不同的客户端请求方式。 这里有一些我们需要熟悉的概念: 同步,异步,阻塞,非阻塞。

       三、在网络通信的描述的通信概念同步和异步模式。

       1、同步:发送方发送完请求后,需要进行等待接收到接收方发回的响应,才能通过发送一个下一个数据请求;所有用户请求在服务端可以得到发展同步,发送方和接收方的步调是一致的;

       2、感应:同步机构和相对,在异步机制,发送端发送一个请求,这个请求测距响应于所述接收器,它发送一个请求,继续到下一个;从发送方形成一个队列,则处理结束通知发送方接收方的所有请求;

       在进程进行处理系统调度管理方式上用阻塞与非阻塞。在网络通信中内容主要指通过套接字socket的阻塞和非阻塞,而socket的实质问题就是IO操作。

       1、非阻塞: 与阻塞相反,如果调用的结果没有立即返回,当前线程不会立即返回,而是立即返回以执行下一个调用。

       2、阻塞:在调用结果返回之前,将当前线程从运行状态暂停,直到调用结果返回后才进入就绪状态,获得CPU并继续执行。

       同步阻塞,无阻塞同步,异步阻塞,非阻塞异步。因此,可以从四种模式衍生。

       这里我们简单解释一下异步非阻塞:发送方向接收方发送请求后,不用等待时间响应,可以选择继续学习其他企业工作;接收方处理请求时进行的IO操作过程中如果学生不能马上得到研究结果,也不必等待,而是马上返回去去做一些其他任何事情。当IO操作人员完成自己以后,将完成社会状态和结果通知接收方,接收方再响应发送方。

       与此同时Nginx的服务器处理又是什么要求?

       Nginx服务器的一个具有显著的优势发展就是我们能够通过同时进行处理需要大量的并发请求。它结合多进程管理机制和异步机制。异步机制可以使用的是异步非阻塞方式。(Master-Worker)。

        每个工作进程使用异步非阻塞方法来处理多个客户端请求。 工作进程接收到客户端的请求后,调用IO处理它,如果结果不能立即可用,则处理其他请求;虽然客户端不必等待响应,但它可以处理其他事情;当IO返回时,工作进程被通知;通知进程当前处理错误被暂时挂起以响应客户端请求。 Nginx使用异步非阻塞来处理请求,而将请求处理到系统底部是一个读写事件(所谓阻塞调用是指请求事件没有准备好,线程只能等到事件准备好处理;而不是阻塞,事件没有准备好,立即返回ENGAIN,告诉您事件可能已经准备好了,在此期间您可以做一些其他的事情,然后回顾一下事件是否准备好了,时不时的花费不小)

       可以将异步理解为通过多个准备好的事件循环,而不会造成不必要的资源浪费,因为更多的并发只会占用更多的内存。

       从上面需要我们教师可以通过知道,Nginx服务器的工作发展进程调用IO后,就取进行学习其他工作了;当IO调用返回后,会通知管理工作时间进程。但IO调用时如何把自己的状态信息通知给工作研究进程的呢?

       有解决这个问题的两种常规方法:

       1、让工作发展进程在进行学习其他企业工作的过程中间隔一段时间就去检查分析一下IO的状态,如果完成就响应客户端,如果一个未完成,继续教育工作。

       2、完成后IO调用能主动通知工作进程。

       当然最好使用第二种方法; 像 select / poll / epoll 这样的系统调用用于支持第二种解决方案。 这些系统调用通常也被称为事件驱动模型。 它们提供了一种机制,允许进程只处理多个并发请求,而不管 io 调用的具体状态如何。 Io 调用完全由事件驱动模型管理。

       Nginx的是事件驱动的模型:即事件驱动的处理库(多通道IO复用),最常见的模型是选择,轮询模型,模型epoll的。

       四.架构简介

       通过我们这个问题上面的简单进行讲解,再加上网络服务器的架构的了解,可以对Nginx有一个比较简单的了解,希望对之后的源码以及剖析有帮助。

       一般来说Nginx的结构是这样的:

       1、Nginx启动后,会产生影响一个主进程,主进程执行一系列的工作后会产生这样一个企业或者通过多个管理工作进程;

        2.客户端请求动态站点时,Nginx服务器还涉及与后端服务器的通信。 Nginx通过代理将接收到的Web请求转发给后端服务器,后者处理和组织数据。

       3。 为了提高响应请求的效率和减少网络压力,nginx 使用缓存机制将历史响应数据缓存到本地。 确保快速存取高速缓存档案;

       第五,过程的主要工作有以下几方面:

       接收客户端请求,将请求一次送入各个管理功能分析模块设计进行信息过滤技术处理,IO调用,获取响应国家数据,与后端服务器网络通信,接收后端服务器处理研究结果,数据缓存,响应客户端请求。

       过程相互作用:采用主工模型时的Nginx服务器,包括主处理和交互和工作流程工作过程之间的相互作用。这两种类型的交互依赖于管道机制。

       1.Master-Worker交互

       这条管道与普通的管道进行不同,它是由主进程指向社会工作学习进程的单向管道,包含主进程向工作时间进程发出的指令,工作研究进程ID等;同时主进程与外界信息通过控制信号数据通信;

       2.worker-worker交互

       这种交互与主工人交互基本一致。 但会通过主要程序。 工作过程是相互隔离的,所以当工作过程W1需要向工作过程W2发出指令时,首先找到W2过程ID,然后将正确的指令写入指向W2的通道。 接收W2信号采取相应措施。

文章来源:http://www.rakbuluo.com/b1/

原文链接:,转发请注明来源!

发表评论