1、Nginx是高度模块化设计的
2、Nginx模块化设计的特点
(1)高度抽象的模块接口
(2)模块接口非常简单,具有很高的灵活性
(3)配置模块的设计
(4)核心模块接口的简单化
(5)多层次、多类别的模块设计
3、所有模块都遵循同样的ngx_module_t接口设计规范
4、官方Nginx模块共有五大类:核心模块、配置模块、事件模块、HTTP模块,mail模块
5、配置类模块只有一个具体模块:ngx_conf_module,这时Nginx最底层的模块,指导着其它模块以配置项为核心来提供功能,是其它模块的基础。
6、Nginx采用完全的·事件驱动架构来处理业务
7、事件消费者:在事件分发者分发事件时,接收事件并进行处理的模块
8、传统Web服务器的事件消费者是一整个进程,在一个请求产生的事件被处理完成之前,会一直占用整个进程的资源;而nginx的事件消费者是一个模块,当事件分发者分发事件时,分发进程会调用事件相应的模块来进行处理,只要事件分法者不阻塞就能对事件进行高速响应。
9、请求的多阶段异步处理:吧一个请求的处理过程按照事件的触发方式划分为多个阶段,每个阶段都可以由事件收集、分发器处理。
10、Nginx采用一个master管理进程、多个worker进程的设计方式。这种方式带来以下优点:(1)利用多核系统的并发处理能力;(2)负载均衡;(3)管理进程会负责监控工作进程的状态,并负责管理其行为。
11、为了避免出现内存碎片、减少向操作系统申请内存的次数、降低各个模块开发度,Nginx设计了简单的内存池,通常它不负责回收内存池中已经分配的内存。这种内存池最大的优点是:把多次向系统申请内存的操作整合成一次,这大大减少了CPU资源的消耗,同时减少了内存碎片。
12、通常每一个请求都有一个这种简易的独立内存池,而在请求结束时则会销毁整个内存池,把曾经分配好的内存一次性归还给操作系统。