猜你喜欢
深入理解Kafka:核心设计与实践原理

深入理解Kafka:核心设计与实践原理

书籍作者:朱忠华 ISBN:9787121359026
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:9346
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书从Kafka的基本概念入手,主要从生产端、消费端、服务端等3个方面进行全面的陈述,主要内容包括Kafka的基本使用方式、生产者客户端的使用、消费者客户端的使用、主题与分区、日志存储、深入原理解析、监控的设计、高级应用的扩展以及与Spark的集成等。虽然Kafka的内核使用Scala语言编写,但是本书基本以Java语言作为主要的示例语言,方便绝大多数读者的理解。本书虽然没有明确的界定,但是总体上可以隐性的划分为三个部分:基础篇、原理篇和扩展篇,以这种循序渐进的方式更能让读者容易接受。

作者简介

目前主要从事消息中间件相关的研发工作,对RabbitMQ、Kafka等有着自己独特的理解。个人博客地址:http://blog.csdn.net/u013256816,笔名:朱小厮,欢迎各位读者留言切磋探讨。

编辑推荐
适读人群 :本书定位为一本实战与原理相结合的书,既适合Kafka的初学者,也适合于对Kafka有一定深度认知的老手。

本书从Kafka的基本概念入手,主要从生产端、消费端、服务端等3个方面进行全面的陈述,主要内容包括Kafka的基本使用方式、生产者客户端的使用、消费者客户端的使用、主题与分区、日志存储、深入原理解析、监控的设计、高级应用的扩展以及与Spark的集成等。虽然Kafka的内核使用Scala语言编写,但是本书基本以Java语言作为主要的示例语言,方便绝大多数读者的理解。

前言

前言

初识Kafka时,笔者接触的还是0.8.1版本,Kafka发展到目前的2.0.0版本,笔者也见证了Kafka的蜕变,比如旧版客户端的淘汰、新版客户端的设计、Kafka控制器的迭代优化、私有协议的变更、事务功能的引入等。Kafka从昔日的新星逐渐走向成熟,再到今日的王者地位不可撼动,这期间有太多的故事可讲。

刚接触Kafka时,市面上很少有关于Kafka的书籍。在学习Kafka的过程中也经历过很多挫败,比如Scala这门编程语言就让笔者在Kafka的源码大门外却步良久。那时候就在想,如果有一本书能够全方位地解析Kafka该有多好啊。

随着对Kafka的逐步了解,也渐渐地萌生了自己写一本关于Kafka的书的想法,产生这一想法至今已超过两年。在这期间,笔者阴差阳错地先写了一本关于RabbitMQ的书,也就是《RabbitMQ实战指南》,此时已是2017年年末,市面上已经陆续出现了好几本有关Kafka的书,而且此时Kafka的版本也已经升级到1.0.0。

笔者认真看过几乎所有现存的Kafka的书籍,回想这一路学习和使用Kafka的经历,深感这些都不是自己理想中的书籍,那么不如自己再“操刀”写一本。本书秉承能用文字表述的就不贴源码、能用图形辅助的就不乏味陈述;既要让新手能够快速入门,也要让老手有所收获,从基础概念入手,再到原理深入,让读者能够由浅入深地理解Kafka。

本书依据Kafka 2.0.0版本编写,书中所有内容都具备理论基础并全部实践过,书中的内容也是笔者在工作中的认知积累,希望本书能够让读者有所收获。

内容大纲

本书共12章,前后章节都有相应的联系,基本上按照由浅入深、由表及里的层次逐层进行讲解,如果读者对其中的某些内容已经掌握,可以选择跳过而翻阅后面的内容,不过还是建议读者按照先后顺序进行阅读。

第1章对Kafka的基础概念进行笼统的介绍,之后讲解如何安装与配置Kafka,以及通过简单的生产消费消息的示例让读者能够快速地入门。

第2章主要是针对生产者客户端的讲解,包括生产者客户端参数、消息的发送、序列化、分区器、拦截器、原理解析等内容。

第3章主要是针对消费者客户端的讲解,包括消费者客户端参数、主题与分区的订阅、反序列化、消息的消费、位移提交、再均衡、拦截器、多线程实现等内容。

第4章主要介绍主题与分区的管理,包括创建主题、修改主题、删除主题、主题端参数配置、优先副本、分区重分配、复制限流,以及对分区数抉择的探讨等内容。

第5章主要讲解日志存储相关的内容,包括文件目录的布局、日志格式的演变、日志清理的细节、底层存储的原理等内容。

第6章主要对Kafka服务端的一些内部核心内容进行详细的阐述,包括协议设计、延时操作、控制器、leader的选举等内容。

第7章主要是对Kafka客户端相关的原理剖析,当然其中也需要牵涉服务端的内容。这一章包括消费端分区分配策略、消费者协调器和组协调器、__consumer_offsets的剖析、事务的介绍等内容。

第8章主要对可靠性、一致性等核心原理进行陈述,本章内容最为抽象,主要包括失效副本、ISR伸缩、LEO与HW、Leader Epoch的介入、日志同步机制、可靠性分析等内容。

第9章主要是对Kafka相关应用的一些补充,包括一些重要的管理工具,还有Kafka Connect、Kafka Mirror Maker和Kafka Streams等内容。

第10章是与Kafka监控相关的内容,监控作为Kafka生态中的一个必备内容,有着相当重要的地位,通过学习本章的内容可以让读者对整个监控的脉络设计和底层实现有清晰的认知。

第11章是对Kafka做一些功能性的扩展,包括过期时间、延时队列、死信队列、重试队列、消息路由、消息轨迹、消息审计、消息代理等内容,最后还通过对消息中间件选型的阐述以期让读者对整个消息中间件领域有发散性的思考。

第12章主要讲述的是Kafka与Spark集成的一些内容,包括Spark基本概念、Spark Streaming、Structured Streaming,以及它们与Kafka集成的细节等内容。

读者讨论

由于笔者水平有限,书中难免有错误之处。在本书出版后的任何时间,若您对本书有任何疑问都可以通过[email protected]发送邮件给笔者,也可以到笔者的个人博客http://blog.csdn.net/u013256816中留言,向笔者阐述您的建议和想法。书中的源码会在本书发行之后进行整理,最后会公布在笔者的个人微信公众号(朱小厮的博客,二维码在封面上)中。

致谢

首先要感谢我身处的平台,让我有机会深入地接触Kafka。同时要感谢我身边的同事,正因为有了你们的鼓励和帮助,才让我能够迅速地成长,本书的问世,离不开与你们在工作中一起积累的点点滴滴。

感谢蒋晓峰同学不辞辛苦地为本书校稿,有了你的帮助才会让本书更加完善。

感谢在我博客、微信公众号中提问留言的朋友,感谢消息生态圈的朋友,有了你们的意见和建议才能让本书更加完善。

感谢博文视点的编辑们,本书能够顺利、迅速地出版,多亏了你们的敬业精神和一丝不苟的工作态度。

最后还要感谢我的家人,在我占用绝大部分的业余时间进行写作的时候,能够给予我极大的宽容、理解和支持,让我能够全身心地投入写作之中。

朱忠华

目录

第1章 初识Kafka
1.1 基本概念
1.2 安装与配置
1.3 生产与消费
1.4 服务端参数配置
1.5 总结
第2章 生产者
2.1 客户端开发
2.1.1 必要的参数配置
2.1.2 消息的发送
2.1.3 序列化
2.1.4 分区器
2.1.5 生产者拦截器
2.2 原理分析
2.2.1 整体架构
2.2.2 元数据的更新
2.3 重要的生产者参数
2.4 总结
第3章 消费者
3.1 消费者与消费组
3.2 客户端开发
3.2.1 必要的参数配置
3.2.2 订阅主题与分区
3.2.3 反序列化
3.2.4 消息消费
3.2.5 位移提交
3.2.6 控制或关闭消费
3.2.7 指定位移消费
3.2.8 再均衡
3.2.9 消费者拦截器
3.2.10 多线程实现
3.2.11 重要的消费者参数
3.3 总结
第4章 主题与分区
4.1 主题的管理
4.1.1 创建主题
4.1.2 分区副本的分配
4.1.3 查看主题
4.1.4 修改主题
4.1.5 配置管理
4.1.6 主题端参数
4.1.7 删除主题
4.2 初识KafkaAdminClient
4.2.1 基本使用
4.2.2 主题合法性验证
4.3 分区的管理
4.3.1 优先副本的选举
4.3.2 分区重分配
4.3.3 复制限流
4.3.4 修改副本因子
4.4 如何选择合适的分区数
4.4.1 性能测试工具
4.4.2 分区数越多吞吐量就越高吗
4.4.3 分区数的上限
4.4.4 考量因素
4.5 总结
第5章 日志存储
5.1 文件目录布局
5.2 日志格式的演变
5.2.1 v0版本
5.2.2 v1版本
5.2.3 消息压缩
5.2.4 变长字段
5.2.5 v2版本
5.3 日志索引
5.3.1 偏移量索引
5.3.2 时间戳索引
5.4 日志清理
5.4.1 日志删除
5.4.2 日志压缩
5.5 磁盘存储
5.5.1 页缓存
5.5.2 磁盘I/O流程
5.5.3 零拷贝
5.6 总结
第6章 深入服务端
6.1 协议设计
6.2 时间轮
6.3 延时操作
6.4 控制器
6.4.1 控制器的选举及异常恢复
6.4.2 优雅关闭
6.4.3 分区leader的选举
6.5 参数解密
6.5.1 broker.id
6.5.2 bootstrap.servers
6.5.3 服务端参数列表
6.6 总结
第7章 深入客户端
7.1 分区分配策略
7.1.1 RangeAssignor分配策略
7.1.2 RoundRobinAssignor分配策略
7.1.3 StickyAssignor分配策略
7.1.4 自定义分区分配策略
7.2 消费者协调器和组协调器
7.2.1 旧版消费者客户端的问题
7.2.2 再均衡的原理
7.3 __consumer_offsets剖析
7.4 事务
7.4.1 消息传输保障
7.4.2 幂等
7.4.3 事务
7.5 总结
第8章 可靠性探究
8.1 副本剖析
8.1.1 失效副本
8.1.2 ISR的伸缩
8.1.3 LEO与HW
8.1.4 Leader Epoch的介入
8.1.5 为什么不支持读写分离
8.2 日志同步机制
8.3 可靠性分析
8.4 总结
第9章 Kafka应用
9.1 命令行工具
9.1.1 消费组管理
9.1.2 消费位移管理
9.1.3 手动删除消息
9.2 Kafka Connect
9.2.1 独立模式
9.2.2 REST API
9.2.3 分布式模式
9.3 Kafka Mirror Maker
9.4 Kafka Streams
9.5 总结
第10章 Kafka监控
10.1 监控数据的来源
10.1.1 OneMinuteRate
10.1.2 获取监控指标
10.2 消费滞后
10.3 同步失效分区
10.4 监控指标说明
10.5 监控模块
10.6 总结
第11章 高级应用
11.1 过期时间(TTL)
11.2 延时队列
11.3 死信队列和重试队列
11.4 消息路由
11.5 消息轨迹
11.6 消息审计
11.7 消息代理
11.7.1 快速入门
11.7.2 REST API介绍及示例
11.7.3 服务端配置及部署
11.7.4 应用思考
11.8 消息中间件选型
11.8.1 各类消息中间件简述
11.8.2 选型要点概述
11.8.3 消息中间件选型误区探讨
11.9 总结
第12章 Kafka与Spark的集成
12.1 Spark的安装及简单应用
12.2 Spark编程模型
12.3 Spark的运行结构
12.4 Spark Streaming简介
12.5 Kafka与Spark Streaming的整合
12.6 Spark SQL
12.7 Structured Streaming
12.8 Kafka与Structured Streaming的整合
12.9 总结
附录A Kafka源码环境搭建

短评

宝贝已经收到了,真的是物有所值非常满意。卖家的服务态度很好发货速度也很快,包裹的严严实实没有任何破损。快递小哥送货速度快,总体来说是一次愉快的购物呀,下次有需要还会再来买买买!与卖家描述的完全一致,非常满意,真的很喜欢,完全超出期望值,货速度非常快,包装非常仔细、严实,物流公司服务态度很好,运送速度很快,很满意的一次购物。

2019-03-06 05:35:10

先买着,也不知道能不能看懂。

2019-03-03 10:31:37

不错不错不错不错不错不错不错不错

2019-03-04 10:41:52

书的内容不错!。。。但纸张印刷令人遗憾,,对正版略怀疑,,和之前买的电子工业出版社的书质量不能比。。。

2019-03-06 12:51:41

纸质非常不错,包装也很好,每本书都进行了独立塑封,很满意。

2019-03-05 13:16:31

深入理解Kafka:核心设计与实践原理

2019-03-02 23:34:38

速度杠杠的,优惠力度挺大。还没看过。接下去开始慢慢啃。凑字数啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦。

2019-03-05 16:49:43

开始看呢,kafka2.0版本。愿收货慢慢

2019-03-02 10:06:15

纸张不错,学习中

2019-03-03 11:17:13

非常好非常好非常好非常好非常好非常好非常好

2019-03-03 01:13:43