服务器-Nginx设计架构

Nginx服务器架构

Nginx服务器启动后,产生一个主进程,主进程执行一系列工作后产生一个或多个工作进程。

如下图所示:Nginx服务器的结构大致分为主进程、工作进程、后端服务器和缓存。

  • 主进程主要进行:Nginx配置文件解析、数据结构初始化、模块配置和注册、信号处理、网络监听生成、工作进程生成和管理。
  • 工作进程主要进行:进程初始化、模块调用和请求处理等。
  • 缓存索引重建及管理进程:cache模块,主要由缓存索引重建和缓存索引管理两类进程完成。缓存索引重建是在Nginx服务启动一段时间后由主进程生成,在缓存元数据重建完成后自动退出。主要工作是:根据本地磁盘上的缓存文件在内存中建立索引元数据库,启动后对本地磁盘上存放缓存文件的目录结构进行扫描,检查内存中已有的缓存你数据元是否正确,并更新索引元数据库;缓存索引管理进程一般存在于主进程的整个生命周期,负责对缓存索引进行管理。主要负责对元数据是否过期做出判断。

进程交互

Master-worker交互

主进程会建立一张工作进程表,存放所有未退出的,主进程通过一个单向管道向工作进程发送指令等信息。

Worker-Worker交互

工作进程之间的交互,首先要得到彼此的信息,建立管道通信。当工作进程w1需要向w2发送指令时,首先在主进程给它的其他工作进程信息中找到w2的进程ID,然后将正确的指令写入指向w2的通道。w2捕捉到管道中的时间后,解析指令并采取相应的措施。完成worker之间的交互

Run Loops时间处理循环模型

Run Loops指的是进程内部用来不停的调配工作,对事件进行循环处理的一种模型。