Nginx-Reactor模型

448 阅读1分钟

Nginx对高并发IO的处理使用的是Reactor模型。Nginx的Reactor模型包含三个重要角色:事件收集器、事件分发器、事件处理器。其思想是将需要处理的IO事件注册到一个中心IO多路复用器中,然后主进程在多路复用器上阻塞,一旦准备就绪或者注册事件(文件描述符或者Socket可读、可写)到来,多路复用器就会将IO事件发送到事先注册好的处理器中

在Reactor模型中:

  1. 事件收集器负责收集来自Worker进程的IO事件
  2. 事件分发器负责将IO事件分发给事先注册的事件处理器中
  3. 事件处理器负责处理事件

事件收集器收集来自各个连接的IO事件,并将之存放到一个队列中。事件分发器负责将IO事件分发给对应的事件处理器。为什么Nginx可以管理上百万个连接?是因为Reactor使用了操作系统提供的“IO多路复用”技术,其依赖于操作系统提供的select、epoll