netty 服务端和客户端创建流程

本文详细介绍了Netty服务端与客户端的创建流程,包括ServerBootstrap和Bootstrap的配置,Reactor线程组的选择与分配,ChannelPipeline的构建与ChannelHandler的设置,以及连接建立与事件处理的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

netty 服务端创建的流程
1. ServerBootstrap NIO 服务端启动辅助类,设置各种必要的参数 使用builder模式,解决构造函数参数过多并且不确定问题
2. EventLoopGroup selector 线程池
系统中有两个Reactor线程组

  1. 服务端用于监听和接收客户端连接的Reactor线程组
  2. 处理I/O读写的Reactor线程组
  1. 绑定NioServerSocketChannel 服务端channel
  2. 设置TCP连接参数
    backlog 表示的是未连接队列(当前连接服务器处于SYN_RECV状态)和 已完成连接队列(ESTABLISHED状态) 两个队列总和的最大值
  3. TCP 链路建立时创建ChannelPipeline()
  4. 添加并设置ChannelHandler()
    启动辅助类和父类分别指定handler,父类的handler作用是工厂类,为每一个客户端创建一个handler
    辅助类的作用是所有监听端口的客户端都会执行它。

这里写图片描述

  1. 绑定并启动监听端口
  1. initAndRegister 创建,初始化和NioServerSocketChannel
  2. 将其注册到Reactor上, 注册方式使用promise,启动异步线程进行注册。
  1. Selector轮询。 由Reactor线程NioEventLoop负责调度和执行Selector轮询操作,选择准备就绪的Channel集合.
  2. 执行ChannelPipeline的相应的方法, 最终调度并执行ChannelHandler。
  3. 执行用户自定义的ChannelHandler

netty 客户端创建的流程
这里写图片描述
1. Bootstrap实例
2. 创建处理客户端连接、I/O读写的Reactor线程NioEventLoopGroup
3. 创建NioSocketChannel
4. 创建默认的Channel Handler Pipeline, 用于调度和执行网路事件
5. 发起TCP连接, 判断连接是否成功。如果成功,将NioSocketChannel注册到多路复用上,监听读操作位
6. 注册对应的网络监听状态位到多路复用器
7. 多路复用器在I/O现场中轮询各Channel, 处理连接结果。
8. 如果连接成功,设置Future结果, 发送连接成功事件, 触发ChannelPipeline执行
9. 由ChannelPipeline 调度执行系统和用户的ChannelHandler, 执行业务逻辑。

处理超时,在创建NIOSocketChannel的时候,注册一个超时的定时器,如果定时器执行了,说明超时了,关闭链路,再做后续的操作。
如果在定时器执行之前返回了,就删除了定时器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值