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

深入理解Kafka:核心设计与实践原理百度网盘pdf下载

作者:
简介:深入理解Kafka:核心设计与实践原理
出版社:电子工业出版社
出版时间:2019-01-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐
  基于2.0.0版本 从实战到深度的原理解析讲述Kafka的知识点 常见误区的解读 常见问题的解决方案及生态应用的扩展
内容简介
  本书从Kafka的基础概念切入,循序渐进地转入对其内部原理的剖析。本书主要阐述了Kafka中生产者客户端、消费者客户端、主题与分区、日志存储、原理解析、监控管理、应用扩展及流式计算等内容。虽然Kafka的内核使用Scala语言编写,但本书基本以Java语言作为主要的示例语言,方便大多数读者的理解。虽然本书没有明确的界定,但总体上可以划分为三个部分:基础篇、原理篇和扩展篇,前4章为基础篇,包括基础概念、生产者、消费者,以及主题与分区,学习完这4章的内容完全可以应对绝大多数的开发场景。第5章至第8章为原理篇,包括对日志存储、协议设计、控制器、组协调器、事务、一致性、可靠性等内容的探究,学习完这4章的内容可以让读者对Kafka有一个深刻的认知。最后4章从应用扩展层面来做讲解,可以归类为扩展篇,主要内容包括监控、应用工具、应用扩展(延时队列、重试队列、死信队列、消息轨迹等)、与Spark的集成等,让读者可以对Kafka的生态有一个更加全面的认知。
作者简介
  目前主要从事消息中间件相关的研发工作,对RabbitMQ、Kafka等有着自己独特的理解。个人博客地址://blog.csdn.net/u013256816,笔名:朱小厮,欢迎各位读者留言切磋探讨。
目录
版权信息
前言
第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源码环境搭建
前言
  前言
  初识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集成的细节等内容。
  读者讨论
  由于笔者水平有限,书中难免有错误之处。在本书出版后的任何时间,若您对本书有任何疑问都可以通过zhuzhonghua.ideal@qq.com发送邮件给笔者,也可以到笔者的个人博客//blog.csdn.net/u013256816中留言,向笔者阐述您的建议和想法。书中的源码会在本书发行之后进行整理,最后会公布在笔者的个人微信公众号(朱小厮的博客,二维码在封面上)中。
  致谢
  首先要感谢我身处的平台,让我有机会深入地接触Kafka。同时要感谢我身边的同事,正因为有了你们的鼓励和帮助,才让我能够迅速地成长,本书的问世,离不开与你们在工作中一起积累的点点滴滴。
  感谢蒋晓峰同学不辞辛苦地为本书校稿,有了你的帮助才会让本书更加完善。
  感谢在我博客、微信公众号中提问留言的朋友,感谢消息生态圈的朋友,有了你们的意见和建议才能让本书更加完善。
  感谢博文视点的编辑们,本书能够顺利、迅速地出版,多亏了你们的敬业精神和一丝不苟的工作态度。
  最后还要感谢我的家人,在我占用绝大部分的业余时间进行写作的时候,能够给予我极大的宽容、理解和支持,让我能够全身心地投入写作之中。
  朱忠华