新书《深入理解Kafka:核心设计与实践原理》上架,感谢支持~
点击上方“朱小厮的博客”,选择“设为星标”
做积极的人,而不是积极废人!
新书上架
初识 Kafka 时,笔者接触的还是 0.8.1 版本,Kafka 发展到目前的 2.x 版本,笔者也见证了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 版本编写,书中所有内容都具备理论基础并全部实践过,书中的内容也是笔者在工作中的认知积累,希望本书能够让读者有所收获。
另一本书
2017年12月笔者的另一本书《RabbitMQ实战指南》上架,相对于这本《深入理解Kafka》而言只是练练文笔的,没想到效果也不错。
相信这本侵注几倍的《深入理解Kafka:核心设计与实践原理》也不会让大家失望。
《深入理解Kafka:核心设计与实践原理》内容概览
全书共分12章,共443页,内容殷实(出本社统计:547.2千字)
目录概览
第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书籍都要好,但是笔者有信心绝对不会比任何一本现存的差。
关注“朱小厮的博客”了解更多内容
>>>加微信,进群聊<<<