新書推薦:
《
耕读史
》
售價:HK$
109.8
《
地理计算与R语言 [英] 罗宾·洛夫莱斯 [德]雅纳·蒙乔 [波兰] 雅库布·诺沃萨德
》
售價:HK$
121.0
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:HK$
87.4
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:HK$
72.8
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:HK$
155.7
《
UE5虚幻引擎必修课(视频教学版)
》
售價:HK$
110.9
《
真需求
》
售價:HK$
110.9
《
阿勒泰的春天
》
售價:HK$
50.4
|
編輯推薦: |
图文详解Kafka的内部原理、设计与实现 全面分析以Kafka为中心的分布式流平台 Kafka新特性详解,包括连接器、流处理
|
內容簡介: |
Kafka自LinkedIn开源以来就以高性能、高吞吐量、分布式的特性著称,本书以0.10版本的源码为基础,深入分析了Kafka的设计与实现,包括生产者和消费者的消息处理流程,新旧消费者不同的设计方式,存储层的实现,协调者和控制器如何确保Kafka集群的分布式和容错特性,两种同步集群工具MirrorMaker和uReplicator,流处理的两种API以及Kafka的一些高级特性等。 《Kafka技术内幕 图文详解Kafka源码设计与实现》适合Kafka开发人员阅读。
|
關於作者: |
郑奇煌,目前就职于杭州某互联网风控公司,主要专注于大数据和流计算。对源码研究有一定的心得体会,乐于分享,个人博客:zqhxuyuan.github.io。
|
目錄:
|
第1章 Kafka入门1
1.1 Kafka流式数据平台1
1.2 Kafka的基本概念3
1.2.1 分区模型3
1.2.2 消费模型4
1.2.3 分布式模型5
1.3 Kafka的设计与实现6
1.3.1 文件系统的持久化与数据传输效率6
1.3.2 生产者与消费者8
1.3.3 副本机制和容错处理10
1.4 快速开始11
1.4.1 单机模式12
1.4.2 分布式模式14
1.4.3 消费组示例16
1.5 环境准备18
第2章 生产者22
2.1 新生产者客户端22
2.1.1 同步和异步发送消息23
2.1.2 客户端消息发送线程29
2.1.3 客户端网络连接对象31
2.1.4 选择器处理网络请求35
2.2 旧生产者客户端43
2.2.1 事件处理器处理客户端发送的消息44
2.2.2 对消息集按照节点和分区进行整理46
2.2.3 生产者使用阻塞通道发送请求48
2.3 服务端网络连接49
2.3.1 服务端使用接收器接受客户端的连接50
2.3.2 处理器使用选择器的轮询处理网络请求53
2.3.3 请求通道的请求队列和响应队列56
2.3.4 Kafka请求处理线程58
2.3.5 服务端的请求处理入口58
2.4 小结60
第3章 消费者:高级API和低级API61
3.1 消费者启动和初始化67
3.1.1 创建并初始化消费者连接器69
3.1.2 消费者客户端的线程模型70
3.1.3 重新初始化消费者72
3.2 消费者再平衡操作73
3.2.1 分区的所有权74
3.2.2 为消费者分配分区75
3.2.3 创建分区信息对象78
3.2.4 关闭和更新拉取线程管理器80
3.2.5 分区信息对象的偏移量80
3.3 消费者拉取数据82
3.3.1 拉取线程管理器82
3.3.2 抽象拉取线程87
3.3.3 消费者拉取线程90
3.4 消费者消费消息94
3.4.1 Kafka消息流94
3.4.2 消费者迭代消费消息95
3.5 消费者提交分区偏移量97
3.5.1 提交偏移量到ZK98
3.5.2 提交偏移量到内部主题99
3.5.3 连接偏移量管理器101
3.5.4 服务端处理提交偏移量的请求103
3.5.5 缓存分区的偏移量106
3.6 消费者低级API示例108
3.6.1 消息消费主流程109
3.6.2 找出分区的主副本112
3.6.3 获取分区的读取偏移量113
3.6.4 发送拉取请求并消费消息116
3.7 小结117
3.7.1 消费者线程模型117
3.7.2 再平衡和分区分配119
第4章 新消费者121
4.1 新消费者客户端125
4.1.1 消费者的订阅状态125
4.1.2 消费者轮询的准备工作134
4.1.3 消费者轮询的流程138
4.1.4 消费者拉取消息146
4.1.5 消费者获取记录149
4.1.6 消费消息160
4.2 消费者的网络客户端轮询161
4.2.1 异步请求162
4.2.2 异步请求高级模式169
4.2.3 网络客户端轮询184
4.3 心跳任务188
4.3.1 发送心跳请求188
4.3.2 心跳状态189
4.3.3 运行心跳任务191
4.3.4 处理心跳结果的示例192
4.3.5 心跳和协调者的关系193
4.4 消费者提交偏移量195
4.4.1 自动提交任务195
4.4.2 将拉取偏移量作为提交偏移量197
4.4.3 同步提交偏移量201
4.4.4 消费者的消息处理语义202
4.5 小结206
第5章 协调者210
5.1 消费者加入消费组211
5.1.1 元数据与分区分配器212
5.1.2 消费者的加入组和同步组213
5.1.3 主消费者执行分配任务220
5.1.4 加入组的准备、完成和监听器224
5.2 协调者处理请求229
5.2.1 服务端定义发送响应结果的回调方法229
5.2.2 消费者和消费组元数据232
5.2.3 协调者处理请求前的条件检查236
5.2.4 协调者调用回调方法发送响应给客户端237
5.3 延迟的加入组操作242
5.3.1 准备再平衡242
5.3.2 延迟操作和延迟缓存244
5.3.3 尝试完成延迟的加入操作246
5.3.4 消费组稳定后,原有消费者重新加入消费组250
5.3.5 消费组未稳定,原有消费者重新加入消费组251
5.4 消费组状态机254
5.4.1 再平衡操作与监听器254
5.4.2 消费组的状态转换262
5.4.3 协调者处理加入组请求264
5.4.4 协调者处理同步组请求274
5.4.5 协调者处理离开组请求276
5.4.6 再平衡超时与会话超时278
5.4.7 延迟的心跳282
5.5 小结290
第6章 存储层293
6.1 日志的读写293
6.1.1 分区、副本、日志、日志
分段294
6.1.2 写入日志297
6.1.3 日志分段305
6.1.4 读取日志315
6.1.5 日志管理329
6.1.6 日志压缩336
6.2 服务端处理读写请求348
6.2.1 副本管理器351
6.2.2 分区与副本362
6.3 延迟操作373
6.3.1 延迟操作接口374
6.3.2 延迟操作与延迟缓存383
6.3.3 延迟缓存391
6.4 小结400
第7章 控制器402
7.1 Kafka控制器402
7.1.1 控制器选举403
7.1.2 控制器上下文406
7.1.3 ZK监听器408
7.1.4 分区状态机和副本状态机410
7.1.5 删除主题430
7.1.6 重新分配分区436
7.1.7 控制器的网络通道管理器445
7.2 服务端处理LeaderAndIsr请求448
7.2.1 创建分区449
7.2.2 创建主副本、备份副本451
7.2.3 消费组元数据迁移463
7.3 元数据缓存468
7.3.1 服务端的元数据缓存472
7.3.2 客户端更新元数据473
7.4 Kafka服务关闭483
7.5 小结487
第8章 基于Kafka构建数据流管道490
8.1 Kafka集群同步工具:MirrorMaker490
8.1.1 单机模拟数据同步491
8.1.2 数据同步的流程493
8.2 Uber集群同步工具:uReplicator498
8.2.1 Apache Helix介绍498
8.2.2 Helix控制器501
8.2.3 Helix工作节点504
8.3 Kafka连接器505
8.3.1 连接器的使用示例507
8.3.2 开发一个简单的连接器510
8.3.3 连接器的架构模型515
8.3.4 Herder的实现520
8.3.5 Worker的实现524
8.3.6 配置存储与状态存储530
8.3.7 连接器与任务的实现550
8.4 小结565
第9章 Kafka流处理569
9.1 低级Processor API569
9.1.1 流处理应用程序示例569
9.1.2 流处理的拓扑575
9.1.3 流处理的线程模型580
9.1.4 状态存储613
9.2 高级流式DSL636
9.2.1 DSL应用程序示例636
9.2.2 KStream和KTable638
9.2.3 连接操作665
9.2.4 窗口操作672
9.3 小结684
第10章 高级特性介绍686
10.1 客户端配额686
10.2 消息与时间戳692
10.3 事务处理699
10.4 小结703
|
|