Netty:Pipeline 消息传播、Handler 选型与 Reactor 模型易错点解析2026-11-012026-11-01技术易混淆概念/NettyNetty 的网络通信涉及多个层次:IO 多路复用负责监听就绪事件,Reactor 负责组织事件分发,Pipeline 负责事件传播,Handler 负责具体业务处理,Future 则用于表示异步操作的执行结果。 如果混淆这些概念,就容易在消息编码、引用计数、线程中断和资源关闭等方面出现错误理解。 2026-11-01|8|0|0
Netty:核心原理串联与综合场景分析2026-11-012026-11-01技术Netty一、Netty 服务端的整体工作流程 典型 TCP 服务端从客户端连接到消息响应,大致经历: 客户端发起 TCP 连接 │ ▼ Boss EventLoopGroup 接收连接 │ ▼ Worker EventLoopGroup 管理客2026-11-01|6|0|0
Netty:TCP_NODELAY、Nagle 算法与服务端连接管理2026-11-012026-11-01技术Netty一、Nagle 算法与 TCP_NODELAY 1. Nagle 算法解决什么问题? TCP 是字节流协议。应用程序可能频繁写入很少的数据,例如每次只写入几个字节。如果每次小数据写入都立即形成独立 TCP 数据段,可能产生大量小数据段,增加网络协议头开销。 Nagle 算法的目标是减少小 TCP 数2026-11-01|2|0|0
Netty:ByteBuf 引用计数、Handler 消息传播与处理器选型2026-11-012026-11-01技术Netty一、ByteBuf 为什么需要引用计数? 普通 Java 对象通常由 JVM 垃圾回收器管理。Netty 的 ByteBuf 可能使用池化内存或直接内存,因此通过引用计数管理资源生命周期。 ByteBuf buffer = Unpooled.buffer(); buffer.writeBytes("2026-11-01|7|0|0
Netty:EventLoop 线程隔离、业务线程池与背压控制2026-11-01技术Netty一、为什么 EventLoop 不能执行耗时任务? Netty 使用 Reactor 线程模型处理网络事件。一个 EventLoop 通常会负责多个 Channel,并在自己的线程中处理这些 Channel 的 IO 事件和 Pipeline 事件。 例如: EventLoop-1 ├── Ch2026-11-01|7|0|0
Netty:LengthFieldBasedFrameDecoder 五个参数与 lengthAdjustment 计算原理2026-11-012026-11-01技术Netty/易混淆概念一、先理解长度字段的三个概念 使用 LengthFieldBasedFrameDecoder 时,最容易混淆的是:长度字段本身占多少字节,以及长度字段里面存储的数值是多少。 例如协议: [Magic 2字节][BodyLength 2字节][Body 10字节]2026-11-01|8|0|0
Netty:Channel 生命周期、连接管理与 ChannelGroup 使用2026-11-01技术Netty/易混淆概念一、Channel 生命周期与状态 Channel 从注册、连接到关闭,会经历一系列生命周期事件。正常建立连接后再关闭,典型顺序如下: channelRegistered() ↓ channelActive() ↓ channelRead() / channelRea2026-11-01|7|0|0
Netty:IdleStateHandler 三种空闲事件与使用场景2026-10-31技术Netty一、IdleStateHandler 与三种空闲事件 IdleStateHandler 是 Netty 内置的空闲检测 Handler,继承自 ChannelDuplexHandler,因此既能观察入站读活动,也能观察出站写活动。开发时直接创建实例并添加到 Pipeline,不需要自己重新实现它。 2026-10-31|7|0|0
Netty:自定义 TCP 通信协议设计与编解码实现2026-10-312026-10-31技术易混淆概念/Netty一、为什么需要自定义 TCP 协议? TCP 是面向字节流的协议,不保留应用层消息边界。客户端和服务端需要约定统一的消息格式,才能正确识别和解析数据。 自定义协议主要解决: 1. 如何判断一条消息从哪里开始、在哪里结束。 2. 如何区分登录、心跳、业务数据等消息类型。 3. 如何识别协议版本。 4.2026-10-31|7|0|0
Netty:ByteToMessageDecoder 与编解码 Pipeline2026-10-312026-10-31技术Netty一、ByteToMessageDecoder 是什么? ByteToMessageDecoder 不是接口,而是抽象类,继承自 ChannelInboundHandlerAdapter,属于入站 Handler。 它提供字节累积、循环解码等通用能力。开发者可以继承它实现自己的协议解码器,也可以使用 2026-10-31|6|0|0