Netty 3.X的I/O操作线程模型比较复杂,它的处理模型包括两部分:
Inbound:主要包括链路建立事件、链路激活事件、读事件、I/O异常事件、链路关闭事件等;
Outbound:主要包括写事件、连接事件、监听绑定事件、刷新事件等。
Inbound操作的主要处理流程如下:
I/O线程(Work线程)将消息从TCP缓冲区读取到SocketChannel的接收缓冲区中;
由I/O线程负责生成相应的事件,触发事件向上执行,调度到ChannelPipeline中;
I/O线程调度执行ChannelPipeline中Handler链的对应方法,直到业务实现的Last Handler;
Last Handler将消息封装成Runnable,放入到业务线程池中执行,I/O线程返回,继续读/写等I/O操作;
业务线程池从任务队列中弹出消息,并发执行业务逻辑。
通过对Netty 3的Inbound操作进行分析我们可以看出,Inbound的Handler都是由Netty的I/O Work线程负责执行。
Outbound操作的主要处理流程如下:
业务线程发起Channel Write操作,发送消息;
Netty将写操作封装成写事件,触发事件向下传播;
写事件被调度到ChannelPipeline中&#