为什么选择 Nginx
从上一节中,我们可以看到, 已经是 Web 服务器市场的新一哥。市场的选择总归是没错的,那么市场选择它的理由又有哪些呢?
1. 高、高稳定、低资源消耗
的进程模型采用了 Master/Workers 进程池的机制,即通常情况下, 会启动 Master 进程(当然,也可以无 master 进程)和多个 Worker 进程对外提供服务。Master 进程是监控进程,本身并不处理具体的 TCP 和 HTTP 请求,只负责接受 UNIX 信号,管理 Worker 进程,类似于工地的包工头。
Worker 进程是比较累的,负责处理客户端的连接请求,它充分利用了 Linux 系统中的 epoll、kqueue 等机制,高效处理 TCP 和 HTTP 请求,利用这些特点,@H__9@ 充分挖掘了服务器的潜能,让服务器更快响应请求。
一般情况下,10000 个非活跃的 HTTP Keep-Alive 连接在 中仅仅消耗 2.5M 内存,这是 高并发连接的基础,体现了 高的特点。另外,由于官方提供的模块都非常稳定,每个 Worker 进程都相对独立,Woker 进程出错时,Master 进程会立马感知到并拉起新的 Worker 子进程不间断提供服务,保证服务的稳定性。
@H__9@的进程模型
2. 高可扩展性
的架构设计是非常优秀的,极具扩展性,它完全由多个不同、不同层次、不同类型且耦合度极低的模块组成。
另外,我们还可以在官方提供的模块上进行二次开发,例如 HTTP 模块,其中设计了 HTTP 过滤器模块,这样我们开发新的 HTTP 模块时,除了使用诸如 HTTP 核心模块、events 模块、log 模块等不同层次的模块,还可以原封不动地复用大量已有的 HTTP 过滤器模块。
这种低耦合度的优秀设计,造就了 庞大的第三方模块,@H__9@而且 的模块都是嵌入到二进制的中执行的,这样使得第三方模块同样具备极其优秀的,充分利用 的高并发特性,因此许多高流量的网站都会在 基础上开发符合自己业务特性的定制模块,而且开发成本低,好。
另外,对于中小型企业来说,@H__9@ 开箱即用,其本身的高并发能力能满足企业的大部分业务,因此 在绝大部分互联网企业中应用非常广泛。
3. 热部署
热部署是 的特色,许多大型门户网站要求 24 小时不间断提供服务,一旦出现服务停止,容易造成投诉和流失。 由于其管理进程和 Worker 进程的分离设计,使得其能提供热部署,@H__9@满足大型在 7x24 小时不间断服务的前提下 。
但要注意的是, 并在不停止服务的情况下就更新配置、更换日志等。 的热部署实现原理是,在不停止老进程的前提下,终止其连接请求,并启动新的 Worker 进程处理新进来的连接请求,再慢慢终止老的 Worker 进程,实现新老交替。
4. 开源和免费
和老大哥 Apache 一样开源且免费。在如今的时代,@H__9@开源才能有力地成长,免费才能让更多的企业和个人开发者使用。 当然 也有它的商业版本 plus,它有着更为丰富的和应用场景。然而免费版本的已经足够强大,第三方层出不穷的模块,几乎能实现各种业务,再配合第三方的语言集成(perl、lua等),对于绝大多数企业和个人来说已经完全足够。
当然, 的优点绝对不止于此。它最核心地是:在高并发请求的同时保持高效的服务。而这一点正是广大开发者,也是各大企业迫切需要满足的需求,以应对日益庞大的国内互联网群体。