TA的每日心情 | 开心 18 小时前 |
---|
签到天数: 294 天 [LV.8]以坛为家I
管理员
- 积分
- 10089
|
Java电子书:Kafka权威指南(第2版) PDF 电子书 Java吧 java8.com
' m t5 E8 ^3 R% B2 l2 s& N9 I' R$ c$ g, y' q8 G
作者:格温·沙皮拉(Gwen Shapira),[美] 托德·帕利诺(Todd出版社:人民邮电出版社出版时间:2022年11月 1 n$ ^) ]9 p# s& ?) w
; |* l2 u* o* t; y* @: G5 u编号:166-Java吧资源免费-X0186【Java吧 java8.com】7 {7 y4 J6 P- @1 r! \
* x: j& y: K6 p( a5 J6 f, @
2 `! z9 G: a: f5 H5 I/ t& s# h H+ ^1 [
目录:1 |; l. t9 m2 c; }( t, W% D, E2 ]
本书赞誉 xvii
: x; g c0 J% m6 y# E5 D+ W+ d
' {. _+ Z' X- a' t第 2 版序 xix
( ?& |0 W/ B% z( m: E) Q, d* N) _: B' V3 |
第 1 版序 xxi ?7 x7 e. d& T6 a: b/ b7 N
: O1 m" ^/ R/ ]- ]. n" @3 g前言 xxiii
2 w0 H6 L( B! v
' l. A5 r) q# A第 1 章 初识Kafka 1
; P0 m1 @: g* K0 \6 t6 Y! b
5 {6 q: v: c1 f; i9 a1.1 发布与订阅消息系统 1
6 u3 x* r6 l: ~- K% a
: Q' p. f/ s5 h f: V* j4 }3 F1.1.1 如何开始 2
5 e. j5 ?) Y: d9 N# J
8 h* H. Y6 g- F1.1.2 独立的队列系统 3
2 x ?; U6 `- R' x" s( t; |) s, ^ F' I3 E4 L$ G; T" z: a u
1.2 Kafka登场 3
/ ^7 J! H0 Z# Y, ~( Z, ?6 p9 F0 B
. {" q6 R& k) G0 @/ U1.2.1 消息和批次 4
! F( ?$ N- `9 ~2 `. b1 x/ W. u- r# o2 h# ?0 ?) ]7 Y
1.2.2 模式 4
) D( v/ L. m5 V. S6 e* O7 I2 K/ e. S3 e
1.2.3 主题和分区 49 ?' O0 ]' s" @1 Y0 D
( i0 N" e ]2 Q! [7 E0 z( [! M, K
1.2.4 生产者和消费者 5, H7 r4 p4 t5 U. ?7 L6 r) R' T
6 W& m3 y2 Y8 _7 `7 l1.2.5 broker和集群 6
' O% u' a; A8 r* m" h( g
/ C8 }/ }7 k# K, z B1.2.6 多集群 74 A( {- U! W) M
( i8 U% P ?6 I3 U
1.3 为什么选择Kafka 8
) S+ r& ?7 k( l5 R L$ I5 r( ~. }$ g9 u1 u* @: }* `* X
1.3.1 多个生产者 8
* E O8 u2 C* Q1 l
. _& ~) J$ @# S$ r1.3.2 多个消费者 8
& k: L7 J0 W) e# d9 n# M/ X, Y" J+ G- `" P9 z8 e
1.3.3 基于磁盘的数据保留 93 e3 b5 O, Q- J3 D2 M; P5 E
2 g$ v! c) A- D! O1.3.4 伸缩性 9. a5 f) @9 x. S$ v4 s2 L# Y4 a
2 c2 c" o% v' @7 a; w& k/ n$ i/ @6 S
1.3.5 高性能 9( B# a8 I% H+ z" k
( @% c8 j+ ]! y- |8 f
1.3.6 平台特性 9+ D9 k5 Y* y- a T/ m' s
" `% {+ E' u0 o/ l- J1.4 数据生态系统 9) e# }) Z9 o$ H5 X9 {
0 Z6 H1 E9 E% A4 E* E! q% t r \) k1.5 起源故事 116 I$ Y. P, ?2 R' B- j
7 i1 Y3 L9 V; R: b1 S& F1.5.1 LinkedIn的问题 11- ?$ I% z9 p) z
) b! _# W' t; o/ N% l* s/ @
1.5.2 Kafka的诞生 12
}: ~3 S4 ]* U) v9 A W
* m0 A; F: G' p2 k5 A! x; h/ d" {1.5.3 走向开源 12
9 ] V+ K. [7 p) o; M+ U3 q; q1 i) e) ^. i- e! L; C4 P
1.5.4 商业化 136 U$ f3 _1 q% [4 V" h: ?- {
! l; `- i7 R K5 X' c
1.5.5 命名 13$ P0 R! g7 D& i3 `, K% S q
2 T/ u) t$ m. ]3 {0 O
1.6 开始Kafka之旅 13
$ G# n% i& a9 h' \1 O, z- [# C- `8 t2 v7 D3 R, h3 r
第 2 章 安装Kafka 14/ j8 z: e. m! m- V, S2 }3 ^
( Y- T5 A: U7 [5 y2.1 环境配置 14
3 {* j" O& M1 b1 h6 f: m
' A L- m0 L" m2.1.1 选择操作系统 14
; t, D* H. Y. @
& Q' J& D& d9 \5 ]- I. A3 W) @2.1.2 安装Java 14
1 O; T1 j6 ?. y v: W0 o
' l6 x: M, F. T% l2.1.3 安装ZooKeeper 15" H/ d* ]! A/ A% z7 {' i8 f: l+ a
, r/ E8 Y' J/ j1 b$ `2.2 安装broker 177 e( i: K* Y2 ~ N+ U' y7 `' x
- {5 q& C; s L6 {3 {, O6 l! n/ ~" c2.3 配置broker 18
% W% X( ?: ?- b. N' x* ], v- n3 }+ Q" E( b+ a
2.3.1 常规配置参数 184 I% G& F5 i" \* K) f
9 @* _0 B$ M6 Z' Y& G: S1 w
2.3.2 主题的默认配置 20 {0 E$ [! A5 d( r# P( K( Z0 f
3 K& f4 }/ z, I/ a
2.4 选择硬件 24
! t. i3 t$ T2 S2 Y
2 w7 _0 l9 t/ A+ ?' C& P( I# g, Y2.4.1 磁盘吞吐量 25
x2 i) y' x0 z8 X3 D3 G6 ]0 q8 @& @& n' \( a- L3 q2 o/ o2 \& {
2.4.2 磁盘容量 25" L z3 q' W& y" L
( y1 B' r% Y8 |) d$ J0 x6 `2.4.3 内存 25
* M0 S0 _- g* q+ b0 t/ y8 l' J0 w' }( P: y; l. s9 Y/ ^
2.4.4 网络 25
) A/ s& K7 D6 R3 V
& A" Z% c+ V o- ]0 _6 M' I2.4.5 CPU 26& I* Q1 Z# x* g+ x6 U
) {* m6 N* A# E- M
2.5 云端的Kafka 26' y& d8 U, `) Z- k
' Q* f( |+ u( w
2.5.1 微软Azure 26
( b$ \" w+ V( h, o+ F! M( l0 t. C6 i* y! u4 A
2.5.2 AWS 262 B, o2 [/ F6 }3 g# j" k
0 g* ~, K5 B2 o* j& B! _! u
2.6 配置Kafka集群 276 {/ X6 k. I- h3 E9 @
; |! c% Z# g Y% T# Z- @# e
2.6.1 需要多少个broker 27" |) e" g1 E, S% Z1 t) {& Y8 H
3 [' j; M% Y9 Y/ A& F( K
2.6.2 broker配置 28
! e e' I3 n( s6 u! X0 _1 R& T5 `, H I$ H8 U- k, i
2.6.3 操作系统调优 281 v$ o% X1 U# Q2 l+ {& R
$ k9 n/ e+ [1 X$ B9 e1 U
2.7 生产环境的注意事项 31) p) G6 L! ]1 A
9 A8 z3 _( R8 b2 f7 y% N9 z( ]2.7.1 垃圾回收器选项 31
9 U- A& w( Q* w* P* Z: V9 t; [! S/ B/ p# M+ J
2.7.2 数据中心布局 324 I8 B w: o3 T) q" j& n
- f9 ^4 ~3 _4 e) K! s- {2.7.3 共享ZooKeeper 32
' Z" E0 b/ r8 K; L+ n0 U, y
3 w& `1 P, c7 V+ y4 K7 o% I2.8 小结 338 m7 m: `# C2 q5 P6 @
0 m5 U! [# Y' w$ }2 w* Y/ L, v7 f. B9 K
第 3 章 Kafka生产者——向Kafka写入数据 34* e' j) D$ u2 [. x# @
- F( @, f3 b7 R# V. z! o2 m
3.1 生产者概览 353 R& P4 Y* O( I! k% p& R/ G9 ~6 d% `
. \/ ?* o0 |; M1 R' ?* h2 T! {, N3.2 创建 Kafka生产者 36
' E; @, u/ G& ^6 U; @
3 P2 Z5 z/ ^- ]! z3 K( ]3.3 发送消息到Kafka 37
|6 ]( {% S7 _" x( B' @7 O
7 j w W) ]; ?3 i# O, o& \5 k3.3.1 同步发送消息 38
6 `* [- y% I: j9 x! K+ k- K
' c$ q! Q0 M* l+ t* C& c3.3.2 异步发送消息 392 {% ]( n1 R9 i. N' O
! Q4 j9 W% S' g0 l$ e3.4 生产者配置 39: I/ T9 N( d) m! O7 B- _9 I' E
& N4 [+ I- j$ e3.4.1 client.id 40" i& P4 U& y9 A% m2 [. G
4 J- a3 B- w% T5 J& x$ u% X1 K
3.4.2 acks 405 {+ p/ M5 A. S8 R
- F7 `1 ^8 f$ n. j6 S& { r( s4 A6 u3.4.3 消息传递时间 411 n: u7 O& P5 [& s1 E4 I
! \$ D) c, d" `3.4.4 linger.ms 43
" ^; L7 K' ]. J, f/ x1 U/ M4 A' a
6 W: l) d1 P; _+ g9 p3.4.5 buffer.memory 43& U2 X% J8 d: T H
n& a Y5 ?2 z" i4 u2 ]# v3.4.6 compression.type 43
+ n. T+ y" |9 U; Q' M1 g* Q0 a7 [8 t' {. y. k7 A" G' [
3.4.7 batch.size 43+ P( m& w# F' F& T: j- |# w+ w) |8 O
& V3 ], Z6 G" v. v6 P \. z- T0 G3.4.8 max.in.flight.requests.per.connection 434 I9 g4 W4 K) K8 j
& N3 [, h2 l% H0 o$ O2 w3.4.9 max.request.size 44
7 i- X: l/ I6 @% x- a. v, A1 B/ {& c0 {- x9 m
3.4.10 receive.buffer.bytes和send.buffer.bytes 44
/ L2 D4 C5 z1 k" k% |% Z& V
! y. s$ _* c* a' _% j) K3.4.11 enable.idempotence 44' @% D9 P6 a$ X* m8 G
+ B" [2 H! r2 E1 P
3.5 序列化器 452 X b% m: K( K' U
u v6 H b6 v' \6 ?$ B! Y e1 f
3.5.1 自定义序列化器 455 n+ V! a3 b5 R& J9 L/ ?; P% k/ U
2 o4 x; M3 A6 X! j3.5.2 使用Avro序列化数据 47; I% o6 P1 g. p
% a6 I- V7 F) ^- O3.5.3 在Kafka中使用Avro记录 488 ]) s: x( N W8 ?: p5 f" v
. e+ \/ n; ^! q1 m, `3.6 分区 51
/ U3 B8 c" ?5 x2 C* f- }; L5 ]( V2 v4 W" p. L5 C, i* P
3.7 标头 52' d% I( G8 x8 z/ D3 [' h
& x3 ~$ |2 r: z- q& M
3.8 拦截器 53
! |6 F8 u4 a: `. e7 x2 z# P7 }( C0 q! J5 g& U$ E9 c
3.9 配额和节流 54
: x% l* j1 U8 S% c
% Q/ k8 q4 J, c, n q! o$ b; s% g3.10 小结 56
+ A h, X( {) B$ c4 U* Y
, x, X3 K1 ^, `# C; S第 4 章 Kafka消费者——从Kafka读取数据 57# D5 {$ }" B9 b. R3 h2 h% z. I. [
3 n0 p& F5 L+ J7 c5 f* p! h4.1 Kafka消费者相关概念 57
6 D: k5 C8 t& I4 _4 F% G% ], u$ G& u$ `* {
4.1.1 消费者和消费者群组 57
# z/ i( L5 e( g4 W3 {
& E/ n2 i" P) @+ p( J" y4.1.2 消费者群组和分区再均衡 60% U2 I$ A5 y( s6 w. q+ {( b3 F
6 u; q1 M, V8 ^' _+ `
4.1.3 群组固定成员 62. |0 u% [8 e4 M0 R- c4 r) F; d- e% K7 X
5 H" z. {& ]9 I0 V; o0 w4.2 创建 Kafka消费者 63
: t2 u: ?1 D: e2 ?) R$ G- u( D; i, V0 D9 C) l1 e
4.3 订阅主题 63/ ~" }2 K8 G+ F+ [
8 V. e2 D4 @7 I' B) J! J' _% |( f" \4.4 轮询 64
* X* c2 [: T# g' t- ?. D
7 x- C* x& w1 u2 a$ B6 p4.5 配置消费者 66
3 Q8 i4 ]7 m& N( d: r: h, _1 u& A% S) |
4.5.1 fetch.min.bytes 66. U# }& O, d/ u8 e0 t& X |
- d# l$ {& I ?1 @1 b3 t4.5.2 fetch.max.wait.ms 66
2 Z0 ]; s0 C, g* s! z6 i. Y$ g# s2 q ]( x2 c1 s B( W2 O
4.5.3 fetch.max.bytes 66
. E2 b* K$ V q; }6 Y! I) s; K$ q" t9 D; Y9 T( V
4.5.4 max.poll.records 676 t7 h+ B( |4 @- Y1 J6 y) z
' L. r4 [3 Q2 q% D4.5.5 max.partition.fetch.bytes 67: U c: G/ `+ Z) x
4 D6 m2 E% J/ r: [4.5.6 session.timeout.ms和heartbeat.interval.ms 67- |& f' d8 _5 \: ?& s# Q- M
0 E+ u! C! p; M9 t6 q/ c/ V! T4.5.7 max.poll.interval.ms 67( u. Z7 E; X& h% ^8 w2 S9 c
; @8 _1 N; K3 U d2 f9 \1 o, U$ ^4.5.8 default.api.timeout.ms 68: C* V: N& I" y; v0 T; `
3 F4 H2 Y1 ]: N& G4.5.9 request.timeout.ms 68
7 D# A& x% T* W6 Y; G" @) k$ L- c# S* j0 _: _- {
4.5.10 auto.offset.reset 68& G% t6 u7 o& A. C3 a- C+ Z& t6 K1 f
7 o( Q( A8 T! Q d4.5.11 enable.auto.commit 68' U7 a' k4 n0 o( p
2 n1 c1 K. ~' c& W, x9 Q. }4.5.12 partition.assignment.strategy 68
6 N' W9 A# I" o! b# P, ]' l, g3 k
8 v* w8 U6 {1 J0 `4.5.13 client.id 697 a! Q- `, }$ A$ V! O+ E
; g! M$ N+ k0 F+ a8 t+ S
4.5.14 client.rack 693 P R" Z: d; K, [5 t
0 [6 Y, B5 W! _2 @# `) n4 L9 z
4.5.15 group.instance.id 70
, X" ^- C6 Q5 L$ C+ k- Q% J- Q5 |" w, m: ^% Q, |- @& I
4.5.16 receive.buffer.bytes和send.buffer.bytes 70! O' I& s! }& Q5 K% j9 E! Q# R
8 r! j& o. O1 E( z* n7 T4.5.17 offsets.retention.minutes 70$ X. o& U- P+ C2 A) }/ I9 b: K
! ?- r# @+ E4 u7 P
4.6 提交和偏移量 70" ?% N: t% U0 j
3 x6 F) `+ F$ |7 N' Y4.6.1 自动提交 71, a: x. L* G3 w6 i. l. [# l
* q" {4 V! _* e. Y% n- Z, t
4.6.2 提交当前偏移量 72
2 m. \; n0 h8 ]; K' ?) |$ Q. k9 r$ M Z
4.6.3 异步提交 735 z N+ o6 ?" h+ H" V" n
) ^3 N" Y5 `. ~! @# }4.6.4 同步和异步组合提交 74
$ r5 I& \, ^- a; d) s7 B
' i2 f4 M5 A3 q; F- V4 B) j4.6.5 提交特定的偏移量 75
b9 w9 z. O9 `' [& l' M1 |! N. T7 c
4.7 再均衡监听器 76 S/ r& V& @4 o$ @ x) j) u
4 S5 U) i0 T) w
4.8 从特定偏移量位置读取记录 78
: [4 W0 O& S9 D* X( A% T" I) b* f7 P# Y( E& p5 ~6 L
4.9 如何退出 79$ U R6 Z0 K) ]7 m/ F
- e( z1 O D& m3 \7 ]. r4.10 反序列化器 80( b% A y+ O7 r, @5 k: N
( q* k3 M& | J$ T4.10.1 自定义反序列化器 811 g' a. S; ~: s! x8 L- { _0 _
6 x+ r7 I5 Y3 l4 \& U
4.10.2 在消费者里使用Avro反序列器 83, x0 n+ @: d0 i7 h) H2 J
, v: Q' h# u: ]" J5 a& X4 e; O4.11 独立的消费者:为什么以及怎样使用不属于任何群组的消费者 83
) r8 d2 a9 ^; x# P* Q
W E1 Y( {; g4 Q+ K4.12 小结 84 U: m& a2 |, M( \: b$ x9 }
' t7 O% G" x) F. m7 H; U6 P$ i
第 5 章 编程式管理Kafka 85. W2 N0 X3 j8 j* c$ }8 n+ z
% T! T' ?: x; E5 l* Z5.1 AdminClient概览 85
6 N1 t$ I1 @+ }4 G& z; q' r, C5 H1 n6 M6 f' l7 }
5.1.1 异步和终一致性API 86/ ?0 d- f: Q: W
; q! v. {2 D( n" k# s
5.1.2 配置参数 86
( u+ L) m" e4 e, q0 @3 K! f3 D& H3 x" _3 x9 }8 ]' t" l0 W
5.1.3 扁平的结构 86
, ?5 l0 d$ ?0 J" C# g
) r F3 x: ? [0 ~4 Q3 Q5.1.4 额外的话 860 _0 T- h' ]# V4 y$ M) z
& A- V7 ^9 I2 ]1 h; J' W
5.2 AdminClient生命周期:创建、配置和关闭 87
% C/ J8 a" M5 b. O
% N; c% z. w2 C/ j* t$ R5.2.1 client.dns.lookup 87
& ?: P* l u3 s" A" J& S+ A& I& e1 [% a* t% F9 `; L
5.2.2 request.timeout.ms 88% m" a Q' Q. f3 {
, M3 l6 K0 c8 B8 {5 E3 ~5.3 基本的主题管理操作 88& X' X# q: U- y
: W& h, d4 y" f5.4 配置管理 913 u/ l" W2 v( T3 M! B
2 P h# W! w7 @8 A$ X
5.5 消费者群组管理 92. D% S8 M6 \% K! g6 |0 K
" G4 U$ `$ ^0 F7 ?- C
5.5.1 查看消费者群组 93
' Z$ S& b1 O! S4 ~0 Q: i6 q
$ K/ [9 m9 m5 ]' Q7 @, i$ ]1 U5.5.2 修改消费者群组 942 i' Y3 ^/ v8 F$ N: a- o
t; [# w# F9 F3 Y* M" K5.6 集群元数据 953 Q ~7 G% A4 W7 A8 I: G+ c
, B$ r. N9 a& f+ U2 y! E, a
5.7 高级的管理操作 96( c4 v6 H& P5 R/ G. {
/ J r6 o$ X+ @
5.7.1 为主题添加分区 96# \1 C+ `) l% m# |* P7 X" u @
5 |! S! `: g7 K' T3 \$ Z5.7.2 从主题中删除消息 96
' w$ m x8 W" ^5 W1 W7 Y
5 U) q6 L' V# ^6 e5.7.3 首领选举 97
, O% H: @6 d, L+ F: T
" _4 U* a7 L4 |1 L5 B5.7.4 重新分配副本 983 M, ^. m/ v. \# f, W
$ }! _: R8 n+ ?
5.8 测试 99, `) u% j9 c4 m; i
0 p) o2 z6 z: U6 r4 _! d
5.9 小结 101# P9 T i9 \6 u% U; @# @
9 F0 m5 q. }/ b. W
第 6 章 深入Kafka 102
2 j2 \ r6 ~' a3 U' l1 S
5 X0 U5 a# r- r- e5 Q6.1 集群的成员关系 102
+ {- @; J2 T! S9 {& _" A5 j
. |! ?3 w! Q9 `' u1 _9 M2 _6.2 控制器 103
3 E. e0 K0 y2 K, Q7 D' h
4 i) ?" i$ E5 E- W q. F- m6.3 复制 105( W% N0 ^0 ]6 S) R+ S
6 u3 n+ t( u% y0 c& F6.4 处理请求 107 g7 x( u6 _. D3 [3 i
4 |' r' a: P3 e7 o( R( L0 x8 m1 e
6.4.1 生产请求 109
) ^1 A! t8 V; g$ a ^ l
" w- u" Y: }6 a" ^& A: s1 t0 D6.4.2 获取请求 109
& t5 W1 x" @: s( V; _$ }- R ?6 B8 ]- X! x. ]+ v4 D1 Z9 \! p
6.4.3 其他请求 111
: Q# x* V# I# t5 Q7 ~7 E" u1 `/ X0 d( N3 s' C; X! j
6.5 物理存储 1121 E5 }* ?9 P" U: C; @# w
- O$ O+ [& I( a+ n
6.5.1 分层存储 1135 ]& A4 M% j# E' d. d, j
4 C) J2 |# j: G6 k% r9 ?2 f
6.5.2 分区的分配 114. }0 ]2 V' I ]4 x1 x) U/ r
8 T6 y) _, g! D5 o# A* D* M
6.5.3 文件管理 1151 u! r: f) l, @8 @" s/ e+ K, I
4 y2 p, ` u$ @" R! y6.5.4 文件格式 115
! [3 O2 G! D' u' S" G3 H$ _0 h2 p* a& j% ?( ]% t4 p7 J) Z
6.5.5 索引 117* r- o% u, F/ C9 U2 ^6 d
; S* v1 i( Z" g. D
6.5.6 压实 117
! R8 S& M! a% w) @9 @% z( {: H; m
9 X3 C( A& p+ g# u) y6.5.7 压实的工作原理 118
4 b3 H, v* m: B5 W" D2 r) H
+ _- c X0 F( b" Z" o7 I6.5.8 被删除的事件 1196 k& ~! U' y' l+ w" h- V
" ?2 \! U( `# g2 ~$ s6.5.9 何时会压实主题 119( Y+ z1 z9 i4 j
' z$ j* ?$ o/ P- B6.6 小结 120
2 F8 b% ~% w5 v. K
1 T, |1 g9 W8 A0 ~第 7 章 可靠的数据传递 121' y3 I' `+ w: j' `
- \! [4 J0 z7 G+ S7.1 可靠性保证 121
- z( p; D: }# v
3 w9 J0 \ f+ K! T- _7.2 复制 122
`# B9 K6 f+ p. R5 V% v5 |
% b% J0 J, `1 J8 r7.3 broker配置 123
# h% h. C! E$ j! x( N7 k, R% d1 E3 |/ F& n' n9 O
7.3.1 复制系数 123& v, s; E# a- L( J8 [- G+ o: L+ q0 {
, b% R2 `5 ^, X2 `/ T; ~5 w& o9 e7.3.2 不彻底的首领选举 125: f) j1 \& @8 [3 j& b" ~
# X% x; P5 A: u! e' W1 y+ N
7.3.3 少同步副本 126
* K" {; \/ @, d' G" R- x+ `4 A1 T' ]7 T8 C- l. t0 d
7.3.4 保持副本同步 126
# z c5 S6 O5 z( X( H/ ]; i; u( M% i$ Y
7.3.5 持久化到磁盘 126- Q; ~5 R+ N, e7 y
, s" `' L9 G3 `! G* Q/ H3 S+ U8 }. ~2 o
7.4 在可靠的系统中使用生产者 127* |, }9 q2 x6 M0 I3 L- x# Y
" p8 z8 s3 t; _7.4.1 发送确认 127
' z' @# H* n* N& C( ~+ ]3 B& y1 k3 F( N7 |) |
7.4.2 配置生产者的重试参数 128
. n6 `" d3 B s: H6 R& T
. z! Y6 }' s# `/ m" e1 U7.4.3 额外的错误处理 129
- ]$ m" o' P: _" m; _4 A# o( J: B' A
7.5 在可靠的系统中使用消费者 129! g) ~% o+ Z+ d2 x" ~/ T
$ f8 _+ G, d1 X2 o+ T7.5.1 消费者的可靠性配置 1309 T7 p: s, {3 ]. W
5 K. V7 X* r, G( ^% R2 J4 T
7.5.2 手动提交偏移量 130# D8 A) y; W9 Y [' ]3 x
( p! q" |8 }. i7.6 验证系统可靠性 132+ _7 x) K6 K: ~
$ Z9 ^- d( Q' H, O" u: s3 J7.6.1 验证配置 132
" c' l" O/ T. F& Q) {* l$ K5 L; ~/ f4 h7 @6 Q
7.6.2 验证应用程序 133, f4 B1 y8 o+ U* n& {
' b/ J( w, c; X6 }* `
7.6.3 在生产环境中监控可靠性 133
5 G" N3 Y+ m: n- R$ d! M# o9 @0 u2 ~4 B S2 f- h: a, }
7.7 小结 134& ~; n! k+ E! Q8 ]* P
4 |+ Z# y" d A' b/ M$ ~6 b
第 8 章 精确一次性语义 135
2 i$ B& J5 E" C( X; F+ ~+ n0 T! I# h: p- p5 C
8.1 幂等生产者 135" ^8 r' W* X/ J- i. Z
7 A, Q7 C7 [- B1 r8.1.1 幂等生产者的工作原理 136
( L0 F8 F g2 v2 t7 ?: C
; \' [2 b5 m* z( e# A* a# {8.1.2 幂等生产者的局限性 137
9 N7 n& V" h1 v# s% \
1 w. A, e5 k# ]" |8.1.3 如何使用幂等生产者 138
+ \- M- Q0 @* x) N# d* T) t
3 N; }' i6 V& B! X1 J4 K. z8.2 事务 138
% m, M1 b, _) ?- l6 i
, F+ n# r; ?7 J, o S! h/ n8.2.1 事务的应用场景 1396 b9 I: ^" f& n3 h" L
: e# A3 ~/ D2 y- Z
8.2.2 事务可以解决哪些问题 139
+ y! s0 H: h1 S2 W9 Q8 @/ c
, c6 C" _8 X- G9 H8.2.3 事务是如何保证精确一次性的 140
- a1 b& F. r! `* R6 n$ l+ _
$ U; i4 L0 ^7 ~5 s( f8.2.4 事务不能解决哪些问题 141# y% \/ P; ~' \4 q$ ?7 }! `# h
* a. B7 C% C! T% Z9 _& l# Z, c
8.2.5 如何使用事务 1430 x3 ]7 ]3 O* n, q+ |
5 `6 y: @2 @, C$ m8.2.6 事务ID和隔离 145+ i) W) N4 m- C+ ^4 A
2 I1 C4 y- {; G8.2.7 事务的工作原理 146
/ B) w. ~8 L+ \9 G
3 s, _: ]4 j& {$ u8.3 事务的性能 148# f$ s( D) m- j* @* J! W% D
' V1 }: r X3 X3 D% o1 Q8.4 小结 148
8 [6 e. o; j+ U4 \2 t! J6 I
\/ v2 l3 j5 I- ~) V第 9 章 构建数据管道 1492 O" F2 D: Y) D1 l ]
' z; ^ B( C/ |
9.1 构建数据管道时需要考虑的问题 150* k) Q8 g% |- m3 ~
; B' p0 s4 e$ l9 R# s. ]5 p) Q
9.1.1 及时性 150: @8 o* N* z0 C; @/ w+ Q
* x/ l; |4 D0 ?
9.1.2 可靠性 1501 O$ z; b5 S& y3 i e* I; [( D
: t4 [; |9 z8 \8 m- }! E9.1.3 高吞吐量和动态吞吐量 1512 r$ w. L" z5 V7 Q3 t
. M: a6 Z8 v3 v
9.1.4 数据格式 151
5 Y, h0 L& `: f; V" `& K2 N2 o0 x8 C* Y
9.1.5 转换 152
% k1 C/ k* x) T. m0 n1 W- X8 q/ Z- H! ^! N4 A* d7 Z* `
9.1.6 安全性 1526 m3 p* ?! }$ m6 x$ p& o
) K1 L# H9 U7 j8 a! L" o9.1.7 故障处理 153% t0 E8 S$ g" [: ?% V6 o. }' i
0 }6 X r- g7 U, r9.1.8 耦合性和灵活性 1532 o& [- Y! @& v6 U
) X3 l$ {! k) i( W5 K
9.2 何时使用Connect API或客户端API 154
/ a# C( b1 C( p
1 }2 C- m& _: {1 B0 |( M! H9.3 Kafka Connect 154
- v) }* S4 N: S. T, X, U; S, w# v8 ?% W8 V0 @& j
9.3.1 运行Connect 155
! i$ r, X2 U d0 x% v7 n. K9 w C% w5 ~7 Z
9.3.2 连接器示例:文件数据源和文件数据池 157
& ]) N" F& F- T8 P, K$ O1 _4 z; F8 a) U$ S$ ?0 j$ Q
9.3.3 连接器示例:从MySQL到ElasticSearch 159
6 c1 z4 A9 I8 x; q3 Q3 B5 K8 d8 I K: I5 _; u5 x/ Z3 f1 C0 [ e
9.3.4 单一消息转换 164
4 V7 N9 e/ @: z1 P0 {, H. }
, O: q3 m. k" x- T6 k# u+ `1 [9.3.5 深入理解Connect 167/ t2 A' _0 _; S+ X
; A7 ` S* R3 w5 k: X% D
9.4 Connect之外的选择 1692 q- Y$ W5 i; s
- R' b% l$ y; W0 s9 y9.4.1 其他数据存储系统的数据摄入框架 169/ |! H& p- T% [# C" Q* x3 c
+ b. z. @$ s7 Z5 T2 }7 p) V: F
9.4.2 基于图形界面的ETL工具 1692 n J3 o( M1 |3 o
- J4 z$ I9 v. f& X+ y- q, n0 w2 s
9.4.3 流式处理框架 170
: [9 V; m1 Z! T. B& [. I
V1 I: {5 z+ l7 v: @- M4 L; S9.5 小结 1703 Q6 L* [/ V4 E, ~) `, `8 M
& V7 O% O( y4 |& U, ^第 10 章 跨集群数据镜像 171: I! ^; Y$ h1 w7 y* ^8 S
7 l" c# I7 c0 L6 u5 U+ l* \10.1 跨集群镜像的应用场景 171
9 H) X. w/ L6 |) M" L8 c$ \+ F# C, g4 q5 i' X: ^. G
10.2 多集群架构 1722 c0 F7 t9 x2 C' S o
+ V( I, W$ G- j; [
10.2.1 跨数据中心通信的一些现实情况 173
" y! Z Q( T' L* p8 D, J7 L5 h8 w, {- D% t. w
10.2.2 星型架构 173$ |+ x" a5 l' ^6 b
) D f) o; P; _* ]: e& K
10.2.3 双活架构 175
1 S( O0 d9 f( i! |, R, k; ^9 |6 I6 t9 M
10.2.4 主备架构 176
% \9 j+ v' R1 r6 c+ ~% o2 g' M* {$ @5 C
10.2.5 延展集群 180
" g5 o t# `. k
' L7 K; }% {" U7 n1 V) L# G10.3 MirrorMaker 181' m* R3 n) T. _ Y; T: e$ L
# c* s. B& x; D# Q10.3.1 配置MirrorMaker 1837 Y5 N, N8 K0 Y7 g9 {
8 J. u& ^- }% J2 l7 A
10.3.2 多集群复制拓扑 184
7 n' e9 Q9 c/ _3 ^ m1 i8 |) ]( ^) E7 \* O" v- A; y% d7 M8 c
10.3.3 保护MirrorMaker 185
2 E3 q9 Y. g* l4 E# ]* M! H1 q" n1 o( H
10.3.4 在生产环境中部署MirrorMaker 186
* T) u: Q& ^/ ~, j0 D5 K
6 S, D6 |8 T5 m+ J$ Z10.3.5 MirrorMaker调优 189
- x. _& M& Y+ r! l( f
: N1 f \- T; B+ O10.4 其他跨集群镜像方案 1902 {# a/ ]" R9 C* k- @/ X
/ A) a3 c) U5 h! u* D& N5 |! n
10.4.1 Uber的uReplicator 190
3 k9 o$ @+ v3 P) M* q1 d3 ~: u8 L4 n- g1 B& w8 X( t
10.4.2 LinkedIn的Brooklin 191
k* Z# L3 [! H' N$ _# H6 d5 P/ c a6 j+ W. Z
10.4.3 Confluent的跨数据中心镜像解决方案 191
) J, ]" t. X8 S/ a
6 A: U7 ]: ]. z; z10.5 小结 193
$ U! a& z! a' z; k3 N* z
6 n$ S5 C) [6 `; F, Y% [7 G第 11 章 保护Kafka 194" E* Q$ V' V; u9 T9 I5 N2 n
0 Y$ c5 C+ `+ N
11.1 锁住 Kafka 194
# B v. \, z' O, X3 \+ i
# T0 j6 l9 S' O1 e' _' j& E! v11.2 安全协议 196) q2 E/ E2 v* B$ K( p
) c/ f+ b8 y* U11.3 身份验证 1972 }- d# ^0 ` S5 F
+ k8 @9 G7 q' c" E/ U& R# C$ j11.3.1 SSL 198
: y( i7 ~$ ^% e: s6 s! u$ K
l( {6 J$ n( c11.3.2 SASL 201
, x! ]9 y! H' b5 l, A& Q* `: a. U' m+ A- D4 s8 y" Y
11.3.3 重新认证 210: {4 m! u% g- x3 L; U( u+ p) E
- e8 e# D# o; g& Z- f6 j11.3.4 安全更新不停机 2115 a" m+ R* ^/ Q( `: O1 U( a$ D0 y
" |" ^% s& T6 p9 N" ?6 y/ U11.4 加密 212
9 g+ T7 w& @' c7 h7 e# k/ x3 E* ?9 N1 g1 d- J$ }% f
11.5 授权 2141 `4 x& k" s, q4 w4 r2 n
0 b/ W: g7 h0 H11.5.1 AclAuthorizer 2140 C: Z2 k) p' q0 W7 j& }3 s
5 v; V: i1 O p0 p
11.5.2 自定义授权 217- g j O. q/ U# ?5 U/ Y# U; a
, |) Q- F0 x# v( S
11.5.3 安全方面的考虑 219
6 X5 S. w; t# k+ f$ z: s8 t6 S0 D( k' l' Y+ A
11.6 审计 2190 j4 F+ _+ W( @) g' l7 X# W8 Y
! d: e+ b% u+ B! U+ Q5 u- o11.7 保护ZooKeeper 220
: I! _4 d3 R& j& C; J. A/ T
c3 }% O8 Z4 b3 h+ l& ?+ X/ O- u11.7.1 SASL 220) O2 }6 l R6 k3 l: W2 `
- F0 O5 I, b; }, V k$ K$ B+ o& ^5 l
11.7.2 SSL 2215 [( {; W$ H5 p. {
- ^, ~7 w4 h1 ^- ` I8 o11.7.3 授权 221; @2 I C$ L% P/ O* ~3 b
/ ?" g2 y6 B; V6 p9 b- u: [11.8 保护平台 222
+ q% \* M3 n8 K* G3 @4 p. F( p; M9 m4 x
11.9 小结 223
& k/ b& g" R3 @* H9 ], _+ _, l0 M- h# z1 T, I! e/ o! Q
第 12 章 管理Kafka 225
5 i* E- ?1 \: ?2 h
) |2 ?6 y! Z; j2 R% W$ F0 e12.1 主题操作 2259 p* ~! c+ }! y3 h+ m3 j8 J1 [/ k
0 T {1 q! m3 B1 e, n
12.1.1 创建新主题 226$ s; R2 b5 N, [ | n7 G. S9 L
+ j0 q3 S5 d0 o: o, n1 Q5 r; }12.1.2 列出集群中的所有主题 2277 c4 S% Q, y7 e0 M. V; A& b3 O
# l3 U0 s& [6 L2 |* y$ D2 a2 }- A4 X
12.1.3 列出主题详情 227
o, _6 Y- }* b, Z; @, r) E, ~$ x) c9 N. j, N& U
12.1.4 增加分区 228
; A7 N( g8 ^4 C! p: Z$ g
$ N* N0 ~1 X4 s12.1.5 减少分区 229" S: q4 p0 L8 D( F" A
! M: p F3 k0 U' ~' n
12.1.6 删除主题 2291 z/ Q/ G6 C+ Q6 A9 m J
% {! G9 Z5 e' J
12.2 消费者群组 230" b5 \0 @# y8 L2 Y3 N
/ |* ~+ `* i2 Y* X ]5 O12.2.1 列出并描述消费者群组信息 230
7 a) v/ H u9 Y/ F3 x* l+ H0 m
12.2.2 删除消费者群组 231
1 Y/ P6 q! z& e; m o$ G' E$ j) e! x4 F8 T
12.2.3 偏移量管理 232- J7 G% C' u5 f# @& j- x
1 j' M& W+ L* q
12.3 动态配置变更 233
( f% E% A! s: J' } P0 ~2 s- V# _. B3 G, y& f; F2 g$ N
12.3.1 覆盖主题的默认配置 233
! I" A" ]! A+ b# |, U) j
. y6 y2 o( Z) q0 S% C+ O12.3.2 覆盖客户端和用户的默认配置 2343 J/ K4 X8 q$ I! R+ Q0 Y" T# L' Y
; d9 f1 C4 k+ N. L( ^12.3.3 覆盖broker的默认配置 235! c) g7 `7 A$ l% L7 C& r
* H9 _( T3 W7 b' C+ {' s
12.3.4 查看被覆盖的配置 236% u7 o9 c1 ^$ o% s" q; X3 U) [- V
! p0 A5 Q6 g @3 q% s12.3.5 移除被覆盖的配置 236' H" |) x( E, ~$ @: W; s" T& v
* P! t% F" X4 u& A
12.4 生产和消费 2365 r: T) \8 o' h$ H+ ]
; g; S2 e7 Q+ M+ J
12.4.1 控制台生产者 237
1 @3 T& s7 M3 S h# A( Z8 d; B' b6 a- t5 W6 K4 D
12.4.2 控制台消费者 238
& k) d0 V/ E- o; @! `
, v/ j% t! G$ O8 f* W X# h+ Q12.5 分区管理 241- N7 e7 H. N. Z. G9 W$ H
+ ~5 g# F8 y5 R. H) w
12.5.1 首领选举 241
1 a) a5 k8 q! a, r
0 f9 Y0 P0 S; f5 K o6 h12.5.2 修改分区的副本 242
2 P7 @: b& j I' c5 F$ b/ X% a. c* ^* r# J# F
12.5.3 转储日志片段 246- f3 e4 ~" k! v( w
$ c" J3 A' f, d4 d8 c
12.5.4 副本验证 248/ _/ s$ y! ~1 Q5 k7 x7 p) y* K
4 W4 q1 Q# e* h ?4 m5 w12.6 其他工具 248# Q+ U5 u+ n1 E: C( h# P. N
" p2 h5 F4 ~9 _% {12.7 不安全的操作 2490 |& o0 z1 z) A8 \
0 f$ `* C# p! T8 k5 X9 |
12.7.1 移动集群控制器 249
/ N' ~, B* f9 B3 b
2 a- v( m" h' H( o! V! s1 G; R) U12.7.2 移除待删除的主题 249/ [! @# F t& Y/ G% w
" W6 Q7 d- L2 G- n( [. p12.7.3 手动删除主题 250
0 ~+ h# F6 v3 i& y' x* H* g9 |% B( g2 Z- J, B- J) v% W) a' Q
12.8 小结 250! o2 ^& Y" x- u; ~ i7 P% b
! A# { W/ R6 I0 w4 O- H8 M第 13 章 监控Kafka 251
0 B- ^' r, s" \2 |2 U: h
% f1 X: D' H7 g13.1 指标基础 251
) H9 T/ {( M: f: J1 H3 j% t b5 c; K7 u. e
13.1.1 指标来自哪里 251
' d+ E7 t2 H+ W# ~0 v
' @0 N+ W4 o8 h; _0 g13.1.2 需要哪些指标 252
$ `' `+ I( c" P4 y0 z
2 C7 u& _$ `/ |4 t4 k; q8 [+ S% l13.1.3 应用程序健康检测 253
, ~- d& I3 g: j5 B- n; m* d5 J2 I: v2 ~9 P$ N4 F
13.2 服务级别目标 2548 R6 u/ E! }7 s1 F3 `
( r; L# k$ P# D+ `- t# ]0 r- l9 y* C2 P13.2.1 服务级别定义 2546 K9 V8 x& l% Y4 `, n" C
7 v2 C. `5 }; l: _8 q5 v
13.2.2 哪些指标是好的SLI 255$ E6 j4 \ c2 I2 _7 K7 L
+ E3 \( }5 d0 n( X/ ?; }# `; o13.2.3 将SLO用于告警 255
% D/ F4 v' ]9 i4 I) [1 }) [) |/ m7 X O
13.3 broker的指标 256
1 \+ N2 C: m' a+ ^! G7 J: Z2 y3 h; `' Y/ p2 ]0 p) |/ {+ y
13.3.1 诊断集群问题 2574 l+ w- c6 }: E9 j5 s- R
7 n1 H8 x. @. J9 f7 T7 Y C, |
13.3.2 非同步分区的艺术 257" ^5 v( m3 W r6 g
3 r: Z/ }- s* C; e3 p13.3.3 broker指标 261
/ D1 h$ }& ^" P- {9 ]6 u
@# w& [ o4 X; R' v13.3.4 主题的指标和分区的指标 268
' z. e m! w: T \6 [6 R1 \' o3 t8 X4 `$ W" i
13.3.5 Java虚拟机监控 269" V4 p: G" C+ @$ E, M
2 F7 {) M. B% M( p& Q13.3.6 操作系统监控 2706 E { a2 C$ K
* ^# b2 A; L6 P! A
13.3.7 日志 272
* z6 t' a4 ~1 B) r- {2 D( P- P2 o+ j5 I' J3 j" @
13.4 客户端监控 272- j% Q. {6 F% \8 ]) m0 h8 f" X' G
" t/ S5 L+ x; d) L% V13.4.1 生产者指标 272
7 t, ?4 e q+ J5 V- m5 D# e& B O. A. M2 ^
13.4.2 消费者指标 274
H% ]8 C. q3 x4 U7 B; v1 w$ T" K) f- V1 o0 l* t
13.4.3 配额 2762 ~% l, O' v9 ^! e( N
5 I8 g; o/ k6 n8 q( X" u
13.5 滞后监控 277
# T% U0 Y6 o4 ^& X% o: O
2 J1 N9 H. p; f13.6 端到端监控 2773 m2 B& ]) [6 n, S) C; ^- T& \7 k0 [
) L! t. l1 F( s13.7 小结 278
: o4 [. r) B! G7 W" L$ k1 y7 u1 b3 S' t8 k3 f" [+ L
第 14 章 流式处理 279
$ z8 _2 Y$ x$ B* ?/ n% F {9 [$ r7 h! Q$ h% g% [ q! ~
14.1 什么是流式处理 280
* ~2 `3 \% g7 E, E$ d6 o
9 l" S/ n' Z3 t1 l& M1 Z0 W3 Q14.2 流式处理相关概念 282
, o# s9 ~7 b2 v) R" { o; N5 x% F0 C$ o0 q
14.2.1 拓扑 2825 L( k! _+ x% k" @7 S$ k- b6 O
3 W/ a# s9 T" i; \14.2.2 时间 2826 N7 r* _; W, X. A$ p
- D4 E0 s3 F9 s7 }. L4 b7 H14.2.3 状态 284 x8 z) L: l: [# q, i+ J
0 {& [, h7 [# l7 j( ^+ Y14.2.4 流和表 284! p) E$ Q* |8 m, Y( B! x* y1 V
@1 j; m, f1 G C14.2.5 时间窗口 285
' ~' v, C9 U' F* I) h+ U3 s
' b1 t3 ~* B! x/ @' s5 R% c3 U+ ~14.2.6 处理保证 287
4 _# x* L3 P* w' B9 a* O
8 e+ |3 W0 p- J14.3 流式处理设计模式 287! z4 Q. K: V; g. d g) Q! C& ^
6 H% Z* A6 G( _$ Z2 w14.3.1 单事件处理 287
8 p9 g% z' D q5 m2 x8 x2 U9 V! e8 h3 L4 w! L/ u
14.3.2 使用本地状态 288" ?% {" J5 o; L1 e3 B+ {( s
& {/ M. g! D0 |) \+ g
14.3.3 多阶段处理和重分区 289
* l4 T: w% c( D1 J }% h* ~- Z/ ?, A! C
14.3.4 使用外部查找:流和表的连接 2909 }/ W0 d- Y+ {$ y
/ B/ n Y9 |; _0 X1 |14.3.5 表与表的连接 291# b2 {8 K' c) z
$ y6 Z P" N) M
14.3.6 流与流的连接 291: s; j4 m0 H% \+ C0 N
0 @( M4 A5 Y9 [* e3 A: g, V
14.3.7 乱序事件 292- k+ e7 ~9 d6 Y
: F6 e. \& x( L
14.3.8 重新处理 2931 X% u" W6 Z, i ~) k/ ^
5 n8 P' r* F( [8 l14.3.9 交互式查询 294
6 d# B/ E4 W& h: Z
- o+ P7 p6 V( z5 [ ~14.4 Streams示例 294& O' D% F, W/ v, E5 ~3 o t0 I* b: x9 L
& Z$ q- X) M2 Y3 l; q
14.4.1 字数统计 2941 @0 ~$ R* p8 `+ p. ]0 h
; [7 G4 B, O7 u5 ?" Z! j14.4.2 股票市场统计 2960 B" ]/ u1 S7 _
6 I1 ^( E9 X" V
14.4.3 填充点击事件流 298
1 \! @+ y% D) ~! l9 O* Z8 c0 _6 \6 D5 c% Z1 s
14.5 Streams架构概览 300
" ?! K6 h( g$ H# I' x q
, g/ e- U; x2 ]3 `14.5.1 构建拓扑 300
" r0 Z* l) I0 T) O2 b3 P+ ]2 J. w' N) C3 Y x3 t7 _! |
14.5.2 优化拓扑 301* o" W7 d7 a& y4 [6 {1 D
1 b! j- Z6 }3 N' |14.5.3 测试拓扑 301
g& J- ?! |' G: z+ w6 x, q7 r" |% T3 V, P
14.5.4 扩展拓扑 302
! E. G$ G( o) s" F+ M/ _java8.com9 R5 I. o8 O7 V
14.5.5 在故障中存活下来 304) q1 l% g& _* F- H2 D
+ g: @! b. k4 d" N9 i# x
14.6 流式处理应用场景 305. `2 j1 ~' v2 n; _- J9 O( A
( t+ U% E. f% X, u
14.7 如何选择流式处理框架 306% R3 Y( ]. K9 x2 ~: i
! {' O" y- }6 d6 s# m
14.8 小结 307
9 E( d% k z' ~5 y* \' |) |- P
- ]& q" R# m7 V6 o6 j附录 A 在其他操作系统中安装Kafka 309' a+ k: I4 T8 i3 V# @% k8 d8 m
* j4 b9 r R( p3 Q; D附录 B 其他Kafka工具 3149 P9 e; o8 @, D$ P+ L! e
: n; ?# P0 z$ J5 Y
百度云盘下载地址(完全免费-绝无套路):' Z* m& J: ?/ @# R/ K
1 u" {6 I) O% I" g( |4 h X; M4 T; x) l" {2 A y5 u2 E; d
; Y n. v3 l& n: t2 n R$ K' C. W3 P0 [8 j; U+ S, o9 @
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|