Netty4实战解读后思考

看过TCP/IP协议,也看过关于Netty方面的代码,总结一下疑惑的地方。

关于伪异步IO模型,为什么会慢?

当消息的接收方处理缓慢的时候,将不能及时从TCP缓冲区读取数据,将会导致发送方的TCP“窗口”大小不断减小,直至为0,双方处于Keep-Alive状态,消息发送方将不能再向TCP缓冲区写入消息,如果采用的是同步阻塞I/O,写操作将会无限期阻塞,直到TCP“窗口”大小大于0或发生I/O异常。如果不是同步阻塞I/O,会怎么样。

Netty4数据传输图

Figure%206

  1. Channel 绑定到 ChannelPipeline
  2. ChannelPipeline 绑定到 包含 ChannelHandler 的 Channel
  3. ChannelHandler
  4. 当添加 ChannelHandler 到 ChannelPipeline 时,ChannelHandlerContext 被创建

Figure%206

  1. ChannelHandlerContext 方法调用
  2. 事件发送到了下一个 ChannelHandler
  3. 经过最后一个ChannelHandler后,事件从 ChannelPipeline 移除

Netty4编码与解码

Figure%207Figure%207

Netty 从 Channel 引导客户端

Figure%209

  1. 当 bind() 调用时,ServerBootstrap 创建一个新的ServerChannel 。 当绑定成功后,这个管道就能接收子管道了
  2. ServerChannel 接收新连接并且创建子管道来服务它们
  3. Channel 用于接收到的连接
  4. 管道自己创建了 Bootstrap,用于当 connect() 调用时创建一个新的管道
  5. 新管道连接到远端
  6. 在 EventLoop 接收通过 connect() 创建后就在管道间共享

线程模型

Eventloop类图

Future类图

Channel类图

Handle类图

 

参考:

https://waylau.com/essential-netty-in-action/

https://www.jianshu.com/nb/6812432

https://www.jianshu.com/p/d408f891f52f

Netty 那些事儿 ——— Reactor模式详解

https://blog.csdn.net/zx156955/article/details/106258701

Netty 源码分析之 三 我就是大名鼎鼎的 EventLoop(一)

Netty4的EventLoop和线程模型原理解析

https://blog.csdn.net/qq_24313635/article/details/80989450

Netty 中的内存分配浅析

Netty内存池原理分析

https://zhuanlan.zhihu.com/p/162069787

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值