书籍作者:赵渝强 | ISBN:9787121426537 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5361 |
创建日期:2023-03-15 | 发布日期:2023-03-15 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书基于作者多年的教学与实践进行编写,重点介绍Kafka消息系统的核心原理与架构,内容涉及开发、运维、管理与架构。全书共11章,第1章,介绍Kafka体系架构基础,包括消息系统的基本知识、Kafka的体系架构与ZooKeeper;第2章,介绍Kafka的环境部署,以及基本的应用程序开发;第3章,介绍Kafka的生产者及其运行机制,包括生产者的创建和执行过程、生产者的消息发送模式和生产者的高级特性等;第4章,介绍Kafka的消费者及其运行机制,包括消费者的消费模式、消费者组与消费者、消费者的偏移量与提交及消费者的高级特性等;第5章,介绍Kafka服务器端的核心原理,包括主题与分区、消息的持久性与传输保障、Kafka配额与日志的管理;第6章,介绍Kafka的流处理引擎Kafka Stream;第7章,介绍使用不同的工具监控Kafka,包括Kafka Manager、Kafka Tool、KafkaOffsetMonitor和JConsole;第8章至第11章,介绍Kafka与外部系统的集成,包括集成Flink、集成Storm、集成Spark和集成Flume。
赵渝强(赵强老师),18年以上的IT行业从业经历,清华大学计算机软件专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问,华为官方认证讲师,曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大数据、数据库、容器技术、中间件技术和Java技术。
1. 全面系统:包含Kafka完整生态,如Kafka Producer、Kafka Consumer、Kafka Server、Kafka Stream和ZooKeeper。
2. 核心原理:通过图文详解Kafka的体系架构与运行机制。
3. 实战部署:通过Step by Step的步骤演示Kafka生产环境的部署。
4. 应用开发:包含Java和Scala应用开发示例。
5. 流式计算:全面系统地介绍Kafka流处理框架Kafka Stream。
6. 系统集成:Kafka与Flink、Storm、Spark和Flume集成。
7. 运维监控:详解Kafka的监控参数和监控方式。
8. 案例丰富:大量应用程序代码介绍Kafka程序开发。
前言
为什么要写这本书
随着信息技术的不断发展,数据出现爆炸式增长。为了实现对大数据实时高效的分析与处理,Kafka被广泛应用于大数据实时计算架构中。随着数据的不断增长,Kafka也得到了不断的发展。各大科技巨头在其自身的大数据平台架构中也大量将Kafka用于实时数据的存储与转发,如阿里云大数据平台、腾讯大数据平台、华为大数据平台等。因此,掌握Kafka无疑是实现大数据实时计算架构中非常重要的一个组成部分。
笔者拥有消息系统Kafka多年的教学与实践经验,并在实际Kafka运维和开发工作中积累了一些经验,因此想系统地编写一本Kafka方面的书,力求能够完整地介绍消息系统Kafka。本书一方面总结了笔者在Kafka方面的经验,另一方面也希望能够对Kafka方向的从业者和学习者有所帮助,同时希望给Kafka在国内的发展贡献一份力量。相信通过本书的介绍能够让读者全面并系统地掌握Kafka,并能够在实际工作中灵活地运用Kafka。
本书有何特点
本书将从Kafka的基础理论和体系架构出发,为读者全面系统地介绍每个相关知识点。每个实验步骤都经过笔者验证,力求能够帮助读者在学习过程中搭建学习实验的环境,并将其应用在实际工作中。
本书涵盖了Kafka中的各个方面,内容涉及体系架构、管理运维和应用开发,全书共11章。如果读者有一定的经验,完全可以不按章节顺序,选择比较关注的章节进行阅读;如果读者是零基础,建议按照本书的顺序进行学习,并根据书中的实验步骤进行环境的搭建,相信读者在阅读本书的过程中能够有很大的收获。
适合阅读本书的读者
由于Kafka消息系统是基于Scala语言编写的,而Scala语言又构建在Java语言之上,因此本书适合具有一定Java编程基础的人员阅读,特别适合以下读者。
q 平台架构师:平台架构师通过阅读本书能够全面和系统地了解Kafka体系,提升系统架构的设计能力。
q 开发人员:基于Kafka进行应用开发的开发人员通过阅读本书能够了解Kafka消息系统的核心实现原理和编程模型,提升应用开发的水平。
q 运维管理人员:初、中级的Kafka运维管理人员通过阅读本书在掌握Kafka架构的基础上能够提升Kafka的运维管理经验。
阅读本书的建议
由于本书具有很强的实践性,因此读者在阅读本书时,最好采用理论与实践相结合的方式。在阅读内容的同时,动手搭建实验环境并开发相应的应用程序。只有这样才能更好地理解Kafka的工作原理和运行机制。
第1章 Kafka体系架构基础 1
1.1 什么是消息系统 1
1.2 消息系统的分类 2
1.2.1 同步消息机制与异步消息机制 3
1.2.2 队列与主题 4
1.3 Kafka的体系架构 5
1.3.1 消息服务器 6
1.3.2 主题、分区与副本 6
1.3.3 生产者 7
1.3.4 消费者与消费者组 8
1.4 分布式协调服务ZooKeeper 9
1.4.1 ZooKeeper集群的架构 9
1.4.2 ZooKeeper的节点类型 10
1.4.3 ZooKeeper的观察机制 13
1.4.4 ZooKeeper的分布式锁 14
1.4.5 ZooKeeper在Kafka中的作用 17
1.5 准备实验环境 17
1.5.1 安装CentOS操作系统 17
1.5.2 配置CentOS操作系统 23
1.5.3 安装JDK 24
第2章 部署Kafka 25
2.1 部署ZooKeeper 25
2.1.1 ZooKeeper的核心配置文件 26
2.1.2 部署ZooKeeper的Standalone模式 28
2.1.3 部署ZooKeeper的集群模式 32
2.1.4 测试ZooKeeper集群 35
2.2 安装部署Kafka 36
2.2.1 单机单Broker的部署 40
2.2.2 单机多Broker的部署 42
2.2.3 多机多Broker的部署 43
2.2.4 使用命令行测试Kafka 44
2.3 Kafka配置参数详解 45
2.4 Kafka在ZooKeeper中保存的数据 46
2.5 开发客户端程序测试Kafka 47
2.5.1 开发Java版本的客户端程序 48
2.5.2 开发Scala版本的客户端程序 50
第3章 Kafka的生产者 53
3.1 Kafka生产者的执行过程 53
3.2 创建Kafka生产者 54
3.2.1 创建基本的消息生产者 54
3.2.2 发送自定义消息对象 55
3.3 生产者的消息发送模式 60
3.4 生产者的高级特性 61
3.4.1 生产者分区机制 61
3.4.2 生产者压缩机制 66
3.4.3 生产者拦截器 67
3.5 生产者的参数配置 71
第4章 Kafka的消费者 77
4.1 Kafka消费者的消费模式 77
4.1.1 消息的推送模式 77
4.1.2 消息的拉取模式 77
4.1.3 推送模式与拉取模式的区别 78
4.1.4 消息者组 78
4.2 创建Kafka消费者 79
4.2.1 创建基本的消息消费者 79
4.2.2 接收自定义消息对象 80
4.3 消费者与消费者组 82
4.3.1 消费者和消费者组与分区的关系 82
4.3.2 分区的重平衡 85
4.4 消费者的偏移量与提交 86
4.4.1 偏移量与重平衡 86
4.4.2 偏移量的提交方式 87
4.5 消费者的高级特性 90
4.5.1 消费者的分区策略 90
4.5.2 重平衡监听器 93
4.5.3 消费者的拦截器 95
4.5.4 消费者的优雅退出 97
4.6 消费者的参数配置 98
第5章 Kafka的服务器端 102
5.1 主题与分区 102
5.1.1 主题和分区的关系 102
5.1.2 主题的管理 103
5.1.3 使用KafkaAdminClient 109
5.2 消息的持久性 111
5.2.1 Kafka消息持久性概述 111
5.2.2 Kafka的持久化原理解析 112
5.2.3 持久化的读写流程 114
5.2.4 为什么要建立分段和索引 115
5.3 消息的传输保障 115
5.3.1 生产者的ack机制 115
5.3.2 消费者与高水位线 116
5.4 副本和Leader副本的选举 117
5.5 Kafka配额的管理 118
5.6 Kafka的日志删除与压缩 120
5.6.1 日志的删除 120
5.6.2 日志的压缩 120
5.6.3 清理的实现细节 120
5.7 Kafka与ZooKeeper 123
5.7.1 ZooKeeper扮演的角色 123
5.7.2 Kafka在ZooKeeper中存储的数据 124
5.8 服务器端参数设置 125
第6章 流处理引擎Kafka Stream 130
6.1 Kafka Stream的体系架构 130
6.1.1 为什么需要Kafka Stream 130
6.1.2 Kafka Stream的体系架构 131
6.1.3 执行Kafka Stream示例程序 132
6.2 开发自己的Kafka Stream应用程序 134
6.3 Kafka Stream中的数据模型 139
6.3.1 KStream与KTable 139
6.3.2 状态管理 141
6.4 Kafka Stream中的窗口计算 144
6.4.1 时间 144
6.4.2 窗口 145
第7章 监控Kafka 151
7.1 Kafka的监控指标 151
7.2 使用Kafka客户端监控工具 153
7.2.1 Kafka Manager 153
7.2.2 Kafka Tool 157
7.2.3 KafkaOffsetMonitor 162
7.2.4 JConsole 163
7.3 监控ZooKeeper 166
第8章 Kafka与Flink集成 168
8.1 Flink的体系架构 168
8.1.1 Flink中的数据集 168
8.1.2 Flink的生态圈体系 169
8.1.3 Flink的体系架构 171
8.2 安装部署Flink Standalone模式 172
8.2.1 Flink Standalone模式的部署 174
8.2.2 在Standalone模式上执行Flink任务 178
8.3 Flink DataSet API算子 181
8.4 Flink DataStream API算子 191
8.5 集成Flink与Kafka 196
8.5.1 将Kafka作为Flink的Source Connector 197
8.5.2 将Kafka作为Flink的Sink Connector 200
第9章 Kafka与Storm集成 203
9.1 离线计算与流式计算 203
9.2 Apache Storm的体系架构 205
9.3 部署Apache Storm 207
9.3.1 部署Storm的伪分布模式 209
9.3.2 部署Storm的全分布模式 213
9.3.3 Storm HA模式 216
9.4 执行Apache Storm任务 220
9.4.1 执行WordCountTopology 220
9.4.2 Storm的其他管理命令 224
9.5 开发自己的Storm任务 224
9.5.1 Storm Topology任务处理的数据模型 224
9.5.2 开发自己的WordCountTopology任务 226
9.6 集成Kafka与Storm 232
9.6.1 Storm从Kafka中接收数据 233
9.6.2 测试Kafka与Storm的集成 236
9.6.3 Storm将数据输出到Kafka 238
第10章 Kafka与Spark集成 240
10.1 Spark基础 240
10.1.1 Spark的特点 241
10.1.2 Spark的体系架构 242
10.2 安装部署Spark环境 243
10.2.1 伪分布模式的单节点环境部署 246
10.2.2 全分布模式的环境安装部署 248
10.3 执行Spark任务 249
10.3.1 使用spark-submit提交任务 249
10.3.2 交互式命令行工具spark-shell 251
10.4 Spark的核心编程模型 256
10.4.1 什么是RDD 256
10.4.2 RDD的算子 257
10.4.3 开发自己的WordCount程序 260
10.5 流式计算引擎Spark Streaming 264
10.5.1 什么是Spark Streaming 264
10.5.2 离散流 265
10.5.3 开发自己的Spark Streaming程序 266
10.6 集成Kafka与Spark Streaming 269
10.6.1 基于Receiver的方式 269
10.6.2 直接读取的方式 271
第11章 Kafka与Flume集成 274
11.1 Apache Flume基础 274
11.1.1 Apache Flume的体系架构 274
11.1.2 Apache Flume的安装和部署 278
11.2 Flume的Source组件 280
11.3 Flume的Channel组件 282
11.4 Flume的Sink组件 283
11.5 集成Kafka与Flume 287