0.Netty学习路线
学习路线
共 18 篇,分四个阶段:
- 阶段一(1-3):为什么用 Netty,整体架构是什么,怎么启动
- 阶段二(4-7):四大核心组件:Channel、EventLoop、Pipeline、Handler
- 阶段三(8-11):数据处理:ByteBuf、零拷贝、自定义协议、数据发送
- 阶段四(12-16):底层原理与性能优化
- 实战(17-18):HttpServer 和 WebSocket 编码实战
阶段一:入门基础
搞清楚 Netty 解决了什么问题,整体长什么样,怎么把服务跑起来。
- 1.为什么选择Netty — NIO 多路复用、Reactor 模型、零拷贝,Netty 的核心优势
- 2.Netty整体架构 — 三层架构:网络层 → 事件调度层 → 服务编排层,代码包结构
- 3.Netty全局入口Bootstrap — Bootstrap vs ServerBootstrap,Boss/Worker 分工,服务端启动代码
阶段二:四大核心组件
Netty 的骨架,必须搞透。
- 4.Netty的Channel — Channel 类型、生命周期回调、常用参数配置
- 5.Netty的EventLoop — EventLoopGroup/EventLoop 关系,Reactor 三种线程模型,无锁串行化,任务队列
- 6.Netty的ChannelPipeline — 双向链表结构,HeadContext/TailContext,事件传播方向
- 7.Netty的ChannelHandler与Context — Handler vs Context 的区别,Inbound/Outbound 回调,异常传播
阶段三:数据处理
数据怎么读、怎么写、怎么编解码。
- 8.Netty的ByteBuf — ByteBuf 结构,读写指针,池化与非池化,引用计数
- 9.Netty的零拷贝 — DirectBuffer、CompositeByteBuf、slice、FileRegion,五种零拷贝技术
- 10.Netty自定义协议实现 — 协议头设计,编解码器类型,粘包拆包处理,LengthFieldBasedFrameDecoder
- 11.Netty的WriteAndFlush — write/flush 分离,ChannelOutboundBuffer 三指针,高低水位线,doWrite 自旋
阶段四:底层原理与性能优化
深入理解 Netty 为什么快。
- 12.Netty如何解决空轮询的 — JDK epoll 空轮询 bug,selectCnt 计数,Selector 重建机制
- 13.Netty的HashedWheelTimer — 时间轮原理,O(1) 任务调度,Kafka 层级时间轮优化
- 14.Netty的FastThreadLocal — FastThreadLocal vs ThreadLocal,性能差异,使用场景
- 15.Netty的对象池Recycler — 对象池原理,Stack/WeakOrderQueue,多线程回收机制
- 16.JCTools并发工具 — Mpsc/Spsc/Spmc/Mpmc 队列,Cache Line 填充,伪共享解决
实战
跑起来,看看实际代码长什么样。
- 17.Netty-HttpServer编码实战 — HttpServerCodec、HttpObjectAggregator,处理 HTTP 请求
- 18.Netty-WebSocket编码实战 — WebSocketServerProtocolHandler,握手升级,帧数据处理