nginx服务器的事件驱动模型
事件驱动模型是nginx服务器保证完整功能和具有良好性能的重要机制之一。
我们知道nginx服务器的每个工作进程都可以并发处理客户端请求。而不用关心IO调用的具体状态。IO调用完全是由事件驱动模型来管理的,事件准备好之后就会通知工作进程事件已经就绪。
事件驱动模型组成
1、事件收集器
2、事件发送器
3、事件处理器
可以理解为一个用来收集事件的(收集器1)、一个发送事件的(发送器2)、一个处理事件的(处理器3)。他们的关系是 :产生事件(鼠标单击,键盘输入)----》1 ----》2 -----》 3 ---- 》 屏幕
nginx中的事件驱动模型
服务器处理模型程序是基于事件驱动模型中的事件处理器有:
1、事件发送器发送请求就创建一个新进程,调用事件处理器处理该请求
2、事件发送器发送请求就创建一个新线程,调用事件处理器处理该请求
3、事件发送器发送请求就将请求放入一个待处理的事件列表,使用非阻塞I/O方式调用事件处理器处理请求。
大多数的网络服务器都是用3,逐渐形成了所谓的 事件驱动处理库
常见的事件模型处理库有 select、poll、epoll 等
想进一步了解可以查看相关文档。
nginx采用多进程+异步非阻塞+非阻塞I/O方式,最大程度的提高了处理客户端请求事件的能力。