第1章 RoketMQ综述 1: j, q" H2 W+ L3 J9 w6 i% A
1.1 什么是消息队列 25 U/ U0 j$ U1 y4 @$ I
1.2 为什么需要消息队列 4+ N* x1 q! C& S- _! R
1.2.1 削峰填谷 4
5 m. l$ k$ z v& y8 Y7 P' J1.2.2 程序间解耦 5; b' z) f1 ]3 q3 J1 D
1.2.3 异步处理 6* }$ G" u/ W0 t1 s
1.2.4 数据的终一致性 6
9 A! Y7 S, \ f7 V: r) \% P3 z# n1 a1.3 常见消息队列 7
! G4 [1 B6 p% `1 Z% @1.4 RocketMQ的发展史与未来 95 R& {; d% w8 s( _5 L0 |
1.4.1 RocketMQ的发展史 94 {; d% _9 ?: @5 D8 j
1.4.2 Apache RocketMQ的未来 11
# {2 P6 `( ?1 U! I E6 G: Y第2章 RocketMQ的生产者原理和实践 14
) p( \& j: C8 t8 J" N. u2.1 生产者原理 15
3 g q# B. D* d/ c. ~2.1.1 生产者概述 15
6 E$ `: a8 Z H( |: x2.1.2 消息结构和消息类型 16. Z- {0 `) q' D* S
2.1.3 生产者高可用 17
& F. X8 |5 z9 R% F/ }0 w" q2.2 生产者启动流程 22
! {% D* Y( v0 ]3 K- s" A$ z: V2.3 消息发送流程 32
2 J* v- m5 c4 A2 F2.4 发送消息实践 36
& I$ j5 {. ?7 w2.4.1 发送普通消息 36
9 r% }( D4 ]) @% h- o1 H2.4.2 发送顺序消息 37
- t t6 g" d( _+ |! Y5 u, c1 W/ Q. @ }2.4.3 发送延迟消息 37
; u8 f" ^0 o& L9 t2.4.4 发送事务消息 38
$ r. w" F C9 ]3 _9 V) _0 ]3 m* C0 Y2.4.5 发送单向消息 40
8 p6 {7 q% ~: G6 u: K' @- y2.4.6 批量消息发送 41
0 g$ v6 X! Y8 A% A2.5 生产者实践总结 42
2 _2 c/ Z) W s0 h& l2 E第3章 RocketMQ的消费流程和实践 44
8 K) k- Q* b1 }4 \8 ~3.1 消费者概述 45; W g/ X, w' m! @! H
3.1.1 消费流程 45
4 F0 v) A: V$ h8 o& [3 w' w- ?3.1.2 消费模式 462 \) O# ?. s- @, \
3.1.3 可靠消费 48
- n* V* @. m" x3.2 消费者启动机制 50
/ q8 u: H& B v, J) H3.3 消费者的Rebalance机制 58
: ?$ q- `* H7 ]& y0 Y, S; f$ b& b6 _0 P3.4 消费进度保存机制 65% w8 U" A' z1 c/ j, z1 u C8 M
3.5 消费方式 70
0 `! \) T' E, G. d0 q3.5.1 Pull消费流程 71
- s1 v. M3 j* t* q/ O/ ?8 o3 P3 }3.5.2 Push消费流程 72* y5 i& D. R7 D( }
3.6 消息过滤 869 B3 |! T9 U/ Y/ f) _/ {
3.6.1 为什么要设计过滤功能 86" F8 |* w3 A- m
3.6.2 RocketMQ支持消息过滤 868 I' k: K! ^1 p, R E
3.7 消费者实践总结 912 y" L' a% ]# i2 P$ _
第4章 RocketMQ架构和部署实践 94! l6 Z2 X, d1 j# A7 O% O& w- p$ U+ j
4.1 RocketMQ架构 952 }; `' x! ]/ r3 s- Y: R
4.2 常用的部署拓扑和部署实践 969 F& \$ b9 G" v
4.2.1 常用的拓扑图 96
; F3 T6 t; \. p4.2.2 同步复制、异步复制和同步刷盘、异步刷盘 974 J0 I5 p3 G& I( [: K: W; A
4.2.3 部署实践 989 L n! e$ _! s- l' z% P* ]5 R
第5章 Namesrv 102
, \1 O" L, Y; o5.1 Namesrv概述 103 } H% U0 G, [0 V: B2 v
5.1.1 什么是Namesrv 1036 M+ {. ~$ n9 k
5.1.2 Namesrv核心数据结构和API 103
- Z0 \' O* t/ M5 \3 S7 V* m9 C5.1.3 Namesrv和Zookeeper 105
) x s5 m6 @. M, F' u5.2 Namesrv架构 106
3 m8 d- E2 U6 L8 [5 G5 b9 E5.2.1 Namesrv组件 1063 j& Y; _0 y+ X& a
5.2.2 Namesrv启动流程 1082 r+ O) n/ Q7 m9 ?/ S# V
5.2.3 Namesrv停止流程 1102 P; _2 ?2 }! x8 y) F
5.3 RocketMQ的路由原理 111+ ]3 i7 d% j. K( @0 e! o
5.3.1 路由注册 111' @$ U( n4 v6 A0 X% r
5.3.2 路由剔除 112
t8 ]& Q- O0 t+ @第6章 Broker存储机制 1145 f' h- L: G* \& N$ M* t3 n; l: I
6.1 Broker概述 115; k+ t8 S4 O% {
6.1.1 什么是Broker 115
: f# ?- f. U9 y) x6.1.2 Broker存储目录结构 116; w# v, l% n+ ?7 V
6.1.3 Broker启动和停止流程 117
9 }4 [! f. K' m1 l2 Z" P$ p2 |6.2 Broker存储机制 1250 |# g! I! V) y& v4 U# J
6.2.1 Broker消息存储结构 126- v1 m) [7 o1 x* j: B
6.2.2 Broker消息存储机制 130$ ^6 e& U- ?+ y2 ]4 h2 `2 L
6.2.3 Broker读写分离机制 150
' M5 h& Q, W) F6.3 Broker CommitLog索引机制 155
& V$ s6 T* S: v5 |8 t6 C# }+ z6.3.1 索引的数据结构 155
/ _5 I# B0 ~( I' h6.3.2 索引的构建过程 158+ R& O3 R. u/ T/ T
6.3.3 索引如何使用 159
+ H6 M0 M: O9 p6 t6.4 Broker过期文件删除机制 162
" D; B& m1 t. E* w0 l& T6.4.1 CommitLog文件的删除过程 162/ V; n; }1 {( E- P" W* n
6.4.2 Consume Queue、Index File文件的删除过程 166
' u( i9 k% m5 v; B4 g& j6.5 Broker主从同步机制 167
8 }* b; _# B" [; k6.5.1 主从同步概述 168$ e2 Z3 L$ K3 p3 i6 u6 w$ R
6.5.2 主从同步流程 169' o* H7 U9 I# |
6.6 Broker的关机恢复机制 174. X3 c% }6 X+ C' V8 U% ?
6.6.1 Broker关机恢复概述 174# X# y6 M9 }; }. H' f4 [; p
6.6.2 Broker关机恢复流程 177
+ k! U6 j- W5 [+ E" ^第7章 RocketMQ特性——事务消息与延迟消息机制 182
8 N! N, R- {& E+ ~; n \+ d7.1 事务消息概述 183: V- `( q+ {* V8 g* r- \# t
7.2 事务消息机制 184" q4 C" p( g4 y- A8 [5 n
7.2.1 生产者发送事务消息和执行本地事务 184
6 w6 X( r7 F# v; U1 j/ C( d% |7.2.2 Broker存储事务消息 188+ @! [8 V1 z' m+ A8 G' g) r
7.2.3 Broker回查事务消息 191
, M# S, w- m, r$ q7.2.4 Broker提交或回滚事务消息 1973 f5 a; s: B3 S" d6 J- r
7.3 延迟消息概述 201
- a+ |) e& B& G* t" [0 ^6 f7.4 延迟消息机制 203
# e8 S8 O; Z$ H7.4.1 延迟消息存储机制 203
4 u5 K J2 O# j7 @# l1 f t8 S4 t7.4.2 延迟消息投递机制 205 c2 P3 E7 k2 d- e" T/ A
第8章 RocketMQ源代码阅读 208
4 U4 U4 g" H7 h9 F! k4 |3 W8.1 RocketMQ源代码结构概述 209
" H1 G) `/ s6 s8.2 RocketMQ源代码编译 212; `4 e0 [1 p; p% H9 L8 ^
8.3 如何阅读源代码 214
$ P: W. q, o' k7 Q! N8 M8.4 源代码阅读范例:通过消息id查询消息 2169 e. @7 M5 P& G, D
第9章 RocketMQ企业实践 224% e1 q5 i5 M$ \" W
9.1 RocketMQ落地概述 2251 Z2 d8 V. r' J7 e8 C: U
9.1.1 为什么选择RocketMQ 225
0 E# m0 `" K; r+ j& @! y' n6 u, E8 F. U9.1.2 如何做RocketMQ的集群管理 226
6 W) H- D, P! r% l7 n5 l' M9.2 RocketMQ集群管理 230
6 I6 P: P. R0 D, p, i$ o2 c9.2.1 Topic管理 230 java8.com: `+ K5 f# q1 x: p7 L( U
9.2.2 消费者管理 235
2 o3 w. q- [ z* X4 v9.3 RocketMQ集群监控和报警 240 @8 T8 N8 M4 K" E( Y
9.3.1 监控和报警架构 2406 E% C' j3 Q, {& q7 U
9.3.2 基于Grafana监控 242
/ P* H+ ? m0 q5 N2 M% q9.3.3 基于Prometheus的报警 243
. `" c) |: `$ J* }; b" W% N9.4 RocketMQ集群迁移 2442 K' m2 E- D( b) v
9.5 RocketMQ测试环境实践 2457 L$ b! l3 x. ?( w
9.6 RocketMQ接入实践 247
( j* z- r! Z8 b% a9.6.1 Spring接入RocketMQ 247
& ^2 l* B2 Y5 [+ r% x' ^8 Z9.6.2 Python接入RocketMQ 249+ @( }. X# T F8 K# }
附录 2523 B( [5 F- m/ J. `4 ?
% y/ M; \8 I! V7 h
- f x& R$ {/ ^9 g; S