具体描述
《Kafka并不难学!入门、进阶、商业实战》基于Kafka 0.10.2.0以上版本,采用“理论+实践”的形式编写。全书共68个实例。
《Kafka并不难学!入门、进阶、商业实战》共分为4篇:第1篇,介绍了消息队列和Kafka、安装与配置Kafka环境;第2篇,介绍了Kafka的基础操作、生产者和消费者、存储及管理数据;第3篇,介绍了更高级的Kafka知识及应用,包括安全机制、连接器、流处理、监控与测试;第4篇,是对前面知识的综合及实际应用,包括ELK套件整合实战、Spark实时计算引擎整合实战、Kafka Eagle监控系统设计与实现实战。
《Kafka并不难学!入门、进阶、商业实战》的每章都配有同步教学视频(共计155分钟)。视频和图书具有相同的结构,能帮助读者快速而全面地了解每章的内容。本书还免费提供所有案例的源代码。这些代码不仅能方便读者学习,也能为以后的工作提供便利。
《Kafka并不难学!入门、进阶、商业实战》结构清晰、案例丰富、通俗易懂、实用性强。特别适合Kafka系统的初学者和进阶读者作为自学教程。另外,本书也适合社会培训学校作为培训教材,还适合大中专院校的相关专业作为教学参考书。
作者简介
邓杰
资深大数据全栈开发者,极客学院讲师,开源爱好者,博客园博主。
开发了Kafka系统监控管理工具——Kafka Eagle,将其发布在Github上,深受业界开发者赞誉。
作为极客学院特邀讲师期间,制作了多个技术视频,讲授Hadoop技术、Kafka技术等课程,广受学员好评。
目录信息
第1章 了解消息队列和Kafka 2
1.1 本章教学视频说明 2
1.2 消息队列 2
∟1.2.1 什么是消息队列 3
∟1.2.2 消息队列主要有哪些作用 3
1.3 为什么需要Kafka 6
1.4 Kafka的基本概念 7
∟1.4.1 代理、生产者、消费者、消费者组 7
∟1.4.2 主题、分区、副本、记录 8
1.5 了解Kafka的工作机制——生产消息/消费消息 9
1.6 Kafka的使用范围 10
∟1.6.1 Kafka的设计初衷 10
∟1.6.2 Kafka的特性 11
∟1.6.3 Kafka适用于哪些场景 13
1.7 小结 14
第2章 安装及配置Kafka 15
2.1 本章教学视频说明 15
2.2 安装与配置基础环境 16
∟2.2.1 安装并配置Linux操作系统 16
∟2.2.2 实例1:安装与配置Java运行环境 18
∟2.2.3 实例2:配置SSH免密码登录 21
∟2.2.4 实例3:安装与配置Zookeeper 23
2.3 实例4:部署Kafka 27
∟2.3.1 单机模式部署 27
∟2.3.2 分布式模式部署 29
2.4 实例5:安装与配置Kafka监控工具 32
∟2.4.1 获取并编译Kafka Eagle源代码 32
∟2.4.2 安装与配置Kafka Eagle 33
2.5 实例6:编译Kafka源代码 37
∟2.5.1 安装与配置Scala运行环境 38
∟2.5.2 安装与配置Gradle 39
∟2.5.3 了解Kafka源代码的编译过程 40
2.6 实例7:将Kafka源代码导入编辑器 42
∟2.6.1 导入IntelliJ IDEA编辑器 42
∟2.6.2 导入Eclipse编辑器 44
2.7 了解元数据的存储分布 46
2.8 了解控制器的选举流程 48
∟2.8.1 了解控制器的启动顺序 48
∟2.8.2 了解主题分区Leader节点的选举过程 52
∟2.8.3 了解注册分区和副本状态机 59
∟2.8.4 了解分区自动均衡和分区重新分配 61
2.9 小结 66
——第2篇 入门
第3章 Kafka的基本操作 68
3.1 本章教学视频说明 68
3.2 操作Zookeeper集群 68
∟3.2.1 Zookeeper的作用及背景 69
∟3.2.2 实例8:单机模式启动Zookeeper系统 70
∟3.2.3 实例9:单机模式关闭Zookeeper系统 72
∟3.2.4 实例10:分布式模式启动Zookeeper集群 74
3.2.5 实例11:分布式模式关闭Zookeeper集群 77
3.3 操作Kafka集群 77
∟3.3.1 实例12:单机模式启动Kafka系统 78
∟3.3.2 实例13:单机模式关闭Kafka系统 79
∟3.3.3 实例14:分布式模式启动Kafka集群 81
∟3.3.4 实例15:分布式模式关闭Kafka集群 84
3.4 管理主题 85
∟3.4.1 什么是主题 86
∟3.4.2 实例16:创建主题 87
∟3.4.3 实例17:查看主题 88
∟3.4.4 实例18:修改主题 92
∟3.4.5 实例19:删除主题 94
3.5 管理分区与副本 95
∟3.5.1 分区和副本的背景及作用 95
∟3.5.2 实例20:修改分区 96
∟3.5.3 实例21:修改副本数 97
3.6 小结 99
第4章 将消息数据写入Kafka系统——生产 100
4.1 本章教学视频说明 100
4.2 了解Kafka生产者 101
4.3 使用脚本操作生产者 101
∟4.3.1 实例22:通过监控工具查看消息 102
∟4.3.2 实例23:启动消费者程序,并查看消息 103
4.4 发送消息到Kafka主题 104
∟4.4.1 了解异步模式 104
∟4.4.2 实例24:生产者用异步模式发送消息 105
∟4.4.3 了解同步模式 105
∟4.4.4 实例25:生产者用同步模式发送消息 106
∟4.4.5 多线程发送消息 107
∟4.4.6 实例26:生产者用单线程发送消息 107
∟4.4.7 实例27:生产者用多线程发送消息 110
4.5 配置生产者的属性 112
4.6 保存对象的各个属性——序列化 115
∟4.6.1 实例28:序列化一个对象 115
∟4.6.2 实例29:在生产者应用程序中实现序列化 117
4.7 自定义主题分区 122
∟4.7.1 实例30:编写自定义主题分区的算法 122
∟4.7.2 实例31:演示自定义分区类的使用 123
4.8 小结 125
第5章 从Kafka系统中读取消息数据——消费 126
5.1 本章教学视频说明 126
5.2 了解Kafka消费者 126
∟5.2.1 为什么需要消费者组 126
∟5.2.1 消费者和消费者组的区别 127
∟5.2.2 消费者和分区的对应关系 127
5.3 使用Kafka系统的脚本操作消费者 130
∟5.3.1 认识消费者新接口 130
∟5.3.2 实例32:用新接口启动消费者程序,并查看消费者信息 131
∟5.3.3 实例33:用旧接口启动消费者程序,并查看消费者元数据的存储结构 134
5.4 消费Kafka集群中的主题消息 136
∟5.4.1 主题如何自动获取分区和手动分配分区 137
∟5.4.2 实例34:主题自动/手动获取分区 137
∟5.4.3 实例35:反序列化主题消息 140
∟5.4.4 如何提交消息的偏移量 145
∟5.4.5 实例36:使用多线程消费多个分区的主题 146
5.5 配置消费者的属性 150
5.6 小结 151
第6章 存储及管理数据 152
6.1 本章教学视频说明 152
6.2 分区存储数据 152
∟6.2.1 熟悉分区存储 153
∟6.2.2 了解消息的格式 154
6.3 清理过期数据的两种方法 155
6.4 网络模型和通信流程 156
∟6.4.1 基本数据类型 156
∟6.4.2 通信模型 157
∟6.4.3 通信过程 157
6.6 小结 159
——第3篇 进阶
第7章 Kafka安全机制 162
7.1 本章教学视频说明 162
7.2 了解Kafka的安全机制 162
∟7.2.1 身份验证 163
∟7.2.2 权限控制 163
7.3 使用SSL协议进行加密和身份验证 164
∟7.3.1 了解SSL协议 164
∟7.3.2 实例37:创建SSL密钥库,并查看密钥库文件 165
∟7.3.3 实例38:创建私有证书 167
∟7.3.4 实例39:导出证书,使用CA对证书进行签名 170
∟7.3.5 实例40:在服务端配置SSL协议,并创建主题 173
∟7.3.6 实例41:在客户端配置SSL协议,并读/写数据 174
7.4 使用SASL协议进行认证 176
∟7.4.1 给客户端配置“Java认证和授权服务”(JAAS) 176
∟7.4.2 给服务端配置SASL 178
∟7.4.3 实例42:开启SASL/Kerberos认证协议 178
∟7.4.4 实例43:开启SASL/PLAIN认证协议 181
∟7.4.5 实例44:开启SASL/SCRAM认证协议 184
7.5 权限控制 187
∟7.5.1 权限控制的基础命令 187
∟7.5.2 配置ACL(访问控制列表) 188
∟7.5.3 实例45:启动集群 189
∟7.5.4 实例46:查看授权、添加授权、删除授权 190
7.6 小结 195
第8章 用Kafka连接器建立数据管道 196
8.1 本章教学视频说明 196
8.2 认识Kafka连接器 196
∟8.2.1 了解连接器的使用场景 197
∟8.2.2 特性及优势 198
∟8.3 操作Kafka连接器 199
8.3.1 配置Kafka连接器的属性 199
∟8.3.2 认识应用接口——REST API 202
∟8.3.3 实例47:单机模式下,将数据导入Kafka主题中 203
∟8.3.4 实例48:单机模式下,将Kafka主题中的数据导出 205
∟8.3.5 实例49:分布式模式下,将数据导入Kafka主题 206
8.4 实例50:开发一个简易的Kafka连接器插件 210
∟8.4.1 编写Source连接器 211
∟8.4.2 编写Sink连接器 217
∟8.4.3 打包与部署 220
8.5 小结 225
第9章 Kafka流处理 226
9.1 本章教学视频说明 226
9.2 初识Kafka流处理 227
∟9.2.1 什么是流处理 227
∟9.2.2 什么是流式计算 227
∟9.2.3 为何要使用流处理 228
9.3 了解流处理的架构 229
∟9.3.1 流分区与任务 230
∟9.3.2 线程模型 232
∟9.3.3 本地状态存储 234
∟9.3.4 容错性(Failover) 235
9.4 操作KStream和KTable 235
∟9.4.1 流处理的核心概念 236
∟9.4.2 窗口操作 237
∟9.4.3 连接操作 241
∟9.4.4 转换操作 246
∟9.4.5 聚合操作 247
9.5 实例51:利用流处理开发一个单词统计程序 248
∟9.5.1 创建Kafka流主题 248
∟9.5.2 统计流主题中单词出现的频率 249
∟9.5.3 预览操作结果 250
9.6 实例52:利用Kafka流开发一个SQL引擎 251
∟9.6.1 构建生产流数据源 251
∟9.6.2 构建Kafka流处理 253
∟9.6.3 构建数据结构和执行SQL逻辑 254
∟9.6.4 观察操作结果 255
9.7 小结 256
第10章 监控与测试 257
10.1 本章教学视频说明 257
10.2 Kafka的监控工具——Kafka Eagle系统 258
∟10.2.1 实例53:管理主题 258
∟10.2.2 实例54:查看消费者组信息 259
∟10.2.3 实例55:查看Kafka与Zookeeper集群的状态和性能 263
10.3 测试生产者性能 264
∟10.3.1 了解测试环境 264
∟10.3.2 认识测试工具 265
∟10.3.3 实例56:利用工具测试生产者性能 266
10.4 测试消费者性能 275
∟10.4.1 了解测试环境 275
∟10.4.2 认识测试工具 276
∟10.4.3 实例57:利用脚本测试消费者的性能 276
10.4 小结 280
——第4篇 商业实战
第11章 Kafka与ELK套件的整合 282
11.1 本章教学视频说明 282
11.2 安装与配置ELK 283
∟11.2.1 安装与配置LogStash 283
∟11.2.2 实例58:LogStash的标准输入与输出 285
∟11.2.3 安装与配置ElasticSearch 287
∟11.2.4 实例59:使用ElasticSearch集群的HTTP接口创建索引 292
∟11.2.5 实例60:使用ElasticSearch集群的HTTP接口查看索引 293
∟11.2.6 实例61:使用ElasticSearch集群的HTTP接口添加数据 294
∟11.2.7 安装与配置Kibana 296
∟11.2.8 实例62:启动并验证Kibana系统 298
11.3 实例63:实现一个游戏日志实时分析系统 299
∟11.3.1 了解系统要实现的功能 300
∟11.3.2 了解平台体系架构 300
∟11.3.3 采集数据 302
∟11.3.4 分流数据 304
∟11.3.5 实现数据可视化 306
11.4 小结 308
第12章 Kafka与Spark实时计算引擎的整合 309
12.1 本章教学视频说明 309
12.2 介绍Spark背景 310
∟12.2.1 Spark SQL——Spark处理结构化数据的模块 310
∟12.2.2 Spark Streaming——Spark核心应用接口的一种扩展 311
∟12.2.3 MLlib——Spark的一个机器学习类库 311
∟12.2.4 GraphX——Spark的一个图计算框架 311
12.3 准备Spark环境 311
∟12.3.1 下载Spark基础安装包 311
∟12.3.2 安装与配置Spark集群 312
12.4 操作Spark 315
∟12.4.1 实例64:使用Spark Shell统计单词出现的频率 315
∟12.4.2 实例65:使用Spark SQL对单词权重进行降序输出 317
∟12.4.3 实例66:使用Spark Submit统计单词出现的频率 319
12.5 实例67:对游戏明细数据做实时统计 322
∟12.5.1 了解项目背景和价值 323
∟12.5.2 设计项目实现架构 323
∟12.5.3 编码步骤一 实现数据采集 325
∟12.5.4 编码步骤二 实现流计算 327
∟12.5.5 编码步骤三 打包应用程序 330
∟12.5.6 编码步骤四 创建表结构 332
∟12.5.7 编码步骤五 执行应用程序 332
∟12.5.8 编码步骤六 预览结果 333
12.6 小结 333
第13章 实例68:从零开始设计一个Kafka监控系统——Kafka Eagle 334
13.1 本章教学视频说明 334
13.2 了解Kafka Eagle监控系统 335
∟13.2.1 设计的背景 335
∟13.2.2 应用场景 336
13.3 从结构上了解Kafka Eagle 337
∟13.3.1 了解Kafka Eagle的整体架构和代码结构 337
∟13.3.2 设计Kafka Eagle的7大功能模块 339
13.4 实现Kafka Eagle的功能模块 347
∟13.4.1 编码步骤一 实现数据面板 347
∟13.4.2 编码步骤二 实现主题管理 348
∟13.4.3 编码步骤三 实现消费者实例详情 350
∟13.4.4 编码步骤四 实现集群监控 350
∟13.4.5 编码步骤五 实现性能监控 351
∟13.4.6 编码步骤六 实现告警功能 351
∟13.4.7 编码步骤七 实现系统功能 352
13.5 安装及使用Kafka Eagle监控系统 353
∟13.5.1 准备环境 353
∟13.5.2 快速部署 354
∟13.5.3 了解Kafka Eagle的基础命令 358
13.6 小结 358
· · · · · · (收起)
读后感
用户评价
这本书给我最大的震撼,在于它构建了一个非常完整的知识闭环,完美地连接了“理论基础”、“技术实践”和“业务落地”这三个核心环节。很多书要么只讲理论,要么只教实操,但这本书的高明之处在于,它让你清楚地知道,你现在掌握的某个技术点,在实际的千万级用户场景中,会遇到什么样的瓶颈,以及前人是如何绕过这些陷阱的。我不是一个轻信推荐的人,但我敢说,这本书中的很多“最佳实践”和“踩坑记录”,是花了大量真金白银和时间成本换来的宝贵经验。对于任何希望将自己的技术能力提升到能够支撑大型复杂系统的工程师而言,这本书不仅仅是参考资料,它更像是一份经过实战检验的“能力加速器”。我强烈推荐给所有想在后端架构领域深耕的人。
这本书的结构设计实在太巧妙了,它精准地把握了技术学习者从入门到精通所需的不同阶段的知识密度和侧重点。对于像我这样,已经对这个领域有一定接触,但总觉得知识体系不够系统和深入的“进阶”读者来说,中间章节的内容简直是及时雨。它没有重复那些网上随处可见的基础知识,而是直接切入了性能调优、故障排查和高可用架构这些硬核内容。我特别喜欢作者在对比不同实现方案时的那种深入剖析,那种权衡利弊的分析非常客观和实在,没有那种“唯我独尊”的偏颇。我拿着书里的某些章节去和同事讨论,他们都对我提问的深度感到惊讶,这让我意识到,这本书提供的绝对不是那种浮于表面的介绍,而是真正能让你在技术讨论中站稳脚跟的干货。它确实让我对很多之前模棱两可的概念有了醍醐灌顶的领悟。
天呐,我简直不敢相信这本书能把一个听起来如此晦涩的主题讲得如此透彻!我一直对那些高并发、分布式系统背后的原理充满了好奇,但每次打开技术文档,脑子就自动进入“休眠”状态。这本书的叙述方式简直是为我这种“技术小白”量身定做的。它没有一开始就丢给我一堆复杂的术语和公式,而是像一个耐心十足的老师,从最基础的概念开始,一步步引导你构建起对核心思想的理解。尤其是那些案例分析,特别接地气,让我能清晰地看到这些抽象的技术概念在实际业务场景中是如何发挥作用的,而不是停留在纸面上。我最欣赏它对“为什么”的解释,而不是仅仅告诉我“怎么做”。这种注重底层逻辑的讲解,让我觉得我学到的不仅仅是一堆操作指令,而是一种解决问题的思维框架。读完第一部分,我感觉自己像是从一个迷雾缭绕的山谷中走了出来,终于能看到远处清晰的风景了。
我是一个极其注重阅读体验的人,如果一本书排版混乱、图表模糊,我可能看两页就想放弃了。这本书的视觉呈现完全达到了专业出版物的标准。图表的质量非常高,那些流程图和架构示意图逻辑清晰,层次分明,很多复杂的交互过程通过一个简单的示意图就能瞬间理解,大大减少了理解成本。更难能可贵的是,作者的文字表达极其流畅,即使是描述并发控制这种烧脑的话题,读起来也像在听一场精彩的脱口秀,节奏感把握得恰到好处。我很少在一本技术书中体会到这种“沉浸式”的阅读感受,它让你愿意一气呵成地读下去,而不是机械地查阅。这种对细节的关注,体现了作者对读者的尊重。
说实话,市面上关于这类企业级中间件的书籍,很多都只停留在理论堆砌和API手册的层面,真正能将技术与商业价值深度绑定的内容少之又少。这本书的后半部分彻底颠覆了我的看法。作者显然在企业服务领域有丰富的实战经验,他不仅讲解了技术实现,更深入地剖析了在实际商业环境中,如何基于这些技术进行选型、评估ROI(投资回报率)以及应对业务快速增长带来的挑战。特别是关于数据一致性和灾备策略的讨论,完全是从CTO或架构师的视角出发的,这对我未来向上汇报和做技术决策非常有指导意义。我感觉自己不再只是一个执行者,而是一个能从战略高度看待技术选型的决策者。这种结合了技术深度和商业敏锐度的内容,是其他同类书籍无法比拟的。
看完官方文档之后,再看这本书,配合起来理解还行
看完官方文档之后,再看这本书,配合起来理解还行
看完官方文档之后,再看这本书,配合起来理解还行
1小时翻完。作者这种一小段文字一大篇代码的写法,如果是新手能吸收消化吗?新手读来不得其解,老手读来索然无味,便是此书尴尬之处。
不咋样结构不清楚