电子书:《Kafka技术内幕图文详解Kafka源码设计与实现》

[复制链接]
查看219 | 回复1 | 2019-12-10 17:13:19 | 显示全部楼层 |阅读模式

《Kafka技术内幕图文详解Kafka源码设计与实现》_1

《Kafka技术内幕图文详解Kafka源码设计与实现》_1

《Kafka技术内幕图文详解Kafka源码设计与实现》_2

《Kafka技术内幕图文详解Kafka源码设计与实现》_2

《Kafka技术内幕图文详解Kafka源码设计与实现》_3

《Kafka技术内幕图文详解Kafka源码设计与实现》_3


内容简介:

TuiN图灵原
e99
⊙②
Koka技术内幕
图文详解Kaka源码设计与实现
郑奇煌⊙著
人民邮电出版社
北京
图书在版编目(CIP)数据
Kafka技术内幕:图文详解 Kafka:源码设计与实现/
郑奇煌著.一北京:人民邮电出版社,2017.11
图灵原创)
ISBN978-7-115-46938-0
①K…I.①郑….①分布式操作系统一研究
中guo版本图书馆CIP数据核字(2017)第235945号
内容提要
Kafka自 Linkedin开源以来就以高性能、高吞吐量、分布式的特性著称,本书以0.10版本的源码
为基础,深入分析了Kaka的设计与实现,包括生产者和消费者的消息处理流程,新旧消费者不同的设
计方式,存储层的实现,协调者和控制器如何确保 Kafka集群的分布式和容错特性,两种同步集群工具
Mirrormaker和 ureplicator,流处理的两种API以及 Kafka的一些高级特性等
本书适合 Kafka开发人员阅读
责任编辑王军
责任印制彭志环
◆人民邮电出版社出版发行北京市丰台区成寿寺路11号
部编100164电子郎件315aptpress.com
网址hupi/www.plpress.com.cn
大厂聚鑫印刷有限责任公司印刷
字数:1191千字
17年11月第1版
印数:1-4000册
年11月河北第1次印刷
定价:119.00元
读者服务热线010)51095186转600印装质量热线010)81055316
反盗版熱线010)81055315
广告经营许可证:京东工商广登字20170147号
前言
Apache Kafka(简称 Kafka)最早是由 Linkedin开源出来的分布式消息系统,现在是 Apache下的
一个子项目,并且已经成为开源领域应用最广泛的消息系统之一。Kaka社区也非常活跃,从0.9版本
开始, Kafka的标语已经从“一个高吞吐量、分布式的消息系统”改为“一个分布式的流平台”
如何阅读本书
本书主要以0.10版本的Kaka源码为基础,并通过图文详解的方式分析 Kafka内部组件的实现细节。
对于 Kafka流处理的一些新特性,本书也会分析0.11版本的相关源码。本书各章的主要内容如下
口第1章首先介绍了Kaka作为流式数据平台的3个组成,包括消息系统、存储系统和流处理系
统,接着从分区模型、消费模型和分布式模型这三个模型介绍了Kaka的几儿个基本概念,然后
介绍了Kaka几个比较重要的设计思路,最后讨论了如何在一台机器上模拟单机模式与分布式
模式,以及如何搭建开发环境
口第2章从一个生产者的示例开始,引出了新版本生产者的两种消息发送方式。生产者客.户.端
通过记录收集器和发送线程,对清息集进行分组和缓存,并为目标节点创建生产请求,发送
不同的_代*_节点。接着介绍了与网络相关的Kaka通道、选择器、轮询等NIO操作。另外
还介绍了 Scala版本的旧生产者,它使用阻塞通道的方式发送请求。最后,介绍了服务端采用
Reactor模式处理客.户.端的请求
口第3章首先介绍了消费者相关的基础概念,然后从一个消费者的示例开始,引出了基于
Zookeeper(后面简称ZK)的高级消费者API。要理解高级API,主要是要理解消费线程的模
型以及变量的传递方式。接着介绍了消费者提交分区偏移量的两种方式。最后,我们举了
个低级API的示例。开发者需要自己实现一些比较复杂的逻辑处理,才能保证消费程序的健
壮性和稳定性
ロ第4章介绍了新版本的消费者。不同于旧版本的消费者,新版本去除了ZK的依頼,统一了旧
版本的高级API和低级API,并提供了两种消费方式:订阅和分配。新版本引入订阅状态来
理消费者的订阅信息,并使用拉取器拉取消息。新版本的消费者没有使用拉取线程,而是采
用轮询的方式拉取消息,它的性能比旧版本的消费者更好。另外,还介绍了消费者采用回调
器、处理器、_监_听_器、适配器、组合模式和链式调用等实现不同类型的异步请求。最后,我
们介绍了新消费者的心跳任务、消费者提交偏移量以及3种消息处理语义的使用方式。
口第5章介绍了新版本消费者相关的协调者实现,主要包括“加入组”与“同步组”。每个消
费者都有一个客.户.端的协调者,服务端也有一个消费组级别的协调者负责处理所有消费者客
户端的请求。当消费组触发再平衡操作时,服务端的协调者会记录消费组元数据的变化,并
通过状态机保证消费组状态的正常转换。本章会通过很多不同的示例场景来帮助读者理解消
费组相关的实现
口第6章介绍了 Kafka的存储层实现,包括读写、管理、压缩等一些常用的日志操作。服务端通
过副本管理器处理客.户.端的生产请求和拉取请求。接着介绍了副本机制相关的分区、副本
最高水位、复制点等一些概念。最后,介绍了延迟操作接口与延迟缓存。服务端如果不能立
即返回响应结果给客.户.端,会先将延迟操作缓存起来,直到请求处理完成或超时
口第7章介绍了作为服务端核心的 Kafka控制器,它主要负责管理分区状态机和副本状态机,以
及多种类型的_监_听_器,比如_代*_节点上线和下线、朋除主题、重新分配分区等。控制器的一个
重要职责是选举分区的主副本。不同_代*_节点根据控制器下发的请求,决定成为分区的主副本
还是备份副本。另外,我们还分析了本地副本与.远.程.副本的区别,以及元数据缓存的作用
口第8章首先介绍了两种集群的同步工具: Kafka内置的 Mirrormaker和Uber开源的 ureplicator。接
着,介绍了新版本 Kafka提供的连接器框架,以及如何开发一个自定义的连接器。最后,介绍
了连接器的架构模型的具体实现,主要包括数据模型、 Connector模型和 Workers模型
口第9章介绍了Kaka流处理的两种API:低级 Processor API和高级DSL。这一章重点介绍了流处
理的线程模型,主要包括流实例、流线程和流任务。我们还介绍了流处理的本地状态存储
它主要用来作为备份任务的数据恢复。高级DSL包括两个组件一 Stream与 Ktable,它们都
定义了一些常用的流处理算子操作,比如无状态的操作(过滤和映射等)、有状态的操作(连
接和窗口等)。
口第10章介绍了 Kafka的一些高级特性,比如客.户.端的配额、新的消息格式和事务特性
本书相关的示例代码在笔者的 Github主页htps:/ github, com/zghxuyuan/kafka-book上。另外,限于
篇幅,本书的附录部分会放在个人博客上。此外,本书的源代码和附录部分也可以去图灵社区本书主
页(htp:/www.iturng.com.cn/book/1927)免费下载
由于个人能力有限,文中的错误在所难免,如果读者在阅读的过程中,发现不妥之处,可以私信
我的微博;htps/ weibo. com/xuyuantree,我会定期将勘误更新到个人博客上
致谢
感谢图灵的编辑王军花老师,是您的辛勤工作让本书的出版成为可能。同时还要感谢许多我不知
道名字的幕后工作人员为本书付出的努力
感谢冯嘉、时金魁、吴阳平在百忙之中抽出时间给本书写推荐
目录
第1章 Kafka入门…
3.1服务使用接收器接客户
1.1 Kafka流式数据平台
2 Kafka的基本概念
2.3.2处理器使用选择器的轮询处理
2.1分区模型
网络请求
2.2消费模型
2.3.3请求通通的请求队列和响应
1.2.3分布式型
Kaka的设计与实现
2.3.4 Kafka请求处理线
文件系的持久化与数据传输
23.5服务端的请求处理入
1.3.,2生产者与消费者
第3章消费者:高級API和低級API1……61
3副本机制和容错处理
3.1消费者启动和初始化
1.4.1单机模式
2消費者客.户.端的线程模型………70
2分布式模式
14
3.1.3重新刺始化消费者
3.2消费者再平衡操作
分区的所有权
第2章生产者
3.,2.2为消费者分配分区
,2,3创建分区信息对象
2.新生产者客.户.端
3.2.4美闭和史新拉取线程管理器……80
2.1.1同萝和异步发送消息
3.2.5分区信息对象的偏移量
2.1.2客.户.端消息发送线程
2239333
3.3消费者拉取数据
82
2.1.3客.户.端网懿逹接对象
2.1.4进择器处理网络请求
3.3.2抽象拉取线程
2.2旧生产者客.户.端
3.3.3消费者拉取线程
2.2.1事件处理器处理客.户.端发送的
3.4消费者消费消息
消息…
3.4.1 Kaika消息流
2.2.2对消息集按風节点和分区进行
3.4.2消费者速代消消息
3.5消费者提交分区偏移量
2.2.3生产者使用阻塞通道发送请求…48
3.5.1提交偏移量到ZK
2.3服务端网络连接
3.5.2提变偏移量到内部主題…………99

#############################################


回复

使用道具 举报

厮守一季斑 | 2019-12-21 19:59:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则