第1章 初识Kafka 1
1.1基本概念 1
1.2安装与配置 7
1.3生产与消费 12
1.4服务端参数配置 16
1.5总结 18
第2章 生产者 19
2.1客户端开发 19
2.1.1必要的参数配置 21
2.1.2消息的发送 23
2.1.3序列化 27
2.1.4分区器 31
2.1.5生产者拦截器 33
2.2原理分析 36
2.2.1整体架构 36
2.2.2元数据的更新 39
2.3重要的生产者参数 40
2.4总结 44
第3章 消费者 45
3.1消费者与消费组 45
3.2客户端开发 47
3.2.1必要的参数配置 49
3.2.2订阅主题与分区 51
3.2.3反序列化 54
3.2.4消息消费 59
3.2.5位移提交 62
3.2.6控制或关闭消费 70
3.2.7指定位移消费 72
3.2.8再均衡 79
3.2.9消费者拦截器 81
3.2.10多线程实现 84
3.2.11重要的消费者参数 93
3.3总结 96
第4章 主题与分区 97
4.1主题的管理 97
4.1.1创建主题 98
4.1.2分区副本的分配 106
4.1.3查看主题 111
4.1.4修改主题 113
4.1.5配置管理 117
4.1.6主题端参数 120
4.1.7删除主题 122
4.2初识KafkaAdminClient 125
4.2.1基本使用 125
4.2.2主题合法性验证 130
4.3分区的管理 132
4.3.1优先副本的选举 132
4.3.2分区重分配 136
4.3.3复制限流 140
4.3.4修改副本因子 146
4.4如何选择合适的分区数 150
4.4.1性能测试工具 150
4.4.2分区数越多吞吐量就越高吗 153
4.4.3分区数的上限 155
4.4.4考量因素 159
4.5总结 160
第5章 日志存储 161
5.1文件目录布局 161
5.2日志格式的演变 164
5.2.1 v0版本 165
5.2.2 v1版本 167
5.2.3消息压缩 168
5.2.4变长字段 170
5.2.5 v2版本 174
5.3日志索引 180
5.3.1偏移量索引 181
5.3.2时间戳索引 183
5.4日志清理 185
5.4.1日志删除 185
5.4.2日志压缩 188
5.5磁盘存储 192
5.5.1页缓存 194
5.5.2磁盘I/O流程 195
5.5.3零拷贝 198
5.6总结 200
第6章 深入服务端 201
6.1协议设计 201
6.2时间轮 209
6.3延时操作 213
6.4控制器 217
6.4.1控制器的选举及异常恢复 217
6.4.2优雅关闭 220
6.4.3分区leader的选举 228
6.5参数解密 229
6.5.1 broker.id 229
6.5.2 bootstrap.servers 231
6.5.3服务端参数列表 236
6.6总结 239
第7章 深入客户端 240
7.1分区分配策略 240
7.1.1 RangeAssignor分配策略 240
7.1.2 RoundRobinAssignor分配策略 241
7.1.3 StickyAssignor分配策略 242
7.1.4自定义分区分配策略 245
7.2消费者协调器和组协调器 252
7.2.1旧版消费者客户端的问题 252
7.2.2再均衡的原理 254
7.3_consumer_offsets剖析 264
7.4事务 268
7.4.1消息传输保障 268
7.4.2幂等 269
7.4.3事务 270
7.5总结 283
第8章 可靠性探究 284
8.1副本剖析 284
8.1.1失效副本 285
8.1.2 ISR的伸缩 287
8.1.3 LEO与HW 289
8.1.4 Leader Epoch的介入 292
8.1.5为什么不支持读写分离 297
8.2日志同步机制 299
8.3可靠性分析 301
8.4总结 305
第9章 Kafka应用 306
9.1命令行工具 306
9.1.1消费组管理 307
9.1.2消费位移管理 309
9.1.3手动删除消息 313
9.2 Kafka Connect 315
9.2.1独立模式 315
9.2.2 REST API 319
9.2.3分布式模式 320
9.3 Kafka Mirror Maker 322
9.4 Kafka Streams 325
9.5总结 330
第10章 Kafka监控 331
10.1监控数据的来源 333
10.1.1 OneMinuteRate 335
10.1.2获取监控指标 336
10.2消费滞后 339
10.3同步失效分区 350
10.4监控指标说明 355
10.5监控模块 358
10.6总结 360
第11章 高级应用 361
11.1过期时间(TTL) 361
11.2延时队列 365
11.3死信队列和重试队列 372
11.4消息路由 373
11.5消息轨迹 375
11.6消息审计 377
11.7消息代理 379
11.7.1快速入门 380
11.7.2 REST API介绍及示例 382
11.7.3服务端配置及部署 388
11.7.4应用思考 391
11.8消息中间件选型 392
11.8.1各类消息中间件简述 393
11.8.2选型要点概述 393
11.8.3消息中间件选型误区探讨 400
11.9总结 401
第12章 Kafka与Spark的集成 402
12.1 Spark的安装及简单应用 403
12.2 Spark编程模型 406
12.3 Spark的运行结构 410
12.4 Spark Streaming简介 412
12.5 Kafka与Spark Streaming的整合 416
12.6 Spark SQL 423
12.7 Structured Streaming 426
12.8 Kafka与Structured Streaming的整合 430
12.9总结 437
附录A Kafka源码环境搭建 438