Apache Kafka实战
2021-11-23 22:47:55 17 举报
AI智能生成
《Apache Kafka实战》书签
作者其他创作
大纲/内容
封面 1
书名页 3
版权页 4
前言 5
目录 8
第1章 认识Apache Kafka 17
1.1 Kafka 快速入门 17
1.1.1 下载并解压缩Kafka 二进制代码压缩包文件 18
1.1.2 启动服务器 19
1.1.3 创建 topic 19
1.1.4 发送消息 20
1.1.5 消费消息 20
1.2 消息引擎系统 21
1.2.1 消息设计 22
1.2.2 传输协议设计 22
1.2.3 消息引擎范型 22
1.2.4 Java 消息服务 24
1.3 Kafka 概要设计 24
1.3.1 吞吐量/延时 24
1.3.2 消息持久化 27
1.3.3 负载均衡和故障转移 28
1.3.4 伸缩性 29
1.4 Kafka 基本概念与术语 29
1.4.1 消息 30
1.4.2 topic 和 partition 32
1.4.3 offset 33
1.4.4 replica 34
1.4.5 leader 和 follower 34
1.4.6 ISR 35
1.5 Kafka 使用场景 36
1.5.1 消息传输 36
1.5.2 网站行为日志追踪 36
1.5.3 审计数据收集 36
1.5.4 日志收集 36
1.5.5 Event Sourcing 36
1.5.6 流式处理 37
1.6 本章小结 37
第2章 Kafka发展历史 38
2.1 Kafka 的历史 38
2.1.1 背景 38
2.1.2 Kafka 横空出世 39
2.1.3 Kafka 开源 40
2.2 Kafka 版本变迁 41
2.2.1 Kafka 的版本演进 41
2.2.2 Kafka 的版本格式 42
2.2.3 新版本功能简介 42
新版本 producer 42
新版本 consumer 45
2.2.4 旧版本功能简介 47
旧版本 producer 47
旧版本 consumer 49
2.3 如何选择 Kafka 版本 51
2.3.1 根据功能场景 51
2.3.2 根据客户端使用场景 51
2.4 Kafka 与 Confluent 52
2.5 本章小结 53
第3章 Kafka线上环境部署 54
3.1 集群环境规划 54
3.1.1 操作系统的选型 54
3.1.2 磁盘规划 56
3.1.3 磁盘容量规划 58
3.1.4 内存规划 59
3.1.5 CPU 规划 59
3.1.6 带宽规划 60
3.1.7 典型线上环境配置 61
3.2 伪分布式环境安装 61
3.2.1 安装 Java 62
3.2.2 安装 ZooKeeper 63
3.2.3 安装单节点 Kafka 集群 64
3.3 多节点环境安装 65
3.3.1 安装多节点 ZooKeeper 集群 66
3.3.2 安装多节点 Kafka 70
3.4 验证部署 71
3.4.1 测试 topic 创建与删除 71
3.4.2 测试消息发送与消费 73
3.4.3 生产者吞吐量测试 74
3.4.4 消费者吞吐量测试 74
3.5 参数设置 75
3.5.1 broker 端参数 75
3.5.2 topic 级别参数 78
3.5.3 GC 参数 79
3.5.4 JVM 参数 80
3.5.5 OS 参数 80
3.6 本章小结 81
第4章 producer开发 82
4.1 producer 概览 82
4.2 构造 producer 85
4.2.1 producer 程序实例 85
1. 构造 Properties 对象 86
2. 构造 Kafka Producer 对象 87
3. 构造 ProducerRecord 对象 88
4. 发送消息 88
5. 关闭 producer 90
4.2.2 producer 主要参数 91
acks 91
buffer.memeory 92
compression.type 93
retries 93
batch.size 94
linger.ms 95
max.request.size 95
request.timeout.ms 95
4.3 消息分区机制 96
4.3.1 分区策略 96
4.3.2 自定义分区机制 96
4.4 消息序列化 99
4.4.1 默认序列化 99
4.4.2 自定义序列化 100
4.5 producer 拦截器 103
4.6 无消息丢失配置 106
4.6.1 producer 端配置 107
4.6.2 broker 端配置 108
4.7 消息压缩 108
4.7.1 Kafka 支持的压缩算法 109
4.7.2 算法性能比较与调优 109
4.8 多线程处理 111
4.9 旧版本 producer 112
4.10 本章小结 114
第5章 consumer开发 115
5.1 consumer 概览 115
5.1.1 消费者( consumer) 115
5.1.2 消费者组( consumer group) 117
5.1.3 位移( offset) 118
5.1.4 位移提交 119
5.1.5 consumer offsets 120
5.1.6 消费者组重平衡( consumer group 「ebalance) 122
5.2 构建 consumer 122
5.2.1 consumer 程序实例 122
1. 构造 Properties 对象 123
2. 构造 KafkaConsumer 对象 125
3. 订阅 topic 列表 125
4. 获取消息 126
5. 处理 ConsumerRecord 对象 126
6. 关闭 consumer 127
5.2.2 consumer 脚本命令 127
5.2.3 consumer 主要参数 128
5.3 订阅 topic 131
5.3.1 订阅 topic 列表 131
5.3.2 基于正则表达式订阅 topic 131
5.4 消息轮询 131
5.4.1 poll 内部原理 131
5.4.2 poll 使用方法 132
5.5 位移管理 134
5.5.1 consumer 位移 135
5.5.2 新版本 consumer 位移管理 136
5.5.3 自动提交与手动提交 137
5.5.4 旧版本 consumer 位移管理 139
5.6 重平衡( rebalance ) 139
5.6.1 rebalance 概览 139
5.6.2 rebalance 触发条件 140
5.6.3 rebalance 分区分配 140
5.6.4 rebalance generation 142
5.6.5 rebalance 协议 142
5.6.6 rebalance 流程 143
5.6.7 rebalance 监昕器 144
5.7 解序列化 146
5.7.1 默认解序列化器 146
5.7.2 自定义解序列化器 147
5.8 多线程消费实例 148
5.8.1 每个线程维护一个 KafkaConsumer 149
5.8.2 单 KafkaConsumer 实例+多 worker 线程 151
5.8.3 两种方法对比 156
5.9 独立 consumer 157
5.10 旧版本 consumer 158
5.10.1 概览 158
5.10.2 high-level consumer 159
5.10.3 low-level consumer 163
5.11 本章小结 169
第6章 Kafka设计原理 170
6.1 broker 端设计架构 170
6.1.1 消息设计 171
1. 消息格式 171
2. 版本变迁 172
(1) V0 版本 173
(2) V1 版本 174
(3) V2 版本 178
6.1.2 集群管理 182
1. 成员管理 182
2. ZooKeeper 路径 184
6.1.3 副本与 ISR 设计 185
1. follower 副本同步 185
2. ISR 设计 187
6.1.4 水印 (watermark)和 leader epoch 190
1. LEO 更新机制 191
2. HW 更新机制 192
3. 图解 Kafka 备份原理 193
4. 基于水印备份机制的缺陷 197
5. 0.11.0.0 版本解决之道 199
6.1.5 日志存储设计 201
1. Kafka 日志 201
2. 底层文件系统 203
3. 索引文件 204
4. 日志留存 206
5. 日志 compaction 207
6.1.6 通信协议( wire protocol) 210
1. 协议设计 210
2. 请求/晌应结构 211
3. 常见请求类型 212
4. 请求处理流程 214
5. 版本与兼容性 216
6. Java API 构造请求实例 217
6.1.7 controller 设计 221
1. controller 概览 221
2. controller 管理状态 221
3. controller 职责 224
4. controller 与 broker 间的通信 227
5. controller 组件 228
6. 老版本 controller 设计缺陷 231
7. 新版本 controller 232
6.1.8 broker 请求处理 232
1. Reactor 模式 232
2. Kafka broker 请求处理 233
6.2 producer 端设计 235
6.2.1 producer 端基本数据结构 235
1. ProducerRecord 235
2. RecordMetadata 236
6.2.2 工作流程 236
6.3 consumer 端设计 239
6.3.1 consumer group 状态机 239
6.3.2 group 管理协议 242
阶段 1 :加入组。 242
阶段 2 :同步组状态信息。 243
6.3.3 rebalance 场景剖析 243
6.4 实现精确一次处理语义 246
6.4.1 消息交付语义 246
6.4.2 幕等性 producer (idempotent producer) 247
6.4.3 事务( transaction) 248
6.5 本章小结 250
第7章 管理Kafka集群 251
7.1 集群管理 251
7.1.1 启动 broker 251
7.1.2 关闭 broker 252
1. 前台方式启动 broker 进程时 252
2. 后台方式启动 broker 进程时 253
7.1.3 设置 JMX 端口 253
7.1.4 增加 broker 254
7.1.5 升级 broker 版本 254
7.2 topic 管理 257
7.2.1 创建 topic 257
7.2.2 删除 topic 259
7.2.3 查询 topic 列表 260
7.2.4 查询 topic 详情 260
7.2.5 修改 topic 261
7.3 topic 动态配置管理 262
7.3.1 增加 topic 配置 262
7.3.2 查看 topic 配置 263
7.3.3 删除 topic 配置 264
7.4 consumer 相关管理 264
7.4.1 查询消费者组 264
7.4.2 重设消费者组位移 267
7.4.3 删除消费者组 272
7.4.4 kafka-consumer-offset-checker 273
7.5 topic 分区管理 274
7.5.1 preferred leader 选举 274
7.5.2 分区重分配 276
7.5.3 增加副本因子 279
7.6 Kafka 常见脚本工具 280
7.6.1 kafka-console-producer 脚本 280
7.6.2 kafka-console-consumer 脚本 281
7.6.3 kafka-run-class 脚本 283
7.6.4 查看消息元数据 284
7.6.5 获取 topic 当前消息数 286
7.6.6 查询 __consumer_offsets 287
7.7 API 方式管理集群 289
7.7.1 服务器端 API 管理 topic 289
7.7.2 服务器端 API 管理位移 291
7.7.3 客户端 API 管理 topic 292
7.7.4 客户端 API 查看位移 296
7.7.5 0.11.0.0 版本客户端 API 297
7.8 MirrorMaker 301
7.8.1 概要介绍 301
7.8.2 主要参数 302
7.8.3 使用实例 303
7.9 Kafka 安全 304
7.9.1 SASL+ACL 305
7.9.2 SSL 加密 313
7.10 常见问题 317
7.11 本章小结 319
第8章 监控Kafka集群 321
8.1 集群健康度检查 321
8.2 MBean 监控 322
8.2.1 监控指标 322
8.2.2 指标分类 324
8.2.3 定义和查询 JMX 端口 325
8.3 broker 端 JMX 监控 326
8.3.1 消息入站/出站速率 326
8.3.2 controller 存活 JMX 指标 327
8.3.3 备份不足的分区数 328
8.3.4 leader 分区数 328
8.3.5 ISR 变化速率 329
8.3.6 broker 1/0 工作处理线程空闲率 329
8.3.7 broker 网络处理线程空闲率 330
8.3.8 单个 topic 总字节数 330
8.4 clients 端 JMX 监控 330
8.4.1 producer 端 JMX 监控 330
8.4.2 consumer 端 JMX 监控 332
8.5 JVM 监控 333
8.5.1 进程状态 334
8.5.2 GC 性能 334
8.6 OS 监控 334
8.7 主流监控框架 335
8.7.1 JmxTool 336
8.7.2 kafka-manager 336
8.7.3 Kafka Monitor 341
8.7.4 Kafka Offset Monitor 343
8.7.5 CruiseControl 345
8.8 本章小结 346
第9章 调优Kafka集群 347
9.1 引言 347
9.2 确定调优目标 349
9.3 集群基础调优 350
9.3.1 禁止 atime 更新 351
9.3.2 文件系统选择 351
9.3.3 设置 swapiness 352
9.3.4 JVM 设置 353
9.3.5 其他调优 353
9.4 调优吞吐量 354
9.5 调优延时 358
9.6 调优持久性 359
9.7 调优可用性 363
9.8 本章小结 365
第10章 Kafka Connect与Kafka Streams 366
10.1 引言 366
10.2 Kafka Connect 367
10.2.1 概要介绍 367
10.2.2 standalone Connect 369
10.2.3 distributed Connect 372
10.2.4 开发 connector 375
10.3 Kafka Streams 378
10.3.1 流处理 378
1. 什么是流处理 379
2. 流处理能做什么 379
10.3.2 Kafka Streams 核心概念 380
10.3.3 Kafka Streams 与其他框架的异同 384
10.3.4 Word Count 实例 385
10.3.5 Kafka Streams 应用开发 388
10.3.6 Kafka Streams 状态查询 398
10.4 本章小结 402
封底 402
0 条评论
下一页