第1章 Netty基础篇 12 _+ h$ A7 ~5 u5 }& j3 q2 v
1.1 Netty概述 13 w9 v# v6 ~+ V! j! ?( K8 Q
1.2 Netty服务端构建 21 E7 R: L* U H4 k' g
1.3 Netty客户端的运用 6; J) s) N: f5 D3 l0 \7 P/ q
1.3.1 Java多线程交互 6
/ i4 K% z) Y" {) E1.3.2 Netty客户端与服务端短连接 12
- h+ M O% i, J1 {" f1.3.3 Netty客户端与服务端长连接 18" q- B+ Y- Q% s+ Q- ]2 @9 Z5 o
1.4 小结 22
) F) _) N- }9 k4 ]( ~1 N. w4 f0 t
第2章 原理部分 23
8 \) e; n, W% J3 B+ K- s, L- ?2.1 多路复用器 234 o3 x3 j3 Z1 E/ l: e$ r
2.1.1 NIO与BIO的区别 24
' }0 k8 d7 w# ]# s8 z3 z2.1.2 epoll模型与select模型的区别 25# y& m7 | q+ d: z
2.2 Netty线程模型 278 W& f: ]* G4 p; @
2.3 编码和解码 28
0 x0 ]2 L: p" j2.4 序列化 30# n& y/ g8 \ }& D" d% A3 y
2.4.1 Protobuf序列化 30
$ p) C4 A! R6 n, {. _# E q) e/ W2.4.2 Kryo序列化 31
# h! a( z8 h( {/ E) L' ]5 e. y1 W6 i2.5 零拷贝 33, p4 X& J5 y+ u- r5 A
2.6 背压 34
% N& E. W5 p4 N2.6.1 TCP窗口 34
# P% P5 R/ \0 Z; ?+ S2.6.2 Flink实时计算引擎的背压原理 365 M8 ~0 y" Z( B+ U( J
2.7 小结 39# U2 q9 z& S4 d i1 N; v
) c/ F: G/ m% s; f第3章 分布式RPC 40
! Z: Z- g8 a. T6 u3.1 Netty整合Spring 41! ^& V; a0 e# f- b; U/ X) F- ^1 C
3.2 采用Netty实现一套RPC框架 43
0 o$ p1 q( V1 Y3 c m1 C8 J/ `. i$ b' Y7 d3.3 分布式RPC的构建 52, ^* ?* R" }# w! Q3 O
3.3.1 服务注册与发现 530 @! S4 D( E! S8 ]- c; _
3.3.2 动态代理 68
& k8 i1 Q0 d0 M* [6 x: F7 c$ `( }0 u) m. T
第4章 Netty核心组件源码剖析 816 j7 K2 l A8 T) R, g% @- G4 |, O0 B% }
4.1 NioEventLoopGroup源码剖析 823 m+ H1 a; K9 c$ K4 F2 G! Z. C
4.2 NioEventLoop源码剖析 861 V, s; y' _6 |2 J$ R) c
4.2.1 NioEventLoop开启Selector 87
! i0 r% x+ X* P$ c4.2.2 NioEventLoop的run()方法解读 89
8 n* w& C \6 j/ s, a p: b9 k+ S1 [4.2.3 NioEventLoop 重新构建Selector和Channel的注册 98/ m% }% I( E. }2 o x
4.3 Channel源码剖析 100
$ h/ V7 y/ H+ N o% K3 P( X/ \4.3.1 AbstractChannel源码剖析 101
; u# [$ M3 f( H+ q- l4.3.2 AbstractNioChannel源码剖析 102
, K. g& I" k! ] f0 ]% k4.3.3 AbstractNioByteChannel源码剖析 107
9 H0 X( q& V: Y8 ]4.3.4 AbstractNioMessageChannel源码剖析 112
' m1 e$ [, D" U- ^0 f% f4.3.5 NioSocketChannel源码剖析 116; f" m" B0 x' e( H+ S
4.3.6 NioServerSocketChannel源码剖析 119! v0 q1 R; }' x' y" c- M+ |
4.4 Netty缓冲区ByteBuf源码剖析 120/ a; U" H0 [1 l" H
4.4.1 AbstractByteBuf源码剖析 122$ x: C. v2 O3 {, ~0 {' o
4.4.2 AbstractReferenceCountedByteBuf源码剖析 1278 M5 \7 l% @0 }
4.4.3 ReferenceCountUpdater源码剖析 129$ s1 I* P2 e, X: k% V* c& [! L
4.4.4 CompositeByteBuf源码剖析 134' z0 S3 M, \5 `9 H
4.4.5 PooledByteBuf源码剖析 145
9 _& ^4 z1 v: s$ Z* J( X' u f4.5 Netty内存泄漏检测机制源码剖析 151
; {% h' C6 d: h Q& A4.5.1 内存泄漏检测原理 1523 M4 k# X0 Q. u
4.5.2 内存泄漏器ResourceLeakDetector源码剖析 153
4 k1 D( w6 T! D; t5 z4.6 小结 1645 N* G2 O7 \3 Y3 ~1 M
% k/ N g3 ]+ B/ P) Y
第5章 Netty读/写请求源码剖析 165
1 d" z/ U3 @1 R; \5.1 ServerBootstrap启动过程剖析 165* u# _8 z3 y* L* _0 ?) |5 y6 A
5.2 Netty对I/O就绪事件的处理 172
! q# X6 q' [ c5.2.1 NioEventLoop就绪处理之OP_ACCEPT 1729 K* K3 u6 |! f2 X, g. D6 N# f1 V2 k
5.2.2 NioEventLoop就绪处理之OP_READ(一) 175
. ]/ p) m3 P4 B0 @, D. U% j& n5.2.3 NioEventLoop就绪处理之OP_READ(二) 1826 b/ ?3 s; p" `. |
3 t: Y4 U6 x# Q( N第6章 Netty内存管理 195
/ Q1 |% [: D9 l9 P( J6.1 Netty内存管理策略介绍 1959 k C! f+ |8 M {! v; d
6.2 PoolChunk内存分配 197* `+ i- I4 ?* ]) a4 A# u
6.2.1 PoolChunk分配大于或等于8KB的内存 197
! v; `8 M& N# b& G# O4 K6 n6.2.2 PoolChunk分配小于8KB的内存 201
# Y. f8 x S" V' s- ~3 v* ~6.3 PoolSubpage内存分配与释放 205
% V4 z% _+ Q: h6.4 PoolArena内存管理 214/ F! ]" [ h# v- ?9 U' |7 y
6.5 RecvByteBufAllocator内存分配计算 223
0 ^2 i5 |! o! C. N4 A- U6.6 小结 227
% a7 r! j+ @3 z$ q0 n# d, l/ G8 u% [; `1 D ^
第7章 Netty时间轮高级应用 228& p# E i; S6 M0 z# Z& D
7.1 Netty时间轮的解读 2296 ?5 B" U+ n7 k8 A
7.1.1 时间轮源码剖析之初始化构建 230% @# G( i- A6 V* F2 I6 J/ d- z
7.1.2 时间轮源码剖析之Worker启动线程 236. E' t9 Z; E7 ^4 y& m
7.2 Netty时间轮改造方案制订 2394 r c, A1 R, O1 V$ d
7.3 时间轮高级应用之架构设计 241
% @" p" U+ h1 Q% t1 {7.4 时间轮高级应用之实战10亿级任务 2438 V" F5 j, [& z# _: F- V' L
7.5 小结 245
9 ~# V- [/ L) @" a0 D+ @
1 K5 \7 B: M% ?4 @第8章 问题分析与性能调优 246
4 h7 N" J3 z# y) K9 `8.1 Netty服务在Linux服务器上的部署 246) Z) s- ]- S1 I J2 M1 g
8.2 Netty服务模拟秒杀压测 2551 L4 j% l0 D5 S! C) e0 V/ S
8.3 常见生产问题分析 264
4 t& \: M/ I5 c$ Y8.4 性能调优 267' g4 g- K6 z3 N; N" z, h
8.5 小结 270