文图详解Kafka的內部基本原理、设计与保持 全方位剖析以Kafka为管理中心的分布式流服务平台 Kafka新特性详解,包含射频连接器、流解决 Kafka自LinkedIn开源系统至今就以性能、高货运量、分布式的特性而出名,这书以0.10版本的源代码为基本,详细分析了Kafka的设计与保持,包含经营者和顾客的信息解决步骤,新老顾客不一样的设计方法,储存层的保持,协调者和控制板怎样保证Kafka集群的分布式和容错机制特性,二种同歩集群专用工具MirrorMaker和uReplicator,流解决的二种API及其Kafka的一些高級特性等。 《Kafka技术性内情 文图详解Kafka源代码设计与保持》合适Kafka开发者阅读文章。
目录
- 第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和低级API 61
- 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 提交偏移量到ZK 98
- 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集群同步工具:MirrorMaker 490
- 8.1.1 单机模拟数据同步 491
- 8.1.2 数据同步的流程 493
- 8.2 Uber集群同步工具:uReplicator 498
- 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 API 569
- 9.1.1 流处理应用程序示例 569
- 9.1.2 流处理的拓扑 575
- 9.1.3 流处理的线程模型 580
- 9.1.4 状态存储 613
- 9.2 高级流式DSL 636
- 9.2.1 DSL应用程序示例 636
- 9.2.2 KStream和KTable 638
- 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