作者:头都大了66 | 来源:互联网 | 2017-05-13 02:17
Web服务器设计中的关键约束
- 性能
- 网络性能
- 单次请求的延迟性
- 网络效率
- 可伸缩性
- 简单性
- 可修改性
- 可见性
- 可移植性
- 可靠性
Nginx 的架构设计
- 模块化设计
高度模块化设计时Nginx 的架构基础。除了少量的核心代码,其他一切皆为模块。
特点:
- 高度抽象的模块接口
- 模块接口非常简单,具有很高的灵活性
- 配置模块的设计
- 核心模块接口的简单化
- 多层次、多类别的模块设计
事件驱动架构
由一些事件发生源来产生事件,由一个或者多个事件收集器来收集、分发事件,然后许多事件处理器会注册自己感兴趣的事件,同时会“消费”这些事件。
请求的多阶段异步处理
请求的多阶段异步处理 只能 基于 事件驱动架构实现。
把一个请求的处理过程按照事件的触发方式分为多个阶段,每个阶段都可以由事件收集、分发器来触发。
- 管理进程、多工作进程设计
Nginx 采用一个master管理进程、多个worker工作进程的设计方式。
这种设计的优点:
- 利用多核系统的并发处理能力
- 负载均衡
- 管理进程会负责监控工作进程的状态,并负责管理其行为
平台无关的代码实现
C语言实现,尽量减少使用与操作系统平台相关的代码。
Nginx重新封装了日志、各种基础数据结构、常用算法等工具软件。
核心代码使用与操作系统无关的代码实现,与操作系统相关的系统调用则非别针对各个操作系统有独立的实现。
内存池的设计
把多次向系统申请内存的操作整合成一次,大大减少了CPU资源的消耗,同时减少了内存碎片。
使用 统一管道过滤器模式的HTTP过滤模块
其他一些用户模块
Nginx 框架中的核心结构体 ngx_cycle_t
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('
').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介绍了Nginx 基础架构,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。