1)MainReactor 负责客户端的连接请求,并将请求转交给 SubReactor;
2)SubReactor 负责相应通道的 IO 读写请求;
3)非 IO 请求(具体逻辑处理)的任务则会直接写入队列,等待 worker threads 进行处理。
五、无锁化串行设计
即消息的处理尽可能在同一个线程内完成,期间不进行线程切换,这样就避免了多线程竞争和同步锁。
表面上看,串行化设计似乎CPU利用率不高,并发程度不够。但是,通过调整NIO线程池的线程参数,可以同时启动多个串行化的线程并行运行,这种局部无锁化的串行线程设计相比一个队列-多个工作线程模型性能更优。
六、附录Netty功能特性
Netty模块组件