Nginx架构设计
这里先说下Nginx设计时重视的几个关键点:
- 性能:包括网络性能,单词请求的延迟性,网络效率;(名词就不解释了~)
- 可伸缩性:可通过添加组件来提升服务,或者允许组件之间具有交互功能;
- 简单性:组件的简单程度,便于理解和实现;
- 可修改性:包括可进化性,可扩展性,可定制性,可配置性,可重用性;
- 可见性:可监控关键组件的运行情况;
- 可移植性:跨平台运行;
- 可靠性:在服务出现故障时,一个架构容易受到系统层面故障影响的程度;
模块化设计
高度模块化的设计是Nginx的架构基础。在Nginx中,除了少量的核心代码,其他一切皆为模块。这一点在之前的模块开发的实践中已经感受到了。
所有模块都遵循ngx_module_t的接口设计,并且所有模块间都是分层次、分类别的。
官方Nginx共有五大类型模块:核心模块、配置模块、事件模块、HTTP模块、mail模块。
它们都各具备相同的ngx_module_t接口,但在请求处理流程中的层次不相同。
Nginx常用模块间的关系如下图:
转载地址: