Reactor模型

Netty Reactor线程模型

单线程 Reactor

单线程Reactor模型

  • acceptor 事件读取
  • dispatch 事件分发
  • read 读
  • send 发送

以上操作这都都是在一个线程里完成,缺陷很明显。一次只能由一个事件进行,该事件未完成,后面的事件只能无法执行。

多线程 Reactor

多线程Reactor模型

该模型由单线程 Reactor 模型改进而来,每个连接对应一个线程。后续的处理流程于单线程模型一致。

主从 Reactor

主从Reactor模型

  • MainReactor 只负责连接事件监听,当 client 连接以后,将后续的处理交给 SubReactor 来完成。与 Nginx 中的 master 进程原理一致,接收请求后本身不处理请求交由对应的 worker 来处理。

做 Netty 开发时,选择的都是主从 Reactor 模型。