Nginx的事件驱动架构
来源:互联网 发布:男发型设计软件 编辑:程序博客网 时间:2024/05/17 23:37
事件驱动架构:由一些事件发生源来产生事件,由一个或多个事件收集器来收集、分发事件,然后许多事件处理器会注册自己感兴趣的事件,同时会消费这些事件。
对于Nginx Web服务器而言,一般会由网卡、磁盘产生事件,事件模块将负责事件的收集、分发操作,而所有的模块都可能是事件消费者,它们首先需要向事件模块注册感兴趣的事件类型,在有事件产生时,事件模块会把事件分发到相应的模块中进行处理。
传统Web服务器,采用的事件驱动往往局限在TCP连接建立、关闭事件上,一个连接建立后,在其关闭之前所有的操作都不再是事件驱动,这时就会退化成按序执行每个操作的批处理模式,这样每个请求在连接建立后都将始终占用着系统资源,直到连接关闭才会释放资源。如果整个事件消费者进程只是等待某个条件而已,则会造成服务器资源的极大浪费,影响了系统可以处理的并发连接数。如图所示:
Nginx不会使用进程或线程来作为事件消费者,所谓的事件消费者只能是某个模块。只有事件收集、分发器才会占用进程资源,在分发某个事件时调用事件消费者模块使用当前占用的进程资源。如图所示:
传统的Web服务器与Nginx间的重要差别:前者是每个事件的消费者独占一个进程资源,后者的事件消费者只是被事件分发者进程短期调用而已。Nginx的处理事件的架构设计使得网络性能、用户感知的请求时延都得到了提升。但是这要求每个事件的消费者都不能有阻塞行为,否则会长事件占用事件分发者进程而导致其他事件得不到及时响应。
文章引自《深入理解Nginx 模块开发与架构解析》
0 0
- Nginx的事件驱动架构
- nginx 源码(5)事件驱动架构
- nginx的事件驱动模型
- Nginx源码分析-事件驱动的初始化
- Nginx源码分析--事件驱动的初始化
- Nginx源码分析-事件驱动的初始化
- Nginx 的 epoll 事件驱动模块
- nginx服务器的事件驱动模型
- 事件驱动的架构及应用
- Nginx事件驱动初始化
- nginx事件驱动总结
- Nginx事件驱动总结
- Nginx事件驱动总结
- nginx 事件驱动模型
- 事件驱动架构要点
- EDA事件驱动架构
- EDA事件驱动架构
- EDA事件驱动架构
- HDU 1085 Holding Bin-Laden Captive!
- ubuntu12.04 报错curses.h: No such file or directory
- 如何解决APK文件传到网站上出现不能被下载的问题
- const (Constant) Objects and const Member Functions
- Qt-对话框
- Nginx的事件驱动架构
- Android技巧之shape实现控件圆角,背景,边框等属性
- 执行sudo apt-get install 时出现E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
- hadoop在ubuntu 12.04系统上的安装
- C++ 基本类型(Primitive Type) 的(const reference type) 参数有何用处?
- linux设备驱动——输入子系统
- hdu 4902 Nice boat(树形结构-线段树)
- Java1.5若干新特性
- codeforces round 261