Reactor 单线程模式

Reactor 单线程模式,只有一个 Reactor,也就是一个线程处理所有事务,所以,在 Netty 中,只需要声明一个 EventLoopGroup 就可以了

  1. EventLoopGroup bossGroup = new NioEventLoopGroup(1);
  2. ServerBootstrap serverBootstrap = new ServerBootstrap();
  3. serverBootstrap.group(bossGroup);

Reactor 多线程模式

Reactor 多线程模式,实际上还是只有一个 Reactor,但是这个 Reactor 只负责处理 IO 事件,而不负责处理业务逻辑,所以,在 Netty 中,需要将业务逻辑的处理,也就是 Handler,放到另外的线程池中。

  1. EventLoopGroup bossGroup = new NioEventLoopGroup(32); // 一个Reactor
  2. ServerBootstrap serverBootstrap = new ServerBootstrap();
  3. serverBootstrap.group(bossGroup);
  4. // Handler使用线程池处理

Reactor 主从模式

Reactor 主从模式,有一个主 Reactor 和多个子 Reactor,但是,业务逻辑的处理还是在线程池中,所以,在 Netty 中,需要声明两个不同的 EventLoopGroup,Handler 依然使用线程池处理

  1. EventLoopGroup bossGroup = new NioEventLoopGroup(1); // 一个主Reactor
  2. EventLoopGroup workerGroup = new NioEventLoopGroup(); // 多个子Reactor
  3. ServerBootstrap serverBootstrap = new ServerBootstrap();
  4. serverBootstrap.group(bossGroup, workerGroup);

Reactor 变异主从模式

Reactor 变异主从模式,业务线程池和子 Reactor 池合并为一,所以,在 Netty 中,Handler 放在子 Reactor 池中处理即可,默认情况,Netty 也是使用的这种模式。

  1. EventLoopGroup bossGroup = new NioEventLoopGroup(1); // 一个主Reactor
  2. EventLoopGroup workerGroup = new NioEventLoopGroup(); // 多个子Reactor
  3. ServerBootstrap serverBootstrap = new ServerBootstrap();
  4. serverBootstrap.group(bossGroup, workerGroup);