Netty客户端创建

本文详细介绍了Netty客户端创建的流程,包括时序图、Bootstrap的使用、客户端连接的步骤和超时机制。Bootstrap用于设置I/O线程组、TCP参数,并指定Channel接口和Handler。客户端连接涉及NioEventLoopGroup、NioSocketChannel的创建,异步连接操作及结果通知。还讲解了连接超时的处理方式,包括连接超时定时器的启动和取消。
摘要由CSDN通过智能技术生成

1、Netty客户端创建时序图

 

2、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,执行业务逻辑。

 

3、客户端连接辅助类Bootstrap

①设置I/O线程组:非阻塞I/O的特点就是一个多路复用器可以同时处理成百上千条链路,这就意味着使用NIO模式一个线程可以处理多个TCP连接。考虑到I/O线程的处理性能,大多数NIO框架都采用线程池的方式处理I/O读写,Netty也不例外。客户端相对于服务端,只需要一个处理I/O读写的线程组即可。

②TCP参数设置接口:无论是异步NIO,还是同步BIOÿ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值