Netty客户端创建

Netty客户端创建教程

Netty 为了向使用者屏蔽 NIO 通信的底层细节,在和用户交互的边界做了封装,目的就是减少用户的开发工作量,降低开发难度。Bootstrap 是 Socket 客户端创建工具类,用户通过 Bootstrap 可以方便地创建 Netty 的客户端并发起异步 TCP 连接操作。

Netty客户端创建

netty 的服务端的创建从 Bootstrap 开始,一步一步的调用最终的 Handler。具体时序图如下:

02 客户端创建时序图.png

详解

  1. 用户线程创建 Bootstrap 实例,通过 API 设置创建客户端相关参数,异步发起客户端连接。
  2. 创建处理客户端连接,I/O 读写端 Reactor 线程组 NioEventLoopGroup。可以通过构造函数指定 I/O 线程的个数,默认为 CPU 内核数的 2 倍。
  3. 通过 Bootstrap 的 ChannelFactory 和用户指定的 Channel 类型创建用于客户端连接的 NioSocketChannel,它的功能类似于 JDK NIO 类库提供的 SocketChannel;
  4. 创建默认的 Channel Handler Pipeline,用于调度和执行网络事件。
  5. 异步发起 TCP 连接,判断连接是否成功。如果成功,则直接将 NioSocketChannel 注册到多路复用器上,监听读操作位,用于数据报读取和消息发送;如果没有立即连接成功,则注册连接监听位到多路复用器,等待连接结果;
  6. 注册对应的网络监听状态位到多路复用器;
  7. 由多路复用器在 I/O 现场重轮询各 Channel,处理连接结果;
  8. 如果连接成功,设置 Future 结果,发送连接成功事件,触发 ChannelPipeline 执行;
  9. 由 ChannelPipeline 调度执行系统和用户的 ChannelHandler,执行业务逻辑。

Netty客户端创建总结

本章根据一张时序图,我们对 Netty 这边客户端的创建有了一个整体的了解。Netty 为我们封装了很多操作,让使用者能够快速方便的接入。