Reactor模式用于解决高性能IO问题,特别适合处理海量的I/O事件,它是当前大多数IO组件所采用的IO模式。Netty网络框架就是基于Reactor模式进行设计和开发的,当请求抵达后,服务处理程序使用多路分配策略,同步地派发这些请求至相关的请求处理程序。
Netty可以通过配置不同参数实现不同Reactor线程模型,在Netty的官方demo中,推荐使用主从Reactor多线程模型,所以这里主要讲解常用的主从Reactor多线程模型。
主从Reactor线程模型的特点,服务端用于接收客户端连接的不再是个1个单独的NIO线程,而是一个独立的NIO线程池bossGroup。Acceptor接收到客户端TCP连接请求并处理完成后,将新创建的SocketChannel注册到workGroup线程池的某个IO线程上,由它负责SocketChannel的读写和编解码工作。
(1)bossGroup:监听ServerSocketChannel,接收到客户端连接请求后交由Acceptor处理,成功建立连接后将SocketChannel派发给workGroup。
(2)Acceptor:联想Socket编程大概也能猜到这是处理客户端请求链接的,Acceptor仅仅完成登录、握手和安全认证等操作,一旦链路建立成功,就将SocketChannel注册到后端workGroup线程池的IO线程上,由IO线程负责后续的IO操作。
(3)workGroup: