首页 > 代码库 > 【Nginx】Nginx基础架构

【Nginx】Nginx基础架构

一、Nginx的架构设计

1)优秀的模块化设计

2)事件驱动架构

事件驱动架构是指由一些事件发生源来产生事件,由一个或多个事件收集器来收集、分发事件,然后许多事件处理器会注册自己感兴趣的事件,同时会消费这些事件。

对于Nginx而言,一般会由网卡、磁盘产生事件,事件模块将负责事件的收集、分发操作,而所有的模块都可能是事件消费者。

Nginx采用完全的事件驱动架构来处理业务。对于传统web服务器而言,事件驱动往往局限在TCP链接建立、关闭事件上,一个连接建立以后,在其关闭之前的所有操作逗不再是事件驱动,这时会退化成按序执行每个操作的批处理模式,这样每个请求在链接建立后都将始终占用着系统资源,知道连接关闭才会释放资源。传统web服务器往往把进程或线程作为事件消费者,当一个请求产生的事件被该进程处理时,知道这个请求处理结束时进程资源都将被这个请求所占用。

Nginx只有事件收集、分发器才有资格占用进程资源,它们会在分发某个事件时调用事件消费模块使用当前占用的进程资源。

3)请求的多阶段异步处理

即把一个请求的处理过程按照事件的触发方式分为多个阶段,每个阶段都可以由事件收集、分发器来触发。

优势:?

4)管理进程、多工作进程设计

Nginx采用一个master管理进程、多个worker工作进程的设计方式。

优点:

1.利用多核系统的并发处理能力。

Nginx中所有的worker工作进程都是完全平等的。

2.负载均衡

多个worker工作进程间通过进程间通信来实现负载均衡,当一个请求到来时更容易被分配到负载较轻的worker工作进程中处理。

3.管理进程会负责监控工作进程的状态,并负责管理其行为。

5)内存池的设计

优点:把多次向系统申请内存的操作整合成一次,大大减少了cpu资源的消耗,同时减少了内存碎片,提高了内存的有效利用率和系统可处理的并发连接数。

二、Nginx框架中的核心结构体ngx_cycle_t

1)ngx_listening_t 结构体

ngx_cycle_t对象中有一个动态数组成员listening,它的每个数组元素都是ngx_listening_t结构体,每个ngx_listening_t结构体代表着Nginx监听的一个端口。

2)ngx_cycle_t结构体

3)ngx_cycle_t支持的方法

三、Nginx启动时框架的处理流程

四、worker进程工作流程

五、master进程工作流程