Netty是高效的网络通信框架,通过Netty可以编写高性能的服务端和客户端程序。
本文目的是详细地解析Netty服务端的重点源码,吸收Netty中优秀的设计思想。
本文的特点是尽量通过流程图的方式表达Netty的原理,取代文字的表达方式,减少阅读成本。
Netty服务端简要的工作流程图
Netty服务端简要的内部结构图
结论:
- 每个NioEventLoopGroup对象内部包含多个NioEventLoop对象。
- NioEventLoop对象包含Selector和Thread成员。
- bossGroup在NioEventLoop对象中的thread线程中注册NioServerSocketChannel对象,接受连接请求,创建NioSocketChannel对象。
- bossGroup将创建好的NioSocketChannel对象传给workerGroup,workerGroup在NioEventLoop对象中的thread线程中注册NioSocketChannel对象,处理读写事件。
- bossGroup和workerGroup的每个NioEventLoop成员内有一个独立的thread子线程,每个NioEventLoop对象中所有注册的Channel发生的所有事件都在独有的thread子线程中执行。
- bossGroup只注册一个NioServerSocketChannel对象,只会使用一个NioEventLoop对象;workerGroup会注册多个NioSocketChannel对象,会使用多个NioEventLoop对象。
Netty服务端详细的工作流程图
由于流程较复杂,详细的Netty服务端流程图在链接中☞ Netty启动流程
Netty关键技术
Netty线程模型
文章链接
Netty监听器原理
文章链接