Apache Kafka源码剖析

徐郡明 编著
前言 这是一个数据大爆炸的时代,互联网成为了数据传播的主要载体。大数据处理平台在现代化的互联网公司进行商业决策、规划发展、市场拓展等方面扮演着越来越重要的角色。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…