前言
给予一个技术书籍作者最好的赞赏莫过于这句话——“如果在一开始接触这门技术时能看到这本书就好了”。在开始写这本书的时候,我们就是以这句话作为写作目标。我们开发Kafka,在生产环境运行Kafka,帮助很多公司构建基于Kafka的系统,帮助他们管理数据管道,积累了很多经验,但也困惑:“应该把哪些东西分享给Kafka新用户,让他们从新手变成专家?”这本书就是我们日常工作最好的写照:运行Kafka并帮助其他人更好地使用Kafka。
我们相信,书中提供的这些内容能够帮助Kafka用户在生产环境运行Kafka以及基于Kafka构建健壮的高性能应用程序。我们列举了一些非常流行的应用场景:用于事件驱动微服务系统的消息总线、流式应用和大规模数据管道。这本书通俗易懂,能够帮助每一个Kafka用户在任意的架构或应用场景里使用好Kafka。书中介绍了如何安装和配置Kafka、如何使用Kafka API、Kafka的设计原则和可靠性保证,以及Kafka的一些架构细节,如复制协议、控制器和存储层。我们相信,Kafka的设计原理和内部架构不仅会成为分布式系统构建者的兴趣所在,对于那些在生产环境部署Kafka或使用Kafka构建应用程序的人来说也是非常有用的。越是了解Kafka,就越是能够更好地作出权衡。
在软件工程里,条条道路通罗马,每一个问题都有多种解决方案。Kafka为专家级别的用户提供了巨大的灵活性,而新手则需要克服陡峭的学习曲线才能成为专家。Kafka通常会告诉你如何使用某个功能特性,但不会告诉你为什么要用它或者为什么不该用它。我们会尽可能地解释我们的设计决策和权衡背后的缘由,以及用户在哪些情况下应该或不应该使用Kafka提供的特性。
读者对象
这本书是为使用Kafka API开发应用程序的工程师和在生产环境安装、配置、调优、监控Kafka的运维工程师(也可以叫作SRE、运维人员或系统管理员)而写的。我们也考虑到了数据架构师和数据工程师,他们负责设计和构建整个组织的数据基础架构。某些章节(特别是第3章、第4章和第11章)主要面向Java开发人员,并假设读者已经熟悉基本的Java语言编程,比如异常处理和并发编程。其他章节(特别是第2章、第8章、第9章和第10章)则假设读者在Linux的运行、存储和网络配置方面有一定的经验。本书的其余部分则讨论了一般性的软件架构,不要求读者具备特定的知识。
另一类可能对本书感兴趣的人是那些经理或架构师,他们不直接使用Kafka,但会与使用Kafka的工程师打交道。他们有必要了解Kafka所能提供的保证机制,以及他们的同事在构建基于Kafka的系统时所作出的权衡。这本书可以成为企业管理人员的利器,确保他们的工程师在Kafka方面训练有素,让他们的团队了解他们本该知道的知识。
排版约定
本书使用了下列排版约定。
· 黑体
表示新术语或重点强调的内容。
· 等宽字体(constant width)
表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。
· 加粗等宽字体(constant width bold)
表示应该由用户输入的命令或其他文本。
· 等宽斜体(constant width italic)
表示应该由用户输入的值或根据上下文确定的值替换的文本。
该图标表示提示或建议。
该图标表示一般注记。
该图标表示警告或警示。
使用代码示例
本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发O'Reilly图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。
我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN。例如“Kafka权威指南,作者Neha Narkhede、Gwen Shapira和Todd Palino(O'Reilly),版权归Neha Narkhede、Gwen Shapira和Todd Palino所有,978-1-4919-3616-0”。
如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过permissions@oreilly.com与我们联系。
O'Reilly Safari
Safari(原来叫Safari Books Online)是面向企业、政府、教育从业者和个人的会员制培训和参考咨询平台。
我们向会员开放成千上万本图书以及培训视频、学习路线、交互式教程和专业视频。这些资源来自250多家出版机构,其中包括O'Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett和Course Technology。
更多信息,请访问http://oreilly.com/safari。
联系我们
请把对本书的评价和问题发给出版社。
美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
O'Reilly的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是http://oreil.ly/2tVmYjk。
对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com
要了解更多O'Reilly图书、培训课程、会议和新闻的信息,请访问以下网站:http://www.oreilly.com
我们在Facebook的地址如下:http://facebook.com/oreilly
请关注我们的Twitter动态:http://twitter.com/oreillymedia
我们的YouTube视频地址如下:http://www.youtube.com/oreillymedia
致谢
我们想感谢众多为Kafka和它的生态系统做出贡献的人。如果没有他们艰辛的工作,就不会有这本书的问世。特别感谢Jay Kreps、Neha Narkhede和Jun Rao,以及他们在LinkedIn的同事和领导,他们创造了Kafka,并把它捐献给了Apache软件基金会。
很多人在早前为本书提供了很多有价值的反馈,我们非常感激他们为此付出的时间,也很钦佩他们的专业能力,这些人包括:Apurva Mehta、Arseniy Tashoyan、Dylan Scott、Ewen Cheslack-Postava、Grant Henke、Ismael Juma、James Cheng、Jason Gustafson、Jeff Holoman、Joel Koshy、Jonathan Seidman、Matthias Sax、Michael Noll、Paolo Castagna。我们还想感谢众多在网站上留下评论和反馈的读者。
很多审稿人提供了有价值的意见,极大改进了本书的质量。书中的遗留错误理应由我们作者负责。
我们要感谢O'Reilly编辑Shannon Cutt的鼓励、耐心和深谋远虑。对于一个作者来说,与O'Reilly一起合作是一段非凡的经历——他们所提供的支持,从工具到签名售书,都是无可匹敌的。我们感谢每一个参与本书相关工作的人,很感激他们愿意与我们一起工作。
另外,我们也想感谢我们的领导和同事,感谢他们在我们写作这本书的过程中给予的帮助和鼓励。
Gwen要感谢她的丈夫Omer Shapira,在她写书的几个月时间里,他一直给予她支持和耐心。还有她的父亲Lior Shapira,让她学会了如何在困难面前不轻言放弃,尽管这种生活哲学总是让她麻烦不断。
Todd要感谢他的妻子Marcy和女儿Bella及Kaylee,她们一直在背后默默地支持他。因为有了她们的支持,他才有更多的时间写作,才能厘清思路,坚持到最后。
电子书
扫描如下二维码,即可购买本书电子版。