netty 线程模型

4月 12, 2018 |

一个提供dubbo服务的应用运行的时候会发现有如下前缀的线程在
New I/O server boss #
New I/O server worker #
DubboSharedHandler

netty在NioServerSocketPipelineSink.Boss 类的run方法是boss线程的入口, 当接受一个连接的时候,调用NioWorker.register 从worker线程池选一个线程为该连接上的请求服务。
NioWorker.run() 方法是worker线程的入口,
在dubbo的AllChannelHandler.received 方法中将请求的处理从worker线程到DubboSharedHandler线程的转移。
在dubbo的HeaderExchangeHandler.received 方法中调用org.jboss.netty.channel.Channel.write(), 最后netty 内部调用NioWorker.writeFromUserCode 将写请求放入写的消息队列。
netty 框架确实封装了很多东西, 不但将bio和nio的编程模式统一了接口, Channel.write()也解决了多线程写的问题。

Posted in: MySQL practise

Comments are closed.