编辑推荐
业内专家王国璋、付稳、王迪、杨金峰联袂力荐。
基于Apache Kafka 1.0.0版本进行介绍,Kafka Contributor执笔。
从Kafka基本概念与特性开始,详细介绍了Kafka的部署、开发、运营、监控、调试、优化以及重要组件的设计原理,并给出了翔实的案例。
本书既适合作为Kafka的入门书籍,也适合系统架构师和一线开发工程师参考阅读。
胡夕 著 / 2018年5月出版
内容提要
《Apache Kafka实战》是涵盖Apache Kafka各方面的具有实践指导意义的工具书和参考书。作者结合典型的使用场景,对Kafka整个技术体系进行了较为全面的讲解,以便读者能够举一反三,直接应用于实践。同时,本书还对Kafka的设计原理及其流式处理组件进行了较深入的探讨,并给出了翔实的案例。
《Apache Kafka实战》共分为10章:第1章全面介绍消息引擎系统以及Kafka的基本概念与特性,快速带领读者走进Kafka的世界;第2章简要回顾了Apache Kafka的发展历史;第3章详细介绍了Kafka集群环境的搭建;第4、5章深入探讨了Kafka客户端的使用方法;第6章带领读者一览Kafka内部设计原理;第7~9章以实例的方式讲解了Kafka集群的管理、监控与调优;第10章介绍了Kafka新引入的流式处理组件。
《Apache Kafka实战》适合所有对云计算、大数据处理感兴趣的技术人员阅读,尤其适合对消息引擎、流式处理技术及框架感兴趣的技术人员参考阅读。
精彩导读
前言
2011年年初,美国领英公司(LinkedIn)开源了一款基础架构软件,以奥地利作家弗兰兹·卡夫卡(Franz Kafka)的名字命名,之后LinkedIn将其贡献给Apache基金会,随后该软件于2012年10月成功完成孵化并顺利晋升为Apache顶级项目——这便是大名鼎鼎的Apache Kafka。历经7年发展,2017年11月,Apache Kafka正式演进到1.0时代,本书就是基于1.0.0版本来展开介绍Kafka的设计原理与实战的。
背景
这是一个最好的大数据时代,这是一个最坏的大数据时代!
很抱歉,我使用了这句改编后的狄更斯名言作为开头,我想没有谁会质疑“当今是大数据时代”这个论点。今年(2018年)两会上李克强总理所做的政府工作报告中多次提及大数据等关键词,这已然是“大数据”第5次被写入政府工作报告了。具体到大数据行业内,各种各样的大数据产业方兴未艾,其中在实时流式处理领域涌现出大量的技术与框架,令技术人员们应接不暇。实时流式处理系统在克服了传统批处理系统延时方面的固有缺陷的同时,还摆脱了设计上的桎梏,实现了“梦寐以求”的正确性。可以说,对于流式处理从业人员来说,这正是摩拳擦掌、大展宏图的最好时代。
与此同时,我们也清醒地意识到当今大数据领域内的细分越来越精细化。不必说日渐火爆的人工智能和机器学习潮流引诱着我们改弦易辙,也不必说那些纷繁复杂的技术框架令人眼花缭乱,单是静下心来沉淀所学、思考方向的片刻时光于我们这些从业者来说都已显得弥足珍贵。我们仿佛在黑暗密林中徘徊,试图找出那条通往光明的“康庄大道”。每当发现了一条羊肠小路都好似救命稻草一般紧紧抓住。多年后我们回望那只不过是不断追逐热点罢了,在技术的海洋中我们迷失了前进的方向。从这个意义上说,这实在是一个糟糕的时代。
时光切回到4年前的某个下午,那时我正在做着Kafka的大数据项目。我突然发现与其盲目跟风各种技术趋势,何不精进手头的工作,把当前工作中用到的技术搞明白,于是我萌发了研究Kafka的想法。直到今天,我都无比庆幸那个午后做出的冲动决定,正如Adam Grant在《离经叛道》一书中所说:最正确的决定都是在冲动之下做出的。诚不欺我!
想要深入学习Kafka,不掌握Scala语言是不行的,毕竟Kafka就是使用Scala语言编写的。苦于当时没有合适的Scala中文书籍,我依稀记得找到了一本600多页的Scala原版书(Programming Scala Edition 2)进行学习。那段时间实在是难熬!不得不说,英文版书籍虽然内容翔实,但在表述上实在晦涩难懂,比如partially applied function和partial function两者的区别直至今天我都不是特别清晰,还是要不断地翻阅资料才能隐约记得它们之间的不同。庆幸的是,我没有半途而废,600多页的英文文档硬是啃了下来。对于Scala的初步掌握也让我觉得研究Kafka的时机到了。有意思的是,在之后通读Kafka的源码时我不禁大呼上当,Kafka的源码中只使用了最简单的函数式编程,我有些后悔自己花了那么多时间去学习Scala的函数式编程,当然这是后话。
既然是研究Kafka,那么研读源码是必不可少的步骤。如果不分析源码,我们就无法定位问题发生的根本原因。实话实说,阅读别人源码的过程是痛苦的,因而在理解的过程中我走了不少弯路。为了记录阅读Kafka源码的心得,我努力为每个Kafka源码包撰写博客。现在翻看我之前的博客,大家还能看到那好似流水账一般的Kafka源码分析系列文章。
随着对源码的不断熟悉,我加入了Apache Kafka社区,希望贡献自己的微薄之力。时至今日,我依然记得当初发送邮件要求加入开发组时的惶恐,也记得第一次贡献代码时的惴惴不安;我记得为了研究某个Kafka bug,自己曾忘记吃中饭的执着,也记得自己被标记为“Kafka contributor”时的喜悦。在混迹社区的日子里,我逐渐认识了一些Kafka的committer们,比如Kafka PMC成员王国璋,国璋兄对于网上Kafka问题的权威解答令我受教良多,同时我也很感激他于百忙之中为本书写推荐语。还有Kafka的三位原作者之一的饶军(Rao Jun),几次问题交流让我看到了他霸气的决断能力以及对于疑难问题原因的毒辣分析。当然还有非常敬业的Ijuma,他是我见过的最勤劳的Kafka committer,没有之一。在编写本书的过程中,我都或多或少地得到过他们的帮助,再次表示衷心感谢。
由于对Kafka研究的日益深入,我终于有了写书的冲动。我希望通过把学到的知识和原理集中整理并书写成文字来帮助那些尚未接触Kafka的广大读者快速上手,降低他们学习使用Kafka的成本,于是有了今天这本《Apache Kafka实战》。借着写作本书的契机,我本人对Kafka的方方面面做了梳理,自觉收获良多。每当搞懂了一个以前未了解的机制时,心中的那种满足感和兴奋感至今都令人神往。在此,我深深地希望读者在阅读完本书后也能有这样的体会。
面向的读者
我衷心希望本书可以成为各行各业的大数据从业者使用消息队列甚至是进入流式处理领域内的“敲门砖”,也希望各大公司能够充分利用Kafka来实现自己的业务目标。
在编写本书的过程中,我阅读了大量的英文资料和源代码,试图通过自己的理解将Kafka的使用实战技巧深入浅出地呈现给广大读者。没错,我希望这本书给人的感觉是通俗易懂、深入浅出,从而方便引领读者快速进入Kafka学习的大门。
我本人维护了一个微信公众号(名为“大数据Kafka技术分享”),希望在该公众号中我能和读者朋友们一起深入交流和探讨Kafka学习过程中碰到的各种问题,同时我也会及时分享和推送各种最新的Kafka使用心得。
积跬步以至千里。每天读本书,为您搜罗最具权威专业书籍,更多图书推荐请关注每日读书。
好知识需要分享,如您有喜欢的书籍想与广大开发者分享,请在文章下方评论留言,我们将为大家推荐您的爱书!