序 xiii
前言 xv
第1章 初识Kafka 1
1.1 发布与订阅消息系统 1
1.1.1 如何开始 2
1.1.2 独立的队列系统 3
1.2 Kafka登场 4
1.2.1 消息和批次 4
1.2.2 模式 4
1.2.3 主题和分区 5
1.2.4 生产者和消费者 5
1.2.5 broker和集群 6
1.2.6 多集群 7
1.3 为什么选择Kafka 8
1.3.1 多个生产者 8
1.3.2 多个消费者 8
1.3.3 基于磁盘的数据存储 9
1.3.4 伸缩性 9
1.3.5 高性能 9
1.4 数据生态系统 9
1.5 起源故事 11
1.5.1 LinkedIn的问题 11
1.5.2 Kafka的诞生 12
1.5.3 走向开源 12
1.5.4 命名 13
1.6 开始Kafka之旅 13
第2章 安装Kafka 14
2.1 要事先行 14
2.1.1 选择操作系统 14
2.1.2 安装Java 14
2.1.3 安装Zookeeper 15
2.2 安装Kafka Broker 17
2.3 broker配置 18
2.3.1 常规配置 18
2.3.2 主题的默认配置 19
2.4 硬件的选择 23
2.4.1 磁盘吞吐量 23
2.4.2 磁盘容量 23
2.4.3 内存 23
2.4.4 网络 24
2.4.5 CPU 24
2.5 云端的Kafka 24
2.6 Kafka集群 24
2.6.1 需要多少个broker 25
2.6.2 broker配置 25
2.6.3 操作系统调优 26
2.7 生产环境的注意事项 28
2.7.1 垃圾回收器选项 28
2.7.2 数据中心布局 29
2.7.3 共享Zookeeper 29
2.8 总结 30
第3章 Kafka生产者——向Kafka写入数据 31
3.1 生产者概览 32
3.2 创建Kafka生产者 33
3.3 发送消息到Kafka 34
3.3.1 同步发送消息 35
3.3.2 异步发送消息 35
3.4 生产者的配置 36
3.5 序列化器 39
3.5.1 自定义序列化器 39
3.5.2 使用Avro序列化 41
3.5.3 在Kafka里使用Avro 42
3.6 分区 45
3.7 旧版的生产者API 46
3.8 总结 47
第4章 Kafka消费者——从Kafka读取数据 48
4.1 KafkaConsumer概念 48
4.1.1 消费者和消费者群组 48
4.1.2 消费者群组和分区再均衡 51
4.2 创建Kafka 消费者 52
4.3 订阅主题 53
4.4 轮询 53
4.5 消费者的配置 55
4.6 提交和偏移量 57
4.6.1 自动提交 58
4.6.2 提交当前偏移量 59
4.6.3 异步提交 59
4.6.4 同步和异步组合提交 61
4.6.5 提交特定的偏移量 61
4.7 再均衡监听器 62
4.8 从特定偏移量处开始处理记录 64
4.9 如何退出 66
4.10 反序列化器 67
4.11 独立消费者——为什么以及怎样使用没有群组的消费者 71
4.12 旧版的消费者API 71
4.13 总结 72
第5章 深入Kafka 73
5.1 集群成员关系 73
5.2 控制器 74
5.3 复制 74
5.4 处理请求 76
5.4.1 生产请求 78
5.4.2 获取请求 78
5.4.3 其他请求 80
5.5 物理存储 81
5.5.1 分区分配 81
5.5.2 文件管理 82
5.5.3 文件格式 83
5.5.4 索引 84
5.5.5 清理 84
5.5.6 清理的工作原理 84
5.5.7 被删除的事件 86
5.5.8 何时会清理主题 86
5.6 总结 86
第6章 可靠的数据传递 87
6.1 可靠性保证 87
6.2 复制 88
6.3 broker配置 89
6.3.1 复制系数 89
6.3.2 不完全的首领选举 90
6.3.3 最少同步副本 91
6.4 在可靠的系统里使用生产者 92
6.4.1 发送确认 92
6.4.2 配置生产者的重试参数 93
6.4.3 额外的错误处理 94
6.5 在可靠的系统里使用消费者 94
6.5.1 消费者的可靠性配置 95
6.5.2 显式提交偏移量 95
6.6 验证系统可靠性 97
6.6.1 配置验证 98
6.6.2 应用程序验证 98
6.6.3 在生产环境监控可靠性 99
6.7 总结 100
第7章 构建数据管道 101
7.1 构建数据管道时需要考虑的问题 102
7.1.1 及时性 102
7.1.2 可靠性 102
7.1.3 高吞吐量和动态吞吐量 103
7.1.4 数据格式 103
7.1.5 转换 104
7.1.6 安全性 104
7.1.7 故障处理能力 104
7.1.8 耦合性和灵活性 105
7.2 如何在Connect API和客户端API之间作出选择 105
7.3 Kafka Connect 106
7.3.1 运行Connect 106
7.3.2 连接器示例——文件数据源和文件数据池 107
7.3.3 连接器示例——从MySQL到ElasticSearch 109
7.3.4 深入理解Connect 114
7.4 Connect之外的选择 116
7.4.1 用于其他数据存储的摄入框架 116
7.4.2 基于图形界面的ETL 工具 117
7.4.3 流式处理框架 117
7.5 总结 117
第8章 跨集群数据镜像 118
8.1 跨集群镜像的使用场景 118
8.2 多集群架构 119
8.2.1 跨数据中心通信的一些现实情况 119
8.2.2 Hub和Spoke架构 120
8.2.3 双活架构 121
8.2.4 主备架构 123
8.2.5 延展集群 127
8.3 Kafka的MirrorMaker 128
8.3.1 如何配置 129
8.3.2 在生产环境部署MirrorMaker 130
8.3.3 MirrorMaker调优 132
8.4 其他跨集群镜像方案 134
8.4.1 优步的uReplicator 134
8.4.2 Confluent的Replicator 135
8.5 总结 135
第9章 管理Kafka 136
9.1 主题操作 136
9.1.1 创建主题 137
9.1.2 增加分区 138
9.1.3 删除主题 138
9.1.4 列出集群里的所有主题 139
9.1.5 列出主题详细信息 139
9.2 消费者群组 140
9.2.1 列出并描述群组 140
9.2.2 删除群组 142
9.2.3 偏移量管理 142
9.3 动态配置变更 143
9.3.1 覆盖主题的默认配置 143
9.3.2 覆盖客户端的默认配置 145
9.3.3 列出被覆盖的配置 145
9.3.4 移除被覆盖的配置 146
9.4 分区管理 146
9.4.1 首选的首领选举 146
9.4.2 修改分区副本 147
9.4.3 修改复制系数 150
9.4.4 转储日志片段 151
9.4.5 副本验证 152
9.5 消费和生产 153
9.5.1 控制台消费者 153
9.5.2 控制台生产者 155
9.6 客户端ACL 157
9.7 不安全的操作 157
9.7.1 移动集群控制器 157
9.7.2 取消分区重分配 157
9.7.3 移除待删除的主题 158
9.7.4 手动删除主题 158
9.8 总结 159
第10章 监控Kafka 160
10.1 度量指标基础 160
10.1.1 度量指标在哪里 160
10.1.2 内部或外部度量 161
10.1.3 应用程序健康检测 161
10.1.4 度量指标的覆盖面 161
10.2 broker的度量指标 162
10.2.1 非同步分区 162
10.2.2 broker度量指标 166
10.2.3 主题和分区的度量指标 173
10.2.4 Java虚拟机监控 174
10.2.5 操作系统监控 175
10.2.6 日志 176
10.3 客户端监控 177
10.3.1 生产者度量指标 177
10.3.2 消费者度量指标 179
10.3.3 配额 181
10.4 延时监控 182
10.5 端到端监控 183
10.6 总结 183
第11章 流式处理 184
11.1 什么是流式处理 185
11.2 流式处理的一些概念 186
11.2.1 时间 187
11.2.2 状态 188
11.2.3 流和表的二元性 188
11.2.4 时间窗口 189
11.3 流式处理的设计模式 190
11.3.1 单个事件处理 191
11.3.2 使用本地状态 191
11.3.3 多阶段处理和重分区 193
11.3.4 使用外部查找——流和表的连接 193
11.3.5 流与流的连接 195
11.3.6 乱序的事件 195
11.3.7 重新处理 196
11.4 Streams示例 197
11.4.1 字数统计 197
11.4.2 股票市场统计 199
11.4.3 填充点击事件流 201
11.5 Kafka Streams的架构概览 202
11.5.1 构建拓扑 202
11.5.2 对拓扑进行伸缩 203
11.5.3 从故障中存活下来 205
11.6 流式处理使用场景 205
11.7 如何选择流式处理框架 206
11.8 总结 208
附录A 在其他操作系统上安装Kafka 209
作者介绍 214
封面介绍 214
我一直认为,一本好的技术书籍,不应该仅仅是知识的搬运工,更应该能够启发读者的思考,激发读者的创造力。《Kafka权威指南》无疑做到了这一点。这本书的写作风格严谨而又不失趣味,它不仅仅罗列了Kafka的各种API和配置项,更深入地探讨了这些选项背后的设计理念和权衡。我印象最深刻的是关于Kafka的消息持久化机制和恢复机制的讲解,它让我对数据的可靠性有了更深刻的认识。书中对隔离级别、幂等性、事务等概念的阐述,以及如何在分布式环境中保证数据的一致性,都为我提供了宝贵的参考。此外,这本书还涉及到了Kafka的安全方面,包括认证、授权、加密等,这些都是在生产环境中构建安全可靠的Kafka集群所必需的。总而言之,这本书不仅是一个技术指南,更是一本启迪思考的读物,让我能够以更宏观的视角审视Kafka,并在实际工作中做出更明智的决策,不断提升自己的技术能力和工程实践水平。
评分坦白说,我对Kafka的初印象是“高吞吐、低延迟”,但《Kafka权威指南》彻底颠覆了我对它的认知,将它描绘成了一个更加成熟、更加全面的数据处理平台。这本书的深度和广度都令人印象深刻。它不仅仅关注Kafka本身的核心功能,更将目光投向了围绕Kafka构建的整个生态系统。从Producer端如何高效地发送消息,到Consumer端如何高效地消费消息,再到Broker端的调优和监控,这本书都进行了深入的探讨。我特别欣赏它在性能调优方面的篇幅,详细讲解了影响Kafka性能的关键因素,并提供了行之有效的优化策略,比如batching、compression、linger.ms等参数的配置,以及如何根据实际业务场景进行选择。同时,书中也涵盖了Kafka的监控和运维,包括 Metrics、Log、Alerting等,这些都是保证Kafka集群稳定运行不可或缺的部分。这本书让我明白,要真正驾驭Kafka,不仅仅是理解它的基本原理,更重要的是掌握如何对其进行精细化管理和优化,以应对日益增长的业务需求和海量数据。
评分对于许多开发者来说,Kafka可能是一个“黑盒子”,知道它能做什么,但对其内部的运作机制却知之甚少。《Kafka权威指南》就像一把钥匙,为我们打开了这个黑盒子,让我们能够一窥其精妙的设计。这本书以一种非常系统和易懂的方式,剖析了Kafka的方方面面。从Producer和Consumer的客户端如何与Broker进行通信,到Broker之间如何进行Leader选举和数据复制,再到ZooKeeper(在书中讨论的视角下)在集群管理中的作用,都进行了清晰的阐述。我尤其赞赏书中关于消息顺序性保证的论述,以及在分布式环境下实现这一点所面临的挑战和解决方案。这本书不仅仅提供了理论知识,更重要的是,它引导我思考如何在实际应用中利用Kafka的特性来解决复杂的业务问题。比如,如何设计合理的分区策略来平衡负载和提高吞吐量,如何利用Consumer Group来管理消费者的并行度和故障转移。这本书让我对Kafka的理解从“知道”提升到了“理解”和“应用”,对于任何想要深入掌握Kafka的开发者来说,这都是一本不可多得的宝贵资源。
评分在我的职业生涯中,我接触过不少关于分布式系统和消息队列的书籍,但《Kafka权威指南》的出现,着实让我眼前一亮。这本书的编排逻辑清晰,从基础概念的铺垫,到核心机制的深入剖析,再到高级特性的详解,层层递进,非常适合我这样既想打牢基础又想掌握进阶技能的读者。尤其是书中对Kafka的架构设计,比如Broker、Producer、Consumer、ZooKeeper(虽然新版本中ZooKeeper的使用有所弱化,但理解其历史演进和设计思想依然重要)等组件的职责和交互方式,都进行了细致入微的讲解。我尤其欣赏它对于“exactly-once”语义的讨论,以及如何通过不同的配置和编程模式来实现这一目标,这对于构建可靠的数据管道至关重要。此外,书中关于Topic Partitioning、Replication Factor、ISR(In-Sync Replicas)等概念的阐述,不仅让我理解了Kafka的容错和高可用是如何实现的,还为我在实际工作中优化性能、提高吞吐量提供了宝贵的思路。这本书的价值在于,它不仅仅是理论的堆砌,更充满了实践的智慧,让我能够更自信地在实际项目中应用Kafka,解决遇到的各种挑战。
评分作为一名长期在互联网公司一线摸爬滚打的技术人员,我深知理论知识与实战技能之间的鸿沟。而《Kafka权威指南》恰恰弥合了这一差距。它不仅仅是枯燥的技术文档的梳理,更像是经验丰富的架构师在耳边娓娓道来,将Kafka这个复杂的系统拆解得既易于理解又引人入胜。书中对Kafka生态系统的介绍,如Kafka Connect、Kafka Streams等,让我看到了Kafka不仅仅是一个简单的消息队列,而是一个强大的数据集成和流处理平台。我特别喜欢其中关于Kafka Connect的章节,它详细介绍了如何利用Connectors将Kafka与其他系统(如数据库、文件系统、其他消息队列)无缝集成,这极大地简化了我的数据同步工作。对于Kafka Streams,书中也给出了详实的应用案例,让我了解到如何利用它进行实时数据分析、ETL等复杂场景。阅读过程中,我时常会联想到自己实际项目中遇到的问题,并从中找到解决的灵感。这本书就像一本“武功秘籍”,不仅传授了“招式”,更点拨了“内功心法”,让我对Kafka的理解上升到了一个全新的高度,能够更灵活、更高效地驾驭这个强大的工具。
评分书是本好书,推荐大家阅读。包装无损。
评分说得很通透,怎么分区、复本数量怎么配置,怎么创建双活集群以及如何调优,排查问题都讲到了,很好的一本书!
评分不愧是京东物流,下午下单,第二天上午就到了,书内容不错,适合初学者
评分说得很通透,怎么分区、复本数量怎么配置,怎么创建双活集群以及如何调优,排查问题都讲到了,很好的一本书!
评分内容比较详细,就是目录的条理性有点乱,看这个需要做下笔记了
评分说咯哦对过哦路拿起 look
评分一下买了三本。新一代mq kafka,只要是大公司都会用的中间件。本书是java8,kafka0.9。希望对大家有帮助
评分啦啦啦啦啦啦啦德玛西亚啦啦啦学习网使我快乐
评分emmmmmm 没有送我裁纸刀 ?
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有