Netty学习之十一 —— 客户端创建原理讲解和源码分析

1、Netty 客户端创建时序图

Netty学习之十一 —— 客户端创建原理讲解和源码分析

 

1、用户线程创建 Bootstrap实例,通过 API 设置创建客户端相关的参数,异步发起客户端连接。

2、创建处理客户端连接、I/O 读写的 Reactor 线程组 NioEventLoopGroup。可以通过构造函数指定 I/O 线程的个数,默认为 CPU 内核数的 2 倍。

3、通过 Bootstrap 的 ChannelFactory 和用户指定的 Channel 类型创建用于客户端连接的 NioSocketChannel,它的功能类似于 JDK NIO 类库提供的 SocketChannel;

4、创建默认的 ChannelHandlerPipeline,用于调度和执行网络事件;

5、异步发起 TCP 连接,判断连接是否成功。如果成功,则直接将 NioSocketChannel 注册到多路复用器上,监听读操作位,用于数据包读取和消息发送;如果没有立即连接成功,则注册连接监听位到多路复用器,等待连接结果;

6、注册对应的网络监听状态位到多路复用器;

7、由多路复用器在 I/O 现场中轮询各 Channel,处理连接结果;

8、如果连接成功,设置Future 结果,发送连接成功事件,触发 ChannelPipeline 执行;

9、由 ChannelPipeline 调度执行系统和用户的 ChannelHandler,执行业务逻辑。

 

源码分析部分待续。。。