教程目录
Netty 的 Reactor 线程模型?
一、Reactor 模式 基于事件驱动,I/O 多路复用监听多个连接,事件就绪后分发给处理器。 二、Netty 三种模型 单线程 Reactor:一个线程处理所有连接的 accept 和 I/O,简单但不适合高并发。 多线程 Reactor:一个 Acceptor 线程接收连接,I/O 由线程池处理
Netty 的 ChannelPipeline 机制?
一、定义 每个 Channel 有一个 Pipeline,由多个 ChannelHandler 组成,形成责任链。入站和出站事件在 Pipeline 中传播。 二、入站和出站 InboundHandler:处理入站事件(读、连接建立等),从 head 向 tail 传播。 OutboundHandl
Netty 的 ByteBuf 设计?
一、与 ByteBuffer 对比 JDK ByteBuffer 只有一个 position,读写切换需 flip(),易出错。 ByteBuf 有 readerIndex 和 writerIndex 两个指针,读写分离,无需 flip。 二、核心方法 readXxx() / writeXxx():
Netty 如何解决粘包拆包?
一、问题 TCP 是字节流,没有消息边界,多个请求可能粘在一起(粘包),一个请求可能被拆分(拆包)。 二、解决方案 固定长度:FixedLengthFrameDecoder,每条消息固定长度。 特殊分隔符:DelimiterBasedFrameDecoder,按换行符等分隔。 长度字段:Length
Netty 如何实现心跳检测?
一、IdleStateHandler Netty 提供 IdleStateHandler 检测空闲状态。 ch.pipeline().addLast(new IdleStateHandler(5, 0, 0, TimeUnit.SECONDS)); 三个参数:读空闲时间、写空闲时间、所有空闲时间。