如果你已经写过几个 Netty 的 demo,能跑通服务端和客户端,但一遇到线上问题就不知道从哪儿查,这门课值得花时间。它不讲怎么用 Netty 搭一个能跑的服务,而是带你顺着源码走一遍:一个连接从进入端口到被业务线程处理,中间到底经过了哪些对象、哪些线程、哪些队列。

它解决的是「会用但说不清」的问题

大多数人对 Netty 的认知停在几个名词上:BossGroup、WorkerGroup、ChannelHandler、ByteBuf。面试能背,写业务也够用,但真出问题时很被动。比如连接建立后迟迟不触发读事件,是线程被占住了还是注册没成功?内存一直涨,是 ByteBuf 没释放还是积压了写任务?这些问题靠猜和试错效率很低。

这门课把几个关键链路拆开讲:服务端启动时 Channel 怎么创建、怎么初始化、怎么注册到 selector;NioEventLoop 内部的事件循环和任务队列如何协作;新连接接入后怎样分配线程;pipeline 上的 handler 是怎么被逐个调用的;ByteBuf 的引用计数和内存分配又是什么规则。学完之后,你排查问题的顺序会从「改参数试试」变成「先定位在哪个环节」。

适合什么基础,先看哪几块

前提是你能读懂 Java 代码,熟悉 NIO 的 Channel、Selector、Buffer 这几个概念,最好自己写过 Netty 的服务端和客户端。如果完全没用过 Netty,直接看源码会非常吃力,建议先补一段使用层面的练习再回来。

看的时候不建议从第一章顺着往下。可以先看基本组件那一部分,把 Netty 对 socket 的抽象和几个核心组件的职责对应起来,建立一张粗略的图;然后看服务端启动,重点是 Channel 的创建、初始化和注册这三步;接着看 NioEventLoop,理解线程模型和任务队列;最后再看新连接接入、pipeline 和 ByteBuf。ByteBuf 部分可以单独抽出来反复看,它和内存问题关系最直接,也最容易被忽略。

学完能独立做什么,资料怎么配合练习

比较现实的目标是:能独立读懂一段 Netty 相关的堆栈,判断问题出在启动阶段、事件循环阶段还是 handler 处理阶段;能说清一个连接从接入到读写的完整路径;遇到 ByteBuf 相关的内存问题时,知道去看引用计数和释放时机,而不是盲目加内存。这些能力对做中间件、网关、长连接服务的岗位是实打实的加分项。

配套资料建议这样用:先自己写一个最小服务端,打断点跟着走一遍启动流程,把课里讲的步骤和自己的代码对上;再针对 NioEventLoop 和 pipeline 各写一个小实验,比如在 handler 里做耗时操作观察线程行为,或者手动触发读写看事件怎么流转。看源码的过程中不要只跟着视频点头,每看完一段就回到自己的代码里找对应位置,找不到说明还没真正理解。这门课的价值不在看完,而在你能不能把源码里的那条路径复述出来。

课程介绍

Java读源码之Netty深入剖析 属于体系课方向的教程资源,围绕 Java 相关内容整理。

内容涵盖:Netty基本组件、Netty服务端启动、NioEventLoop、新连接接入、pipeline、ByteBuf 等主题。

适合希望系统学习 Java 、需要完整资料对照的同学。

下方为完整资料与目录,可先看目录判断是否符合需要。

第1章 课程介绍
1-1 Netty深入剖析 (11:26)
第2章 Netty基本组件
2-1 一个简单的socket例子 (06:17)
2-2 Netty对于socket的抽象 (05:05)
2-3 Netty组件简单介绍 (12:40)
第3章 Netty服务端启动
3-1 服务端启动demo (03:43)
3-2 服务端Channel的创建 (12:20)
3-3 服务端Channel的初始化 (08:07)
3-4 注册selector (07:27)
3-5 服务端口的绑定 (08:16)
3-6 服务端启动总结 (01:05)
第4章 NioEventLoop
4-1 NioEventLoop概述 (01:57)
4-2 NioEventLoop创建概述 (03:20)
4-3 ThreadPerTaskThread (06:08)
4-4 创建NioEventLoop线程 (03:20)
4-5 创建线程选择器 (05:36)
4-6 NioEventLoop的启动 (07:47)
4-7 NioEventLoop执行概述 (03:14)
4-8 检测IO事件 (08:59)
4-9 处理IO事件 (10:44)
4-10 -reactor线程任务的执行 (10:39)
4-11 -NioEventLoop总结 (03:31)
第5章 新连接接入
5-1 新连接接入概述 (01:42)
5-2 新连接检测 (07:46)
5-3 NioSocketChannel的创建 (08:07)
5-4 Channel的分类 (10:53)
5-5 新连接NioEventLoop的分配和selector注册 (09:58)
5-6 NioSocketChannel读事件的注册 (06:22)
5-7 新连接接入总结 (02:03)
第6章 pipeline
6-1 pipeline概述 (01:31)
6-2 pipeline初始化 (12:08)
6-3 添加ChannelHandler (12:57)
6-4 删除ChannelHandler (07:03)
6-5 inBound事件的传播 (20:40)
6-6 outBound事件的传播 (15:17)
6-7 异常的传播 (15:25)
6-8 pipeline总结.mp4 (04:46)
第7章 ByteBuf
7-1 内存分配概述 (02:22)
7-2 ByteBuf结构以及重要api (06:38)
7-3 ByteBuf分类 (15:54)
7-4 内存分配器ByteBufAllocator分析 (08:39)
7-5 UnPooledByteBufAllocator分析 (11:09)
7-6 PooledByteBufAllocator概述 (13:28)
7-7 directArena分配direct内存的流程 (07:26)
7-8 内存规格的介绍 (04:08)
7-9 缓存数据结构 (10:55)
7-10 命中缓存的分配流程 (11:40)
7-11 arena、chunk、page、subpage概念 (07:37)
7-12 page 级别内存分配 (18:15)
7-13 subpage 级别的内存分配 (12:29)
7-14 ByteBuf的回收 (09:25)
7-15 总结 (03:39)
第8章 Netty解码
8-1 Netty解码概述 (01:53)
8-2 抽象解码器ByteToMessageDecoder (11:30)
8-3 基于固定长度解码器分析 (04:03)
8-4 行解码器分析 (12:02)
8-5 基于分隔符解码器分析 (12:14)
8-6 基于长度域解码器参数分析 (11:11)
8-7 基于长度域解码器分析 (16:27)
8-8 解码器总结 (04:45)
第9章 Netty编码及writeAndFlush()
9-1 Netty编码概述 (03:45)
9-2 writeAndFlush()抽象步骤 (06:29)
9-3 抽象编码器MessageToByteEncoder (11:50)
9-4 写buffer队列 (12:33)
9-5 刷新buffer队列 (13:19)
9-6 总结 (03:19)
第10章 Netty性能优化工具类解析
10-1 性能优化工具类概述 (01:27)
10-2 FastThreadLocal的使用 (04:18)
10-3 FastThreadLocal的创建和get()实现 (17:18)
10-4 FastThreadLocal的set实现 (04:12)
10-5 Recycler的使用 (04:21)
10-6 Recycler的创建 (08:09)
10-7 从Recycler中获取对象 (06:03)
10-8 同线程回收对象 (04:31)
10-9 异线程回收对象 (12:51)
10-10 异线程收割对象 (16:07)
10-11 性能优化工具类总结 (03:50)
第11章 Netty设计模式应用
11-1 单例模式在Netty里面的应用 (04:50)
11-2 策略模式在Netty里面的应用 (03:34)
11-3 装饰者模式在Netty里面的应用 (07:19)
11-4 观察者模式在Netty里面的应用 (15:44)
11-5 迭代器模式在Netty里面的应用 (05:35)
11-6 责任链模式在Netty里面的应用 (08:44)
第12章 Netty高性能并发调优
12-1 性能调优概述 (00:25)
12-2 单机百万连接模拟与瓶颈 (08:14)
12-3 单机百万连接调优过程 (20:49)
12-4 Netty应用级别性能瓶颈 (06:18)
12-5 Netty应用级别性能调优过程 (16:39)
第13章 课程总结
13-1 课程回顾和总结 (07:36)

课程目录

第1章 课程介绍
第2章 Netty基本组件
第3章 Netty服务端启动
第4章 NioEventLoop
第5章 新连接接入
第6章 pipeline
第7章 ByteBuf
第8章 Netty解码
第9章 Netty编码及writeAndFlush()
第10章 Netty性能优化工具类解析
第11章 Netty设计模式应用
第12章 Netty高性能并发调优
第13章 课程总结