Netty 网络编程 专栏导览

专栏定位

本专栏聚焦 Netty 高性能网络框架的设计与实现——从 Java NIO 的三大组件(Channel/Buffer/Selector)出发,深入 Netty 对 Reactor 模式的落地实现、ByteBuf 的池化与零拷贝、ChannelPipeline 的责任链设计,以及内存管理中借鉴 jemalloc 的分级分配算法。Netty 是 Java 生态中网络编程的事实标准——Dubbo、gRPC-Java、RocketMQ、Elasticsearch 的传输层都构建在 Netty 之上。

理解 Netty 的内部机制,既是掌握高性能网络编程的必经之路,也是深入理解上述中间件通信层设计的前置知识。

目标读者

  • 需要使用 Netty 构建高性能网络服务(RPC/推送/网关)的后端工程师
  • 希望理解 Dubbo、RocketMQ 等中间件底层通信原理的技术负责人
  • 对高性能 IO 模型和内存管理感兴趣的技术爱好者

专栏目录

序号标题核心内容
0101 Java NIO 基础——Channel、Buffer、Selector 三大组件BIO 的阻塞模型与 C10K 问题、NIO 的非阻塞 Channel 与 Buffer 的读写模式切换(flip/clear/compact)、Selector 的多路复用(SelectionKey 的四种事件)、NIO 编程的复杂性与痛点(粘包/拆包/空轮询 Bug)
0202 Netty 全局架构——从 BossGroup 到 ChannelPipelineNetty 的分层架构(传输层/协议层/业务层)、ServerBootstrap 的启动配置、BossGroup(accept 连接)与 WorkerGroup(处理 IO)的职责分离、Channel 的类型体系(NioServerSocketChannel/NioSocketChannel/EpollSocketChannel)
0303 EventLoop 与线程模型——Reactor 模式的落地实现单线程 Reactor / 多线程 Reactor / 主从 Reactor 的演进、NioEventLoop 的 run 循环(IO 事件处理 + 任务队列 + 定时任务)、IO 比例控制(ioRatio)、EventLoopGroup 的线程分配策略、Channel 与 EventLoop 的绑定关系(一个 Channel 只绑定一个 EventLoop)
0404 ByteBuf——引用计数、池化与零拷贝ByteBuf vs JDK ByteBuffer 的设计对比(readerIndex/writerIndex 双指针)、堆内 vs 堆外(DirectByteBuf)的选择、引用计数(ReferenceCounted)的内存管理、池化(PooledByteBufAllocator)的性能优势、CompositeByteBuf 的逻辑组合零拷贝、FileRegion 的 OS 级零拷贝(sendfile)
0505 ChannelPipeline 与 ChannelHandler——责任链模式的精妙设计ChannelPipeline 的双向链表结构(HeadContext ↔ Handler ↔ TailContext)、Inbound 事件的正向传播 vs Outbound 事件的反向传播、ChannelHandlerContext 的传播控制(fireChannelRead/write)、Handler 的共享(@Sharable)与线程安全、异常传播机制
0606 编解码器——LengthFieldBasedFrameDecoder 与自定义协议TCP 粘包/拆包的本质与四种解决方案(定长/分隔符/长度字段/自定义协议)、ByteToMessageDecoder 的累积缓冲区设计、LengthFieldBasedFrameDecoder 的五个参数详解、MessageToByteEncoder 的编码流程、自定义二进制协议的设计与实现
0707 Netty 内存管理——jemalloc 算法在 Java 中的实现PoolArena 的内存分级(Tiny/Small/Normal/Huge)、PoolChunk 的伙伴算法(完全二叉树管理 16MB 内存块)、PoolSubpage 的位图管理小内存、PoolThreadCache 的线程本地缓存、内存泄漏检测(ResourceLeakDetector 的四个级别)
0808 Netty 高性能之道——FastThreadLocal、HashedWheelTimer 与无锁队列FastThreadLocal 的数组直接索引 vs ThreadLocal 的线性探测、HashedWheelTimer 时间轮的刻度推进与任务调度、MpscQueue(多生产者单消费者无锁队列)的 CAS 入队、Recycler 对象池的轻量级复用
0909 基于 Netty 的 RPC 框架设计——序列化、路由与连接管理RPC 调用的完整链路(代理→序列化→传输→反序列化→调用→响应)、序列化方案对比(Protobuf/Kryo/Hessian/JSON)、请求-响应的 ID 关联(CompletableFuture 映射表)、连接池管理与心跳保活、优雅停机
1010 Netty 在开源项目中的应用——Dubbo、RocketMQ、ElasticsearchDubbo 的 NettyServer/NettyClient 与编解码层、RocketMQ 的 NettyRemotingServer 与请求处理器分发、Elasticsearch 的 Netty4Transport 与 HTTP 层、各框架使用 Netty 的共性模式与差异化定制

推荐阅读路径

基础路径:01 → 02 → 03 → 05 → 06

性能与内存路径:04 → 07 → 08

实战与生态路径:09 → 10

前置知识


关联专栏