Nginx的事件驱动架构

        事件驱动架构:由一些事件发生源来产生事件,由一个或多个事件收集器来收集、分发事件,然后许多事件处理器会注册自己感兴趣的事件,同时会消费这些事件。

        对于Nginx Web服务器而言,一般会由网卡、磁盘产生事件,事件模块将负责事件的收集、分发操作,而所有的模块都可能是事件消费者,它们首先需要向事件模块注册感兴趣的事件类型,在有事件产生时,事件模块会把事件分发到相应的模块中进行处理。

        传统Web服务器,采用的事件驱动往往局限在TCP连接建立、关闭事件上,一个连接建立后,在其关闭之前所有的操作都不再是事件驱动,这时就会退化成按序执行每个操作的批处理模式,这样每个请求在连接建立后都将始终占用着系统资源,直到连接关闭才会释放资源。如果整个事件消费者进程只是等待某个条件而已,则会造成服务器资源的极大浪费,影响了系统可以处理的并发连接数。如图所示:

 

       Nginx不会使用进程或线程来作为事件消费者,所谓的事件消费者只能是某个模块。只有事件收集、分发器才会占用进程资源,在分发某个事件时调用事件消费者模块使用当前占用的进程资源。如图所示:

 

      传统的Web服务器与Nginx间的重要差别:前者是每个事件的消费者独占一个进程资源,后者的事件消费者只是被事件分发者进程短期调用而已。Nginx的处理事件的架构设计使得网络性能、用户感知的请求时延都得到了提升。但是这要求每个事件的消费者都不能有阻塞行为,否则会长事件占用事件分发者进程而导致其他事件得不到及时响应。

 

      文章引自《深入理解Nginx 模块开发与架构解析》

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值