深入理解Nginx:模块开发与架构解析阅读--Nginx架构设计简介

Nginx特点:

(1)更快

一方面,在正常情况下,单次请求会得到更快的响应;

另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求

(2)高扩展性
Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成

(3)高可靠性

Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务

(4)低内存消耗
一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存,这是Nginx支持高并发连接的基础

(5)单机支持10万以上的并发连接

这是一个非常重要的特性!随着互联网的迅猛发展和互联网用户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值期顶住10万以上并发请求的Server,无疑会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶

(6)热部署
master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在7×24小时不间断服务的前提下,升级Nginx的可执行文件。当然,它也支持不停止服务就更新配置项、更换日志文件等功能

(7)最自由的BSD许可协议
这是Nginx可以快速发展的强大动力。BSD许可协议不只是允许用户免费使用Nginx,它还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布

Nginx拥有如此强大的性能和它的优秀架构设计是分不开的。

Nginx的架构设计

1、优秀的模块化设计

(1)高度抽象的模块接口
所有的模块都遵循着同样的ngx_module_t接口设计规范

(2)模块接口非常简单,具有很高的灵活性
模块的基本接口ngx_module_t足够简单,只涉及模块的初始化、退出以及对配置项的处
理,这同时也带来了足够的灵活性,使得Nginx比较简单地实现了动态可修改

(3)配置模块的设计
ngx_module_t接口有一个type成员,它指明了Nginx允许在设计模块时定义模块类型这个概念,允许专注于不同领域的模块按照类型来区别。而配置类型模块是唯一一种只有1个模块的模块类型。配置模块的类型叫做NGX_CONF_MODULE,它仅有的模块叫做ngx_conf_module,这是Nginx最底层的模块,它指导着所有模块以配置项为核心来提供功能。因此,它是其他所有模块的基础。配置模块使Nginx提供了高可配置性、高可扩展性、高可定制性、高可伸缩性

参考书籍:

《深入理解Nginx:模块开发与架构解析》

猜你喜欢

转载自blog.csdn.net/zangdaiyang1991/article/details/84424260
今日推荐