第1章 Kafka简介 1
( V j+ {& [# M' i2 t4 s1.1 Kafka诞生的背景 1' x% g) I9 h# m* }8 E
1.2 Kafka在LinkedIn内部的应用 35 ^% P! w" j: Z9 w
1.3 Kafka的主要设计目标 4
5 m( }- o- j% H$ ?7 t1 g1.4 为什么使用消息系统 4
% g- V0 M z: H& u4 C; Y) b1.5 本章小结 5
9 l' r1 Q) s; ?& O g) Y9 ~" c第2章 Kafka的架构 6+ e- R; _4 T/ O' _
2.1 Kafka的基本组成 62 v2 j5 Y/ C( c. m5 M$ ^
2.2 Kafka的拓扑结构 86 o0 z+ f& `0 l1 W2 _: m8 A; I
2.3 Kafka内部的通信协议 9
5 X# K0 S. Q3 `* h8 u2.4 本章小结 12) f. A) w$ r/ u
第3章 Broker概述 13- J- W9 s" j% r0 b; U. X- \
3.1 Broker的启动 13
# i+ Z" ^1 a" Q/ Z- X" d3.2 Broker内部的模块组成 15' b$ }, @/ E0 ], s
3.3 本章小结 18
, G3 Q" s9 Q! D8 G第4章 Broker的基本模块 19. W2 M; U9 c7 ]7 k* J G
4.1 SocketServer 19
" N# }. q! s* C7 }% |. e1 O4.2 KafkaRequestHandlerPool 25 E' r6 @$ ~9 o8 p" \$ V! W
4.3 KafkaApis 27+ v) D0 L8 ~2 Y/ d
4.3.1 LogManager 27. [ ~: \- ~# [- r; ~& R9 n
4.3.2 ReplicaManager 37- m5 y7 [, M& X& u: U+ Z
4.3.3 OffsetManager 47' s2 p; T4 w7 |/ Y# y
4.3.4 KafkaScheduler 51
4 [' _% a& q" \* p6 U) _4.3.5 KafkaApis 52& C" b* E- b- `5 _
4.4 KafkaHealthcheck 81% C4 |) S- G" I, ? e
4.5 TopicConf?igManager 830 G) b. p7 @. U3 D* G
4.6 本章小结 85
5 ?* |3 e1 L* g5 q; |' y* F9 x第5章 Broker的控制管理模块 86
, y4 m0 I. g6 c. i, X1 I0 H! v5.1 KafkaController的选举策略 86( p; C {9 e" Z6 G3 S
5.2 KafkaController的初始化 91; G/ {: S- |) |4 P, |
5.2.1 Leader状态下KafkaController的初始化 91
9 K8 c; M# T; p; Q/ Z' g5.2.2 Standby状态下KafkaController的初始化 94! x9 D u+ i5 @+ ~
5.3 Topic的分区状态转换机制 959 r/ A4 S0 L6 B4 ?9 d+ w
5.3.1 分区状态的分类 95
2 F9 A9 n$ E ^8 j( ]5.3.2 分区状态的转换 96
( U l- D6 H, O$ Y" ^5.3.3 PartitionStateMachine模块的启动 102
* A0 e. Q, E9 |" L0 ]5.4 Topic分区的领导者副本选举策略 103
& M% c' c6 A! `; V5.4.1 NoOpLeaderSelector 104: q6 C2 n; q. T; Z& y- d
5.4.2 Off?linePartitionLeaderSelector 104- O! y) R+ g; r! R
5.4.3 ReassignedPartitionLeader-Selector 1061 A' O8 L+ x+ r6 q' A! A
5.4.4 PreferredReplicaPartition-LeaderSelector 107! h3 P8 w8 \* I: U
5.4.5 ControlledShutdownLeader-Selector 108
% }* m7 R" E) _5.5 Topic分区的副本状态转换机制 109$ o8 _& e' _+ N
5.5.1 副本状态的分类 110; M( }6 @, J$ Q, E; l
5.5.2 副本状态的转换 111& H* N8 \+ K$ {0 T
5.5.3 ReplicaStateMachine模块的启动 117( F/ n, O8 `& \( R& x& e# y( S+ Q
5.6 KafkaController内部的监听器 118
. O) C- p( _. V- k; l5.6.1 TopicChangeListener 1195 Q! r' u0 B" r/ U3 j2 {2 q' Z* a
5.6.2 AddPartitionsListener 1219 g* m1 G8 X: H$ A" y. g2 r; l
5.6.3 PartitionsReassignedListener 122% U8 r# V8 T" g" k" f
5.6.4 ReassignedPartitionsIsr-ChangeListener 128
8 h( N* ^ d+ i) c5.6.5 PreferredReplicaElection-Listener 130. r; f% U( x( J
5.6.6 BrokerChangeListener 132& R! k `& }5 r- ]& O. L
5.6.7 DeleteTopicsListener 135
1 K& r1 L2 ~4 ^( N' n g7 f( I5.7 Kafka集群的负载均衡流程 136
: y& I* B/ n) c& t3 W' [! [) x L" j5.8 Kafka集群的Topic删除流程 140, j9 Z S5 P q) W, G7 L
5.9 KafkaController的通信模块 146
: s$ X, S9 |: X* [; `, z- ?5.10 本章小结 1502 {% t$ e# w% D) @. u7 a, [7 b, J
第6章 Topic的管理工具 151
1 s ]# U/ n, `( |6.1 kafka-topics.sh 151
; t- c. Z' k, i9 W6.1.1 createTopic 153
3 M2 B3 _' A: ~) ]% Z- b6.1.2 alterTopic 156
' M; m3 B9 r5 q T6.1.3 listTopics 160 L& J m n% N
6.1.4 describeTopic 161! @: I% n7 c8 n1 U4 v2 P
6.1.5 deleteTopic 163 @) ~6 ?% r. O6 P+ J! X' V( q- W
6.2 kafka-reassign-partitions.sh 164
( I/ U R, g: L/ y) y& C4 q, x6.2.1 generateAssignment 166
" o8 D! @& N! D6.2.2 executeAssignment 167
. a [( S. W/ @* m% E6.2.3 verifyAssignment 170' X+ R( \% D. Y0 v! q: i0 S
6.3 kafka-preferred-replica-election.sh 172
! [6 I$ v0 _; W* D# \6.4 本章小结 175
& t# f" q7 }& g, P q第7章 生产者 176% V! @ ?, T: m0 D
7.1 设计原则 176
) S# C6 Z5 \, I- C7.2 示例代码 176
" n! p; U L2 ]) m3 h7.3 模块组成 180/ u3 S% m- `7 I' ?
7.3.1 ProducerSendThread 180
' q3 {& e' S+ w5 r7.3.2 ProducerPool 182
! R5 Z6 K( a" ?5 w7.3.3 DefaultEventHandler 184: i$ P4 N) t! R4 Q
7.4 发送模式 1896 `1 F4 A6 R2 ]$ f
7.4.1 同步模式 189
4 j; G! [: Y& j& R7 p. R7.4.2 异步模式 189$ ?$ ]3 i" {' H, t, I" h
7.5 本章小结 192' Y( U8 R& ]7 Q6 o/ N4 w
第8章 消费者 193
[0 J3 @' i/ H% G8.1 简单消费者 193
3 c9 \2 U0 w1 y$ i Z' b6 O( T8.1.1 设计原则 193
7 _+ A% q# W, e8.1.2 消费者流程 194
; H: L8 G1 v% N) F+ a8.1.3 示例代码 195
5 ^( l8 J, }7 |5 R8.1.4 原理解析 200
1 A$ ]1 T, {9 A1 u. y# H8.2 高级消费者 202
5 _$ w \ o/ t+ h/ l8.2.1 设计原则 202
& k& s& i% X) u8.2.2 消费者流程 2032 ~* L6 i$ ?+ o0 c0 M4 h7 H
8.2.3 示例代码 204
8 Q" K7 z) M3 V! n8 c' k( z+ x6 p8.2.4 原理解析 205
. H0 S! a; F! G( L8.3 本章小结 2274 g9 k* E/ g2 L1 B9 j
第9章 Kafka的典型应用 228( f& t7 b' s! ~* o5 e
9.1 Kafka和Storm的集成 228 W( w R' h2 a' P/ u+ a( }! Q
9.1.1 Storm简介 228
# v; \* e& ^( J1 s9.1.2 示例代码 230
$ ~7 _' x1 _9 _9 e0 Y9.2 Kafka和ELK的集成 235; u7 H% t* }& ~0 T: x6 n, o% v
9.2.1 ELK简介 2353 S6 ?' Q5 h" B6 m6 G+ B
9.2.2 配置流程 2364 M, m: V6 |7 w2 R) c, g+ Q1 X
9.3 Kafka和Hadoop的集成 237
( t9 u) c( |. I" O i8 U* Q9.3.1 Hadoop简介 237
, U# `6 \, {' D7 M6 k. z8 }9.3.2 示例代码 239# s# W9 w# O& Z
9.4 Kafka和Spark的集成 242
9 \) T* f+ k$ J2 W% ^9.4.1 Spark简介 242, } T9 ~, b& E Y0 |( o
9.4.2 示例代码 2457 R0 W* C5 p( O. R9 L
9.5 本章小结 247! P" a4 e0 [3 A+ j% h6 o) u4 Q
第10章 Kafka的综合实例 248
9 U e$ ~6 ]) @" z7 M$ c10.1 安防大数据的主要应用 248
2 c8 n! A$ N! l7 d7 E3 v D) i( ]% `" ?10.2 Kafka在安防整体解决方案中的角色 249/ P9 W1 r- a, j+ }) R
10.3 典型业务 250 java8.com: q1 E' Q6 k9 k( ]$ {+ {! a
10.3.1 车辆人脸图片数据的入库 251) p. x" q% V3 P" @8 q' U
10.3.2 视频数据的入库 252
2 M: o9 F# j( W6 b6 a! k10.3.3 数据延时的监控 2540 G( p" k5 v2 o- Z3 X1 I
10.3.4 数据质量的监控 256
- E4 f7 v8 I- Y: w9 N10.3.5 布控统计 258
2 s% o* [+ F% j% K10.3.6 容灾备份 259
. ^" c6 a9 }- O. o# S; n10.4 本章小结 260
6 Y9 v$ `, g+ U( \. R