Netty
1、概述
2、线程模型
3、核心组件
3.1 Channel
3.2 ChannelHandler和ChannelPipeline
3.3 EventLoop和EventLoopGroup
3.4 Future和Promise
4、创建过程
4.1 服务端创建过程
4.2 客户端创建过程
5、TCP粘包和拆包
6、序列化与反序列化
-
+
游客
注册
登录
客户端创建过程
## 1 创建过程 ![](/media/202108/2021-08-25_162119_162347.png) 1. **用户线程创建 Bootstrap 实例**,**通过 API 设置创建客户端相关的参数**,**异步发起客户端连接**。 2. **创建处理客户端连接**、**I/O 读写的 Reactor 线程组 NioEventLoopGroup**,**可以通过构造函数指定 I/O 线程的个数**,**默认为 CPU 内核数的 2 倍**。 3. **通过 Bootstrap 的 ChannelFactory 和用户指定的 Channel 类型创建用于客户端连接的 NioSocketChannel**,他的功能**类似于 JDK NIO 类库提供的 SocketChannel**。 4. **创建默认的 ChannelPipeline**,**用于调度和执行网络事件**。 5. **异步发起 TCP 连接**,**判断连接是否成功**: 1. 如果**成功**,直接**将 NioSocketChannel 注册到多路连接复用器上**,**监听读操作位**,**用于数据报读取和消息发送**。 2. 如果**没有连接成功**,则**注册连接监听位到多路复用器**,**等待连接结果**。 6. **注册对应的网络监听状态位到多路复用器**。 7. **由多路复用器在 I/O 现场中轮询各 Channel**,**处理连接结果**。 8. **如果连接成功**,**设置 Future 结果**,**发送连接成功事件**,**触发 ChannelPipeline 执行**。 9. **由 ChannelPipeline 调度执行系统和用户的 ChannelHandler**,**执行业务逻辑**。 ## 参考文献 1. 《Netty 权威指南 第 2 版》
ricear
2021年8月25日 16:57
©
BY-NC-ND(4.0)
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码