描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121313455
第1章 快速入门
1.1 Kafka简介
1.2 以Kafka为中心的解决方案
1.3 Kafka核心概念
1.4 搭建Kafka源码环境
本章小结
第2章 生产者
2.1 KafkaProducer使用示例
2.2 KafkaProducer分析
2.2.1 ProducerInterceptors&ProducerInterceptor
2.2.2 Kafka集群元数据
2.2.3 Serializer&Deserializer
2.2.4 Partitioner
2.3 RecordAccumulator分析
2.3.1 MemoryRecords
2.3.2 RecordBatch
2.3.3 BufferPool
2.3.4 RecordAccumulator
2.4 Sender分析
2.4.1 创建请求
2.4.2 KSelector
2.4.3 InFlightRequests
2.4.4 MetadataUpdater
2.4.5 NetworkClient
本章小结
第3章 消费者
3.1 KafkaConsumer使用示例
3.2 传递保证语义(Delivery guarantee semantic)
3.3 Consumer Group Rebalance设计
3.4 KafkaConsumer分析
3.4.1 ConsumerNetworkClient
3.4.2 SubscriptionState
3.4.3 ConsumerCoordinator
3.4.4 PartitionAssignor分析
3.4.5 Heartbeat分析
3.4.6 Rebalance实现
3.4.7 offset操作
3.4.8 Fetcher
3.4.9 KafkaConsumer分析总结
本章小结
第4章 Kafka服务端
4.1 网络层
4.1.1 Reactor模式
4.1.2 SocketServer
4.1.3 AbstractServerThread
4.1.4 Acceptor
4.1.5 Processor
4.1.6 RequestChannel
4.2 API层
4.2.1 KafkaRequestHandler
4.2.2 KafkaApis
4.3 日志存储
4.3.1 基本概念
4.3.2 FileMessageSet
4.3.3 ByteBufferMessageSet
4.3.4 OffsetIndex
4.3.5 LogSegment
4.3.6 Log
4.3.7 LogManager
4.4 DelayedOperationPurgatory组件
4.4.1 TimingWheel
4.4.2 SystemTimer
4.4.3 DelayedOperation
4.4.4 DelayedOperationPurgatory
4.4.5 DelayedProduce
4.4.6 DelayedFetch
4.5 副本机制
4.5.1 副本
4.5.2 分区
4.5.3 ReplicaManager
4.6 KafkaController
4.6.1 ControllerChannelManager
4.6.2 ControllerContext
4.6.3 ControllerBrokerRequestBatch
4.6.4 PartitionStateMachine
4.6.5 PartitionLeaderSelector
4.6.6 ReplicaStateMachine
4.6.7 ZooKeeper Listener
4.6.8 KafkaController初始化与故障转移
4.6.9 处理ControlledShutdownRequest
4.7 GroupCoordinator
4.7.1 GroupMetadataManager
4.7.2 GroupCoordinator分析
4.8 身份认证与权限控制
4.8.1 配置SASL/PLAIN认证
4.8.2 身份认证
4.8.3 权限控制
4.9 Kafka监控
4.9.1 JMX简介
4.9.2 Metrics简介
4.9.3 Kafka中的Metrics
4.9.4 Kafka的监控功能
4.9.5 监控KSelector的指标
第5章 Kafka Tool
5.1 kafka-server-start脚本
5.2 kafka-topics脚本
5.2.1 创建Topic
5.2.2 修改Topic
5.3 kafka-preferred-replica-election脚本
5.4 kafka-reassign-partitions脚本
5.5 kafka-console-producer脚本
5.6 kafka-console-consumer脚本
5.7 kafka-consumer-groups脚本
5.8 DumpLogSegments
5.9 kafka-producer-perf-test脚本
5.10 kafka-consumer-perf-test脚本
5.11 kafka-mirror-maker脚本
本章小结
前 言
这是一个数据大爆炸的时代,互联网成为了数据传播的主要载体。大数据处理平台在现代化的互联网公司进行商业决策、规划发展、市场拓展等方面扮演着越来越重要的角色。Kafka作为大数据平台的重要组件之一,受到越来越多的设计人员和开发人员的青睐,Kafka的社区也变得越来越活跃,Kafka本身的架构设计、应用场景也得到了长足的发展。
Kafka开始由LinkedIn设计开发,并于2011年年初开源,2012年10月成为Apache基金会的项目。目前Kafka为越来越多的分布式大数据处理系统提供支持,其中也包括著名的Apache Spark,LinkedIn、Netflix、Uber、Verizon、网易、美团等互联网公司也选择以Kafka为基础搭建其大数据处理平台或消息中间件系统。随着Kafka的应用场景越来越丰富,用户对Kafka的吞吐量、可扩展性、稳定性和可维护性等有了更多的期许,也有很多开发人员参与到Kafka的开发建议制定和代码提交中。在Kafka 0.10.X版本中出现了很多令人欣喜的新功能,本书深入剖析了Kafka 0.10.X的内部设计和实现细节。
本书以Kafka 0.10.0版本源码为基础,深入剖析了Kafka的各个模块的实现,包括Kafka的生产者客户端、消费者客户端、服务端的各个模块以及常用的管理脚本。笔者对Kafka设计的理解和经验分享也穿插在了剖析源码的过程中,希望读者能够通过本书理解Kafka的设计原理和源码实现,同时也学习到Kafka中优秀的设计思想以及Java和Scala的编程技巧和规范。
如何阅读本书
由于本书的篇幅限制,本书并没有详细介绍Kafka源码中涉及的所有基础知识,例如Java NIO、J.U.C包中工具类的使用、命令行参数解析器的使用等,为方便读者阅读,笔者仅介绍了一些必须且重要的基础知识。在开始源码分析之前,希望读者按照第1章的相关介绍完成Kafka源码环境的搭建,并了解Kafka的核心概念,这样也可以有更好的学习效果。
本书共五章,它们互相之间的联系并不是很强,读者可以从头开始阅读,也可以选择自己感兴趣的章节进行学习。
第1章是Kafka的快速入门,其中介绍了Kafka的背景、特性以及应用场景。之后介绍了笔者在实践中遇到的一个以Kafka为中心的案例,并分析了在此案例中选择使用Kafka的具体原因和Kafka起到的关键作用。后介绍了Kafka中的核心概念和Kafka源码调试环境的搭建。
第2章介绍了生产者客户端的设计特点和实现细节,剖析了KafkaProducer拦截消息、序列化消息、路由消息等功能的源码实现,介绍了RecordAccumulator的结构和实现。后剖析了KafkaProducer中Sender线程的源码。
第3章介绍了Kafka的消息传递保证语义并给出了相关的实践建议,还介绍了Consumer Group Rebalance操作各个版本方案的原理和弊端。后详细剖析了KafkaConsumer相关组件的运行原理和实现细节。
第4章介绍了构成Kafka服务端的各个组件,依次分析了Kafka网络层、API层、日志存储、DelayedOperationPurgatory组件、Kafka的副本机制、KafkaController、GroupCoordinator、Kafka的身份认证与权限控制以及Kafka监控相关的实现。本章是Kafka的核心内容,涉及较多的设计细节和编程技巧,希望读者阅读之后有所收获。
第5章介绍了Kafka提供的多个脚本工具的使用以及具体实现原理,了解这些脚本可以帮助管理人员快速完成一些常见的管理、运维、测试功能。
如果读者在阅读本书的过程中,发现任何不妥之处,请将您宝贵的意见和建议发送到邮箱,也欢迎读者朋友通过此邮箱与笔者进行交流。
致谢
感谢电子工业出版社博文视点的陈晓猛老师,是您的辛勤工作让本书的出版成为可能。同时还要感谢许多我不知道名字的幕后工作人员为本书付出的努力。
感谢张占龙、张亚森、杨威、刘克刚、刘思等朋友在百忙之中抽出时间对本书进行审阅和推荐。感谢林放、米秀明、星亮亮、王松洋、褚洪洋、曾天宁、葛彬、赵美凯、顾聪慧、孙向川、段鑫冬、彭海蛟、赵仁伟等同事,帮助我解决工作中的困难。
感谢冯玉玉、李成伟,是你们让写作的过程变得妙趣横生,是你们让我更加积极、自信,也是你们的鼓励让我完成了本书的写作。
后,特别感谢我的母亲大人,谢谢您默默为我做出的牺牲和付出,您是我永远的女神。
徐郡明
《Apache Kafka源码剖析》一书深入浅出地分析了Kafka的源代码,无论是刚接触Kafka的菜鸟,还是已经有多年Kafka使用经验的老鸟,这本书都能让你有所收获。
——搜狗高级研发工程师 张亚森
Kafka是大数据平台中的关键部分之一。《Apache Kafka源码剖析》全面细致地剖析了Kafka的运行原理和架构设计,在带领读者进入Kafka源码世界的同时,也分析了许多设计经验,是一本不可多得的好书。
——华为高级研发工程师 张占龙
在阅读《Apache Kafka源码剖析》时,作者在每一章节中都会给我意外之惊喜。作者对Kafka源代码已有相当深刻的理解,此书代码分析过程逻辑清晰,详略得当,实属不易。
——网易游戏高级数据挖掘研究员 杨威
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。《Apache Kafka源码剖析》通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
——今日头条高级研发工程师 刘克刚
《Apache Kafka源码剖析》中汇集了作者多年Kafka开发经验,为读者深入学习Kafka实现指明了方向。对于想学习Kafka的程序员来说,这是一本非常不错的进阶书籍。
——美团高级研发工程师 刘思
评论
还没有评论。