这书从LinkedIn(领英)公司内部大数据架构说起,引申出消息队列Kafka,然后解读Kafka的基本构架,随后主要分析Kafka内部的各控制模块实现细节。从问世背景至构架构成,再到内部实现细节,循序渐进,由浅入深。这书不仅解读Kafka内部的实现原理,而且还详细说明Kafka外界的维护工具,对外开放的手机客户端程序编写原理以及和第三方集成化的方式。这书在解读Kafka的过程中交叉了大量的图片,图片配文字,栩栩如生形象,使用户能更加深层次地了解Kafka。
目录
- 序
- 前言
- 第1章 Kafka简介 1
- 1.1 Kafka诞生的背景 1
- 1.2 Kafka在LinkedIn内部的应用 3
- 1.3 Kafka的主要设计目标 4
- 1.4 为什么使用消息系统 4
- 1.5 本章小结 5
- 第2章 Kafka的架构 6
- 2.1 Kafka的基本组成 6
- 2.2 Kafka的拓扑结构 8
- 2.3 Kafka内部的通信协议 9
- 2.4 本章小结 12
- 第3章 Broker概述 13
- 3.1 Broker的启动 13
- 3.2 Broker内部的模块组成 15
- 3.3 本章小结 18
- 第4章 Broker的基本模块 19
- 4.1 SocketServer 19
- 4.2 KafkaRequestHandlerPool 25
- 4.3 KafkaApis 27
- 4.3.1 LogManager 27
- 4.3.2 ReplicaManager 37
- 4.3.3 OffsetManager 47
- 4.3.4 KafkaScheduler 51
- 4.3.5 KafkaApis 52
- 4.4 KafkaHealthcheck 81
- 4.5 TopicConfigManager 83
- 4.6 本章小结 85
- 第5章 Broker的控制管理模块 86
- 5.1 KafkaController的选举策略 86
- 5.2 KafkaController的初始化 91
- 5.2.1 Leader状态下KafkaController的初始化 91
- 5.2.2 Standby状态下KafkaController的初始化 94
- 5.3 Topic的分区状态转换机制 95
- 5.3.1 分区状态的分类 95
- 5.3.2 分区状态的转换 96
- 5.3.3 PartitionStateMachine模块的启动 102
- 5.4 Topic分区的领导者副本选举策略 103
- 5.4.1 NoOpLeaderSelector 104
- 5.4.2 Off?linePartitionLeaderSelector 104
- 5.4.3 ReassignedPartitionLeader-Selector 106
- 5.4.4 PreferredReplicaPartition-LeaderSelector 107
- 5.4.5 ControlledShutdownLeader-Selector 108
- 5.5 Topic分区的副本状态转换机制 109
- 5.5.1 副本状态的分类 110
- 5.5.2 副本状态的转换 111
- 5.5.3 ReplicaStateMachine模块的启动 117
- 5.6 KafkaController内部的监听器 118
- 5.6.1 TopicChangeListener 119
- 5.6.2 AddPartitionsListener 121
- 5.6.3 PartitionsReassignedListener 122
- 5.6.4 ReassignedPartitionsIsr-ChangeListener 128
- 5.6.5 PreferredReplicaElection-Listener 130
- 5.6.6 BrokerChangeListener 132
- 5.6.7 DeleteTopicsListener 135
- 5.7 Kafka集群的负载均衡流程 136
- 5.8 Kafka集群的Topic删除流程 140
- 5.9 KafkaController的通信模块 146
- 5.10 本章小结 150
- 第6章 Topic的管理工具 151
- 6.1 kafka-topics.sh 151
- 6.1.1 createTopic 153
- 6.1.2 alterTopic 156
- 6.1.3 listTopics 160
- 6.1.4 describeTopic 161
- 6.1.5 deleteTopic 163
- 6.2 kafka-reassign-partitions.sh 164
- 6.2.1 generateAssignment 166
- 6.2.2 executeAssignment 167
- 6.2.3 verifyAssignment 170
- 6.3 kafka-preferred-replica-election.sh 172
- 6.4 本章小结 175
- 第7章 生产者 176
- 7.1 设计原则 176
- 7.2 示例代码 176
- 7.3 模块组成 180
- 7.3.1 ProducerSendThread 180
- 7.3.2 ProducerPool 182
- 7.3.3 DefaultEventHandler 184
- 7.4 发送模式 189
- 7.4.1 同步模式 189
- 7.4.2 异步模式 189
- 7.5 本章小结 192
- 第8章 消费者 193
- 8.1 简单消费者 193
- 8.1.1 设计原则 193
- 8.1.2 消费者流程 194
- 8.1.3 示例代码 195
- 8.1.4 原理解析 200
- 8.2 高级消费者 202
- 8.2.1 设计原则 202
- 8.2.2 消费者流程 203
- 8.2.3 示例代码 204
- 8.2.4 原理解析 205
- 8.3 本章小结 227
- 第9章 Kafka的典型应用 228
- 9.1 Kafka和Storm的集成 228
- 9.1.1 Storm简介 228
- 9.1.2 示例代码 230
- 9.2 Kafka和ELK的集成 235
- 9.2.1 ELK简介 235
- 9.2.2 配置流程 236
- 9.3 Kafka和Hadoop的集成 237
- 9.3.1 Hadoop简介 237
- 9.3.2 示例代码 239
- 9.4 Kafka和Spark的集成 242
- 9.4.1 Spark简介 242
- 9.4.2 示例代码 245
- 9.5 本章小结 247
- 第10章 Kafka的综合实例 248
- 10.1 安防大数据的主要应用 248
- 10.2 Kafka在安防整体解决方案中的角色 249
- 10.3 典型业务 250
- 10.3.1 车辆人脸图片数据的入库 251
- 10.3.2 视频数据的入库 252
- 10.3.3 数据延时的监控 254
- 10.3.4 数据质量的监控 256
- 10.3.5 布控统计 258
- 10.3.6 容灾备份 259
- 10.4 本章小结 260