《Kafka权威指南》
内容简介
每个应用程序都会产生数据,包括日志消息、度量指标、用户活动记录、响应消息等。如何移动数据,几乎变得与数据本身一样重要。如果你是架构师、开发者或者产品工程师,同时也是Apache Kafka新手,那么这本实践指南将会帮助你成为流式平台上处理实时数据的专家。 本书由出身于LinkedIn的Kafka核心作者和一线技术人员共同执笔,详细介绍了如何部署Kafka集群、开发可靠的基于事件驱动的微服务,以及基于Kafka平台构建可伸缩的流式应用程序。通过详尽示例,你将会了解到Kafka的设计原则、可靠性保证、关键API,以及复制协议、控制器和存储层等架构细节。 ● 了解发布和订阅消息模型以及该模型如何被应用在大数据生态系统中 ● 学习使用Kafka生产者和消费者来生成消息和读取消息 ● 了解Kafka保证可靠性数据传递的模式和场景需求 ● 使用Kafka构建数据管道和应用程序的最佳实践 ● 在生产环境中管理Kafka,包括监控、调优和维护 ● 了解Kafka的关键度量指标 ● 探索Kafka如何成为流式处理利器
作者简介
Neha Narkhede, Confluent联合创始人、CTO,曾在LinkedIn主导基于Kafka和Apache Samza构建流式基础设施,是Kafka作者之一。 Gwen Shapira, Confluent系统架构师,帮助客户构建基于Kafka的系统,在可伸缩数据架构方面拥有十余年经验;曾任Cloudera公司解决方案架构师。另著有《Hadoop应用架构》。 Todd Palino, LinkedIn主任级SRE,负责部署管理大型的Kafka、Zookeeper和Samza集群。 【译者简介】 薛命灯,毕业于厦门大学软件学院,十余年软件开发和架构经验,InfoQ高级社区编辑。译有《硅谷革命》《生产微服务》等书。微信公众号CodeDeep。
目录
序xiii
前言xv
第1章 初识Kafka1
1.1 发布与订阅消息系统1
1.1.1 如何开始2
1.1.2 独立的队列系统3
1.2 Kafka登场4
1.2.1 消息和批次4
1.2.2 模式4
1.2.3 主题和分区5
1.2.4 生产者和消费者5
1.2.5 broker和集群6
1.2.6 多集群7
1.3 为什么选择Kafka8
1.3.1 多个生产者8
1.3.2 多个消费者8
1.3.3 基于磁盘的数据存储9
1.3.4 伸缩性9
1.3.5 高性能9
1.4 数据生态系统9
1.5 起源故事11
1.5.1 LinkedIn的问题11
1.5.2 Kafka的诞生12
1.5.3 走向开源12
1.5.4 命名13
1.6 开始Kafka之旅13
第2章 安装Kafka14
2.1 要事先行14
2.1.1 选择操作系统14
2.1.2 安装Java14
2.1.3 安装Zookeeper15
2.2 安装KafkaBroker17
2.3 broker配置18
2.3.1 常规配置18
2.3.2 主题的默认配置19
2.4 硬件的选择23
2.4.1 磁盘吞吐量23
2.4.2 磁盘容量23
2.4.3 内存23
2.4.4 网络24
2.4.5 CPU24
2.5 云端的Kafka24
2.6 Kafka集群24
2.6.1 需要多少个broker25
2.6.2 broker配置25
2.6.3 操作系统调优26
2.7 生产环境的注意事项28
2.7.1 垃圾回收器选项28
2.7.2 数据中心布局29
2.7.3 共享Zookeeper29
2.8 总结30
第3章 Kafka生产者——向Kafka写入数据31
3.1 生产者概览32
3.2 创建Kafka生产者33
3.3 发送消息到Kafka34
3.3.1 同步发送消息35
3.3.2 异步发送消息35
3.4 生产者的配置36
3.5 序列化器39
3.5.1 自定义序列化器39
3.5.2 使用Avro序列化41
3.5.3 在Kafka里使用Avro42
3.6 分区45
3.7 旧版的生产者API46
3.8 总结47
第4章 Kafka消费者——从Kafka读取数据48
4.1 KafkaConsumer概念48
4.1.1 消费者和消费者群组48
4.1.2 消费者群组和分区再均衡51
4.2 创建Kafka消费者52
4.3 订阅主题53
4.4 轮询53
4.5 消费者的配置55
4.6 提交和偏移量57
4.6.1 自动提交58
4.6.2 提交当前偏移量59
4.6.3 异步提交59
4.6.4 同步和异步组合提交61
4.6.5 提交特定的偏移量61
4.7 再均衡监听器62
4.8 从特定偏移量处开始处理记录64
4.9 如何退出66
4.10 反序列化器67
4.11 独立消费者——为什么以及怎样使用没有群组的消费者71
4.12 旧版的消费者API71
4.13 总结72
第5章 深入Kafka73
5.1 集群成员关系73
5.2 控制器74
5.3 复制74
5.4 处理请求76
5.4.1 生产请求78
5.4.2 获取请求78
5.4.3 其他请求80
5.5 物理存储81
5.5.1 分区分配81
5.5.2 文件管理82
5.5.3 文件格式83
5.5.4 索引84
5.5.5 清理84
5.5.6 清理的工作原理84
5.5.7 被删除的事件86
5.5.8 何时会清理主题86
5.9 总结86
第6章 可靠的数据传递87
6.1 可靠性保证87
6.2 复制88
6.3 broker配置89
6.3.1 复制系数89
6.3.2 不完全的首领选举90
6.3.3 最少同步副本91
6.4 在可靠的系统里使用生产者92
6.4.1 发送确认92
6.4.2 配置生产者的重试参数93
6.4.3 额外的错误处理94
6.5 在可靠的系统里使用消费者94
6.5.1 消费者的可靠性配置95
6.5.2 显式提交偏移量95
6.6 验证系统可靠性97
6.6.1 配置验证98
6.6.2 应用程序验证98
6.6.3 在生产环境监控可靠性99
6.7 总结100
第7章 构建数据管道101
7.1 构建数据管道时需要考虑的问题102
7.1.1 及时性102
7.1.2 可靠性102
7.1.3 高吞吐量和动态吞吐量103
7.1.4 数据格式103
7.1.5 转换104
7.1.6 安全性104
7.1.7 故障处理能力104
7.1.8 耦合性和灵活性105
7.2 如何在ConnectAPI和客户端API之间作出选择105
7.3 KafkaConnect106
7.3.1 运行Connect106
7.3.2 连接器示例——文件数据源和文件数据池107
7.3.3 连接器示例——从MySQL到ElasticSearch109
7.3.4 深入理解Connect114
7.4 Connect之外的选择116
7.4.1 用于其他数据存储的摄入框架116
7.4.2 基于图形界面的ETL工具117
7.4.3 流式处理框架117
7.5 总结117
第8章 跨集群数据镜像118
8.1 跨集群镜像的使用场景118
8.2 多集群架构119
8.2.1 跨数据中心通信的一些现实情况119
8.2.2 Hub和Spoke架构120
8.2.3 双活架构121
8.2.4 主备架构123
8.2.5 延展集群127
8.3 Kafka的MirrorMaker128
8.3.1 如何配置129
8.3.2 在生产环境部署MirrorMaker130
8.3.3 MirrorMaker调优132
8.4 其他跨集群镜像方案134
8.4.1 优步的uReplicator134
8.4.2 Confluent的Replicator135
8.5 总结135
第9章 管理Kafka136
9.1 主题操作136
9.1.1 创建主题137
9.1.2 增加分区138
9.1.3 删除主题138
9.1.4 列出集群里的所有主题139
9.1.5 列出主题详细信息139
9.2 消费者群组140
9.2.1 列出并描述群组140
9.2.2 删除群组142
9.2.3 偏移量管理142
9.3 动态配置变更143
9.3.1 覆盖主题的默认配置143
9.3.2 覆盖客户端的默认配置145
9.3.3 列出被覆盖的配置145
9.3.4 移除被覆盖的配置146
9.4 分区管理146
9.4.1 首选的首领选举146
9.4.2 修改分区副本147
9.4.3 修改复制系数150
9.4.4 转储日志片段151
9.4.5 副本验证152
9.5 消费和生产153
9.5.1 控制台消费者153
9.5.2 控制台生产者155
9.6 客户端ACL157
9.7 不安全的操作157
9.7.1 移动集群控制器157
9.7.2 取消分区重分配157
9.7.3 移除待删除的主题158
9.7.4 手动删除主题158
9.8 总结159
第10章 监控Kafka160
10.1 度量指标基础160
10.1.1 度量指标在哪里160
10.1.2 内部或外部度量161
10.1.3 应用程序健康检测161
10.1.4 度量指标的覆盖面161
10.2 broker的度量指标162
10.2.1 非同步分区162
10.2.2 broker度量指标166
10.2.3 主题和分区的度量指标173
10.2.4 Java虚拟机监控174
10.2.5 操作系统监控175
10.2.6 日志176
10.3 客户端监控177
10.3.1 生产者度量指标177
10.3.2 消费者度量指标179
10.3.3 配额181
10.4 延时监控182
10.5 端到端监控183
10.6 总结183
第11章 流式处理184
11.1 什么是流式处理185
11.2 流式处理的一些概念186
11.2.1 时间187
11.2.2 状态188
11.2.3 流和表的二元性188
11.2.4 时间窗口189
11.3 流式处理的设计模式190
11.3.1 单个事件处理191
11.3.2 使用本地状态191
11.3.3 多阶段处理和重分区193
11.3.4 使用外部查找——流和表的连接193
11.3.5 流与流的连接195
11.3.6 乱序的事件195
11.3.7 重新处理196
11.4 Streams示例197
11.4.1 字数统计197
11.4.2 股票市场统计199
11.4.3 填充点击事件流201
11.5 KafkaStreams的架构概览202
11.5.1 构建拓扑202
11.5.2 对拓扑进行伸缩203
11.5.3 从故障中存活下来205
11.6 流式处理使用场景205
11.7 如何选择流式处理框架206
11.8 总结208
附录A 在其他操作系统上安装Kafka209
作者介绍214
封面介绍214
Kafka权威指南 PDF 下载地址:
链接:https://pan.baidu.com/s/1n_KoTkNT-EG__XVsE4Czog?pwd=9noa
提取码:9noa
复制这段内容后打开百度网盘手机App,操作更方便哦