TA的每日心情 | 开心 9 小时前 |
---|
签到天数: 324 天 [LV.8]以坛为家I
管理员
- 积分
- 10945
|
Java电子书:Apache Kafka实战 PDF 电子书 Java吧 java8.com4 p5 `6 f* ?- f; c* P6 n% L
0 t/ T# [0 v) H
作者:胡夕出版社:电子工业出版社出版时间:2018年05月
" q! b; [5 |5 ]" x, }- N* {9 _6 J6 O# j) D C% W+ I, S& T
编号:166-Java吧资源免费-X0100【Java吧 java8.com】, Z, Y/ H {1 i% I4 J
[ `2 a" e. ^: v$ [0 ~- O/ }
8 A8 A% |$ x- R! w0 M! x3 }0 v, Z4 I. U6 y; }0 M. ~
目录:# X5 {/ C* S/ C [) p, [* N
第1章 认识Apache Kafka 1$ x' B6 ?7 N$ O5 `- ?( f
1.1 Kafka快速入门 1
# l9 [; Z3 B9 L7 l1.1.1 下载并解压缩Kafka二进制代码压缩包文件 2" m+ o1 }; R4 J
1.1.2 启动服务器 38 T# y' C6 V# h4 V! b. C
1.1.3 创建topic 3
& F; D8 C8 C2 `: n1.1.4 发送消息 4
! B2 Y) D4 D( O9 F+ Z3 F: o1.1.5 消费消息 42 q/ x! b7 I! [( r3 C
1.2 消息引擎系统 5/ a/ D: H. l5 Y2 C
1.2.1 消息设计 6
) a% f) y. e7 R! W" Y1.2.2 传输协议设计 68 [0 S) Z) I- g
1.2.3 消息引擎范型 6
7 I9 r9 a( ]/ X1.2.4 Java消息服务 8
* ~9 |$ u* H0 W2 B1.3 Kafka概要设计 85 a) h7 L0 E9 _
1.3.1 吞吐量/延时 8$ }* {+ F) p h/ i7 R+ q
1.3.2 消息持久化 117 W% b) h9 g$ x7 j. H
1.3.3 负载均衡和故障转移 12
4 D9 K+ X# p$ z: c1.3.4 伸缩性 13) s3 p( {6 S7 O! e* @3 C4 F
1.4 Kafka基本概念与术语 13
2 B( w) [& `5 B% T6 Z; C1.4.1 消息 14
9 N. n) ^2 B2 y6 e x1.4.2 topic和partition 161 f% C; W7 h+ \$ E8 P y
1.4.3 offset 17
8 u3 g9 O/ L7 }" v% a; Q1 ^1.4.4 replica 18
0 c6 M1 z; E2 x5 b, [7 n5 F0 F5 {1 b1.4.5 leader和follower 18
/ H* N5 y2 |$ D+ W- M1.4.6 ISR 19' ?$ |: n5 a9 s
1.5 Kafka使用场景 20
8 F" ?5 @$ I2 D% |: q- E1.5.1 消息传输 20
. r# q# n' c9 C8 A7 @1.5.2 网站行为日志追踪 20
5 D1 D& e% G) q, s$ Z2 h1.5.3 审计数据收集 20
& A, G# A- D1 Z. `' E7 K1.5.4 日志收集 20
/ z3 Z$ [3 E @7 Z5 v& H& X1.5.5 Event Sourcing 21
1 E1 B2 g3 H& h1.5.6 流式处理 21 g, F+ K. R" V$ N
1.6 本章小结 21( k4 V6 V8 k/ d8 K4 i5 }
第2章 Kafka发展历史 228 w8 M/ d$ ?. u$ ]
2.1 Kafka的历史 226 {9 B$ a! L8 `2 I a# x
2.1.1 背景 22+ K6 s" ?2 |, |( I
2.1.2 Kafka横空出世 23
" ]3 C y+ E7 y4 M2.1.3 Kafka开源 247 e. P5 v* {0 O1 i
2.2 Kafka版本变迁 25
! W% q1 E3 v' [2.2.1 Kafka的版本演进 25
! S0 x, ?; I1 V8 V [7 Y) H2.2.2 Kafka的版本格式 26
- o- \$ s3 Z# w1 \# u2.2.3 新版本功能简介 26. q& u( i2 a0 @# d% K
2.2.4 旧版本功能简介 31
# F. ~1 ]8 \0 z# |. J4 H$ y2.3 如何选择Kafka版本 35: S* u; d5 R T; g9 s3 C+ I1 s
2.3.1 根据功能场景 35$ d: N) s+ e( B: w: U7 n
2.3.2 根据客户端使用场景 35$ m9 v0 D4 | ^* N' U% }
2.4 Kafka与Confluent 36
8 B' I# H& Q+ o- r" Z" z+ X* y2.5 本章小结 37
# R: H& I; ^9 u# o1 d( D4 O第3章 Kafka线上环境部署 381 U: d& k- b2 ^# `
3.1 集群环境规划 38
# G) y8 D/ C% d( n1 [, s3.1.1 操作系统的选型 38' t! M! l. Z/ K8 y& B) w* C
3.1.2 磁盘规划 40" h& K, I& i* v- G% [7 P; T2 m
3.1.3 磁盘容量规划 427 p1 x. ]* j3 b, g8 H0 a
3.1.4 内存规划 43
, _, Z* W- q' ~- s/ ^3.1.5 CPU规划 43 H* J2 ~4 ^3 a/ ^
3.1.6 带宽规划 44
; R: f! L2 \) F" X3.1.7 典型线上环境配置 45
/ t# T5 X4 n" E9 b5 x: N3.2 伪分布式环境安装 452 x, X& `4 f& o! Y, P$ D
3.2.1 安装Java 463 X* W- r8 }, n7 f# A& T
3.2.2 安装ZooKeeper 478 t7 S( z3 A. s
3.2.3 安装单节点Kafka集群 48
/ l, S1 z' n' X! Z; n& R3.3 多节点环境安装 49% b& ?8 w/ f9 h/ ]9 h
3.3.1 安装多节点ZooKeeper集群 503 O& ]. K" z; h! G) j- }6 C* J
3.3.2 安装多节点Kafka 54
! n. H+ |- M# o" Z2 s9 q* y5 R# v3.4 验证部署 55
* T# o# x3 N6 A z3.4.1 测试topic创建与删除 55/ q y- \- }- p0 v) D: s
3.4.2 测试消息发送与消费 57
1 Q- G g3 Y1 _4 A+ A7 x3.4.3 生产者吞吐量测试 58
/ ~% T$ s* G' f. Z4 j2 F3.4.4 消费者吞吐量测试 58, y& m: E4 M. \5 U( c: B
3.5 参数设置 59
2 w. v3 K# Y+ N! V+ [/ c4 E2 D4 G3.5.1 broker端参数 595 P4 z5 T" |- |& ^- \& @1 d; e
3.5.2 topic级别参数 62
) }9 ^- E8 @9 I' b2 S6 u3.5.3 GC参数 63
6 i% o! G- H1 K/ ^& s" ~, C3.5.4 JVM参数 64) ^ R4 {0 l# o9 | ?2 B+ H9 ~
3.5.5 OS参数 64+ p g7 r2 T" v: {9 d" }
3.6 本章小结 65
) H; i5 e( y8 W0 |& }; f! H/ a第4章 producer开发 66
8 L7 R! |4 D3 K- @$ c/ n( J4.1 producer概览 66
$ m! g: T0 A: K. D1 {( A4.2 构造producer 697 {( ~- @2 I# V3 U, G
4.2.1 producer程序实例 69' ~* Q6 R( a K2 _. s% y# I
4.2.2 producer主要参数 75, }- a7 f: g2 _: z' k0 K6 `
4.3 消息分区机制 80
( V( x1 `7 p. u) _0 L) f7 M4.3.1 分区策略 802 P9 j! |0 ~6 Z# F2 [% e6 u
4.3.2 自定义分区机制 80* {) g ^# y5 ~$ u! l( {* r2 g+ Y4 @
4.4 消息序列化 83
/ R3 x$ I& {4 W4 S4.4.1 默认序列化 83
4 v& l7 t9 I4 H! |- j) l- n( d4.4.2 自定义序列化 84
( }! K* C, n, Y4.5 producer拦截器 87
0 m4 k, O7 U$ b/ S/ T q4.6 无消息丢失配置 90
7 n; X! [4 A& v1 f$ [( S8 h4.6.1 producer端配置 91) j4 A9 k* G5 e/ g: Z
4.6.2 broker端配置 925 B* ^; ?+ ] A' W
4.7 消息压缩 92
2 m& ]& V, f& V* i' b7 e5 \( ?1 W4.7.1 Kafka支持的压缩算法 93# O# E2 E) O+ L
4.7.2 算法性能比较与调优 936 h/ N+ y% L! Z8 a
4.8 多线程处理 95
" p- H6 q: q6 P- i0 l4 G( l4.9 旧版本producer 96
! E9 h$ F I4 W4.10 本章小结 98
# b# w9 A! k! b8 n) N( n第5章 consumer开发 995 v6 d% _% E- p u. n! t' p
5.1 consumer概览 998 J; h1 q, T( H. d4 O9 z
5.1.1 消费者(consumer) 99
- F5 ?5 |! h7 _# G, p/ N" F5.1.2 消费者组(consumer group) 101+ U# Q' b5 w, W4 b# s' C
5.1.3 位移(offset) 1028 I' x+ \2 B) D; V9 A
5.1.4 位移提交 103
: z E/ l0 ~2 n5.1.5 __consumer_offsets 104
% {/ X* j+ z/ Y5 e9 x5.1.6 消费者组重平衡(consumer group rebalance) 106: U! ~" U' ]2 ?! Q6 k& L& A! I
5.2 构建consumer 106: ?& V# [$ r4 q2 U9 I
5.2.1 consumer程序实例 1061 c/ h& C& h( Z5 {# l" \
5.2.2 consumer脚本命令 111
3 x6 y+ X( j4 j3 `5.2.3 consumer主要参数 1120 j$ K: t0 k9 y1 J9 J8 H
5.3 订阅topic 115, H9 }6 C B ~
5.3.1 订阅topic列表 115
& X1 O$ ~" F% R# v6 I0 y5.3.2 基于正则表达式订阅topic 115% F) \3 D1 n. _& u* A4 q
5.4 消息轮询 115
) Q1 @( H6 N3 N# ]2 S8 S7 {5.4.1 poll内部原理 115
) `' Q; d5 e5 ~% A; s5.4.2 poll使用方法 116
7 E; z- H3 ~( U4 m$ [3 E* R4 B) c5.5 位移管理 118
, H$ t) U: q% E7 H% H. R5.5.1 consumer位移 119# \( a5 ^% D9 b. `- c, T
5.5.2 新版本consumer位移管理 120. I0 Q8 I* H1 L. r' Z* u+ D3 f
5.5.3 自动提交与手动提交 121( F1 Z. w" s: x" S0 F {3 L! [
5.5.4 旧版本consumer位移管理 123/ h( L; i9 f9 T
5.6 重平衡(rebalance) 1230 L) M6 q% y1 d$ E2 t
5.6.1 rebalance概览 123* j$ g4 h% ?* u7 c) s/ M
5.6.2 rebalance触发条件 124$ k6 ]7 n; h& \$ k
5.6.3 rebalance分区分配 124
2 h4 x u W4 r& f3 m5.6.4 rebalance generation 126
7 K% c4 a& j2 {) L% g" U5.6.5 rebalance协议 126
9 ~2 u: `! r/ e# ]! P# l$ s+ p6 q/ @5.6.6 rebalance流程 127
. q ?/ S$ `4 M- [ R5 h8 n5.6.7 rebalance监听器 1287 }* a+ g) G; o. V, M: k
5.7 解序列化 130! D' O8 N0 v! I; G* R% [9 c
5.7.1 默认解序列化器 130
3 f$ Q2 u! c+ x& x; @& H5.7.2 自定义解序列化器 131% b, {4 Q1 Z9 c! W
5.8 多线程消费实例 132! u1 x0 _& d) U9 a7 K) i% x3 [
5.8.1 每个线程维护一个KafkaConsumer 133; C+ |9 I0 w3 y" E3 x& ]
5.8.2 单KafkaConsumer实例 多worker线程 135
! l5 ]+ n6 \0 P# ]7 W. s6 U. ~5.8.3 两种方法对比 140
( i7 n! W0 t: A- H; c8 {" P$ e5.9 独立consumer 141
4 k+ }( Z2 C+ i. C$ {5.10 旧版本consumer 142
8 A$ C, i4 ?7 D" U/ _9 d5.10.1 概览 142
3 e6 r' S1 Y- s5.10.2 high-level consumer 1437 x" C W. p) a5 [$ |" Z
5.10.3 low-level consumer 147
. v2 e. S7 U2 }) p1 b8 @% x0 {5.11 本章小结 153
1 `1 d" k+ a$ L7 s第6章 Kafka设计原理 154, ^, }# G8 M& ?% w) `1 q% T
6.1 broker端设计架构 154# K$ ]; v0 n5 V2 _6 G! u7 i
6.1.1 消息设计 1556 L0 `& N1 g" K/ O
6.1.2 集群管理 166
3 O$ \* e. p- n& }) o. ~* j6.1.3 副本与ISR设计 169
6 u) L6 ~: x9 P y6.1.4 水印(watermark)和leader epoch 174
" E) w2 p r d+ u, D6.1.5 日志存储设计 185
/ @1 E# H7 j- x6.1.6 通信协议(wire protocol) 194
' m( J- w" a ?& m6.1.7 controller设计 205
8 G) J, K" O* m* w7 n4 a) W4 b6.1.8 broker请求处理 216
" n% H2 `: ^+ N1 R3 I6.2 producer端设计 219# \& D N( U: P/ E# U- C4 v; v, e
6.2.1 producer端基本数据结构 2197 Y1 N! C: y; b
6.2.2 工作流程 2208 z2 L& |6 V3 i+ ^# _
6.3 consumer端设计 223
0 }- ~- }+ p" v D+ ~) x) V6.3.1 consumer group状态机 223
$ N: p$ [9 \0 e0 f2 [6.3.2 group管理协议 226; h+ S' {* l. Y3 E2 s
6.3.3 rebalance场景剖析 227
& F7 @' t7 W& B+ p1 g6.4 实现精确一次处理语义 230/ _; r. _, d1 e2 h" A: f( }# W1 l
6.4.1 消息交付语义 230( ?2 [6 i, ]! E$ k" \2 {5 {; s
6.4.2 幂等性producer(idempotent producer) 231
F, N3 N' D& o! z j4 d( u& h6.4.3 事务(transaction) 2325 t2 }7 m, e* S) b Z
6.5 本章小结 234
, K0 }- r: E: j/ i8 y& W第7章 管理Kafka集群 235
* U. `: A# d* ?2 W7 S7.1 集群管理 2354 h3 t- v/ m' B; m
7.1.1 启动broker 2350 y( Y, {, C: b
7.1.2 关闭broker 236
& U7 [ M4 ]: H# P) i3 V7.1.3 设置JMX端口 237
" h, T9 Q$ D- S0 R3 b7.1.4 增加broker 238
( r; @ w4 D% u7.1.5 升级broker版本 238
9 F c" ^' v) J& l. }7.2 topic管理 241
5 O+ E) l8 t, i, ~5 \% `5 S, P7.2.1 创建topic 241" M. e0 i7 V9 ~- H5 j
7.2.2 删除topic 243
: j( f# ^& {, c7.2.3 查询topic列表 244
; L& X7 s+ ]6 l; |7.2.4 查询topic详情 244/ Y3 W3 M: ?) F2 n U+ ]
7.2.5 修改topic 2457 x( ~' I) f7 b* H% G1 G
7.3 topic动态配置管理 246$ Y" F7 S& p$ D- I& r4 e1 a
7.3.1 增加topic配置 246
( V& K3 C. W- j$ ?, h7.3.2 查看topic配置 247# m# \, \! Y1 k3 T6 L0 c
7.3.3 删除topic配置 248
$ ?$ E- ~1 S. q0 R' g7.4 consumer相关管理 248
4 i: _! I8 z- t v& m! J7.4.1 查询消费者组 248! D# p6 K& n9 `( O
7.4.2 重设消费者组位移 251/ l2 z+ E- e. j+ W& Y2 o- K
7.4.3 删除消费者组 256
- j2 h0 O6 e0 Y9 I4 I0 G2 U7.4.4 kafka-consumer-offset-checker 257- E6 L3 m" c- f+ {+ f
7.5 topic分区管理 258
- I n' b) X! l5 ~8 i& H) I% b6 F$ J4 Z7.5.1 preferred leader选举 258, t3 J4 W. N+ U8 X. e; W3 l% I
7.5.2 分区重分配 260
3 w5 n* ?6 ?. r. ?' Y) M/ R, g7.5.3 增加副本因子 263( g+ W! t( k3 \
7.6 Kafka常见脚本工具 264, O* ^* s4 X5 i+ V; t! Z2 X1 \! i
7.6.1 kafka-console-producer脚本 264
6 \1 [0 F) s5 m7.6.2 kafka-console-consumer脚本 265
/ P1 f/ z' ?0 x: B: y7.6.3 kafka-run-class脚本 267
2 W4 j" ~, R1 Q5 J! {) U2 f& |7.6.4 查看消息元数据 268, g2 o, a* p9 q. t0 @- ]
7.6.5 获取topic当前消息数 2702 L# M2 P1 v- D Q. u9 j" A
7.6.6 查询__consumer_offsets 271 g: ^9 r# _* m+ u# S9 ~( C1 ]
7.7 API方式管理集群 273/ q/ ]" D9 c3 e* \8 ^4 i
7.7.1 服务器端API管理topic 273' m/ g" f$ E( l/ A2 x; Y1 o5 l8 p/ |/ J
7.7.2 服务器端API管理位移 275
. B3 e4 W0 }+ l- u; Z7.7.3 客户端API管理topic 2764 \! x( J1 P2 i) O- b# L4 h' {
7.7.4 客户端API查看位移 280
5 {) o+ q. N$ L9 F) u) x, d% O+ h7.7.5 0.11.0.0版本客户端API 2815 Q. i+ N! _! ?& c1 |+ |& o
7.8 MirrorMaker 285
) R6 X: X ~& ~2 z7 j7.8.1 概要介绍 285/ z. {% e$ n, ^+ v& M* N
7.8.2 主要参数 286
/ ~0 h4 S& C( N c6 A7.8.3 使用实例 2872 s7 N$ @9 Q' Y9 w0 M3 z5 ]9 L
7.9 Kafka安全 288; i) V# J' _) Z8 } x5 t+ o7 t
7.9.1 SASL ACL 289" P1 m8 [) a8 X4 l& \
7.9.2 SSL加密 297
! m, S6 Y( B; V3 W4 C7.10 常见问题 301- I; T* T8 |3 K: A
7.11 本章小结 304$ y+ g" ^- y# f; K4 r$ e4 |+ S4 ^4 e
第8章 监控Kafka集群 305
0 [. P: K0 V1 m$ V8.1 集群健康度检查 305
' p/ B g0 q6 m8 y2 n! H& K8.2 MBean监控 306
# X+ c$ n4 E( A/ X e s; k8.2.1 监控指标 306
: T% Y: h. S# c3 X( e8.2.2 指标分类 3084 Y) S( M) V7 Z+ x
8.2.3 定义和查询JMX端口 309, }0 P3 `6 [$ T: q* z
8.3 broker端JMX监控 310
* D, X- D6 p: i8.3.1 消息入站/出站速率 310/ [+ Z+ W, `# o2 p
8.3.2 controller存活JMX指标 311
( f. p7 F$ t4 s! @: `$ [& [& u8.3.3 备份不足的分区数 312
& B# T8 b4 F) |) k$ I8.3.4 leader分区数 312
) K- A$ ~% ~8 \3 R8.3.5 ISR变化速率 3131 Y0 Z5 ` e- ~4 C8 y9 D8 @) q0 C W
8.3.6 broker I/O工作处理线程空闲率 3132 q1 t, C4 @7 b% y& M `6 y, A
8.3.7 broker网络处理线程空闲率 314
% }) Y, o% j7 e8 {8.3.8 单个topic总字节数 314
$ g4 V- d$ Q1 H- \5 e8.4 clients端JMX监控 3146 ~. K" E2 ?7 l& D3 V8 _
8.4.1 producer端JMX监控 314% r( V$ X5 Q$ B6 B% b6 \: B: d: Z j! }% Z
8.4.2 consumer端JMX监控 316
3 z2 W) J) a+ [/ E) n8.5 JVM监控 317
5 o4 H$ ]% A! o9 a8 m8.5.1 进程状态 318
t/ r3 \ x+ H8.5.2 GC性能 318
$ [( T, d& H/ j1 c# _. j% u8.6 OS监控 318
% \+ c/ h0 e, L% a8.7 主流监控框架 319: x) q2 s2 }+ R" Y
8.7.1 JmxTool 320
5 C7 g6 i4 q: v$ Q1 ?8.7.2 kafka-manager 320+ s$ m ^- C5 F8 S
8.7.3 Kafka Monitor 325
4 R9 a5 [6 f: @ ~9 v8.7.4 Kafka Offset Monitor 327' l9 c6 U& p7 }' x' Y* n6 P7 S
8.7.5 CruiseControl 329; F$ R/ v. f( Z, s4 v ?3 r+ I: Z0 c
8.8 本章小结 330
$ l. p1 Y$ ^9 m% X' c5 @; L, V第9章 调优Kafka集群 331, }7 ]+ r: k2 }& D4 t
9.1 引言 3317 ~8 F" E1 A1 B6 ~# V- u# W
9.2 确定调优目标 333
4 [: z9 E9 h( K, {+ Q9.3 集群基础调优 334- s+ G% L* Q( s( G3 ?; Z2 ~
9.3.1 禁止atime更新 335
6 F5 ]# w$ V. q% v6 s9 t! {9.3.2 文件系统选择 335; o1 ?3 [* l6 R& X4 \2 Z% g
9.3.3 设置swapiness 336( G0 E3 m- L$ H; O& l1 J( [
9.3.4 JVM设置 337
6 K9 A6 l) F, E3 [: c. ?% U9.3.5 其他调优 337
% m8 |' |# p2 r/ E/ o/ H9.4 调优吞吐量 338
& }8 ^' |$ A/ r$ j6 b9.5 调优延时 3421 V( G/ F9 d1 a5 K
9.6 调优持久性 343
8 F: ~; j+ o0 c+ K$ c L9 ~9.7 调优可用性 347
& F, u/ Z- d0 d# D1 s4 W% v" T+ a9.8 本章小结 3492 @' [5 h1 H# o7 Z0 V- D, t4 g
第10章 Kafka Connect与Kafka Streams 350+ p5 B. C* v2 w# f! u5 @
10.1 引言 350 java8.com( E7 N6 k' K/ n y# J! F# ?0 K. l3 E
10.2 Kafka Connect 351! Y$ W5 h& Q1 l4 B0 L) w9 V
10.2.1 概要介绍 3511 s! d- ~9 W1 v* Z
10.2.2 standalone Connect 353
5 H0 ^; Z7 ~6 Q1 R" w, t9 w10.2.3 distributed Connect 3566 p5 D4 O4 u2 G; n' v# p
10.2.4 开发connector 359) W) \4 l$ a$ C+ h( N
10.3 Kafka Streams 362% A# m; J% @3 }9 K5 ?8 i$ F
10.3.1 流处理 362! n; S5 D f' U6 M, ^ M
10.3.2 Kafka Streams核心概念 364( {$ A' c* a3 F" J. w6 @
10.3.3 Kafka Streams与其他框架的异同 368! U7 G: s6 C3 N0 e4 d
10.3.4 Word Count实例 369
/ J! s" L2 U4 q) r4 u+ @! Q10.3.5 Kafka Streams应用开发 372. V! V5 A' s7 e1 M
10.3.6 Kafka Streams状态查询 3825 U5 M# g; R( f/ h, u" s& q+ {
10.4 本章小结 386- @3 R- y5 o9 h$ U" X
2 t f( \$ j9 p8 E+ }. s
; u! H, F9 P* } 百度云盘下载地址(完全免费-绝无套路):
( l% F" X/ n2 X0 W) F6 w# v
1 l/ l: Q6 g O) W- C" t6 m; M" @: _0 U: L) Y7 z) s
! O4 W& j% J1 @9 k; a3 t
6 G. Y6 k1 A+ a( `7 s+ J/ O( ~
|
|