《Kafka权威指南》

文 / Jay Kreps,Confluent 联合创始人兼 CEO

这是一个激动人心的时刻,成千上万的企业在使用 Kafka,三分之一多的世界 500 强公司也在其中。Kafka 是成长最快的开源项目之一,它的生态系统也在蓬勃发展。Kafka 正在成为管理和处理流式数据的利器。

Kafka 从何而来?我们为什么要开发 Kafka ? Kafka 到底是什么?

Kafka 最初是 LinkedIn 的一个内部基础设施系统。我们发现,虽然有很多数据库和系统可以用来存储数据,但在我们的架构里,刚好缺一个可以帮助处理持续数据流的组件。在开发 Kafka 之前,我们实验了各种现成的解决方案,从消息系统到日志聚合系统,再到 ETL 工具,它们都无法满足我们的需求。

最后,我们决定从头开发一个系统。我们不想只是开发一个能够存储数据的系统,比如传统的关系型数据库、键值存储引擎、搜索引擎或缓存系统,我们希望能够把数据看成是持续变化和不断增长的流,并基于这样的想法构建出一个数据系统;事实上,是一个数据架构。

这个想法实现后比我们最初预想的适用性更广。Kafka 一开始被用在社交网络的实时应用和数据流当中,而现在已经成为下一代数据架构的基础。大型零售商正在基于持续数据流改造他们的基础业务流程,汽车公司正在从互联网汽车那里收集和处理实时数据流,银行也在重新思考基于 Kafka 改造他们的基础流程和系统。

那么 Kafka 在这当中充当了怎样的角色?它与现有的系统有什么区别?

我们认为 Kafka 是一个流平台:在这个平台上可以发布和订阅数据流,并把它们保存起来、进行处理,这就是构建 Kafka 的初衷。以这种方式来看待数据确实与人们习惯的想法有所不同,但它确实在构建应用和架构方面表现出了强大的抽象能力。Kafka 经常会被拿来与现有的技术作比较:企业级消息系统、大数据系统(如 Hadoop)和数据集成或 ETL 工具。这里的每一项比较都有一定的道理,但也有失偏颇。

Kafka 有点像消息系统,允许发布和订阅消息流。从这点来看,它类似于 ActiveMQ、 RabbitMQ 或 IBM 的 MQSeries 等产品。尽管看上去有些相似,但 Kafka 与这些传统的消息系统仍然存在很多重要的不同点,这些差异使它完全不同于消息系统。首先,作为一个现代的分布式系统,Kafka 以集群的方式运行,可以自由伸缩,处理公司的所有应用程序。Kafka 集群并不是一组独立运行的 broker,而是一个可以灵活伸缩的中心平台,可以处理整个公司所有的数据流。其次,Kafka 可以按照你的要求存储数据,保存多久都可以。作为数据连接层,Kafka 提供了数据传递保证——可复制、持久化,保留多长时间完全可以由你来决定。最后,流式处理将数据处理的层次提升到了新高度。消息系统只会传递消息,而 Kafka 的流式处理能力让你只用很少的代码就能够动态地处理派生流和数据集。 Kafka 的这些独到之处足以让你刮目相看,它不只是“另一个消息队列”。

从另一个角度来看 Kafka,我们会把它看成实时版的 Hadoop——这也是我们设计和构建 Kafka 的原始动机之一。Hadoop 可以存储和定期处理大量的数据文件,而 Kafka 可以存储和持续处理大型的数据流。从技术角度来看,它们有着惊人的相似之处,很多人将新兴的流式处理看成批处理的超集。它们之间的最大不同体现在持续的低延迟处理和批处理之间的差异上。Hadoop 和大数据主要应用在数据分析上,而 Kafka 因其低延迟的特点更适合用在核心的业务应用上。业务事件时刻在发生,Kafka 能够及时对这些事件作出响应,基于 Kafka 构建的服务直接为业务运营提供支撑,提升用户体验。

Kafka 与 ETL 工具或其他数据集成工具之间也可以进行一番比较。Kafka 和这些工具都擅长移动数据,但我想它们最大的不同在于 Kafka 颠覆了传统的思维。Kafka 并非只是把数据从一个系统拆解出来再塞进另一个系统,它其实是一个面向实时数据流的平台。也就是说,它不仅可以将现有的应用程序和数据系统连接起来,它还能用于加强这些触发相同数据流的应用。我们认为这种以数据流为中心的架构是非常重要的。在某种程度上说,这些数据流是现代数字科技公司的核心,与他们的现金流一样重要。

将上述的三个领域聚合在一起,将所有的数据流整合到一起,流平台因此变得极具吸引力。

当然,除了这些不同点之外,对于那些习惯了开发请求与响应风格应用和关系型数据库的人来说,要学会基于持续数据流构建应用程序也着实是一个巨大的思维转变。借助《Kafka权威指南》来学习 Kafka 再好不过了,从内部架构到 API,都是由对 Kafka 最了解的人亲手呈现的。我希望你们能够像我一样喜欢这本书!

作者:Neha Narkhede,Gwen Shapira,Todd Palino

译者:薛命灯

定价:69.00元

Kafka核心作者和业界一线人员共同执笔的作品

全面介绍Kafka设计原理和架构细节

列举非常流行的应用场景,帮助Kafka 用户在生产环境中运行Kafka 以及基于Kafka 构建健壮的高性能应用程序

本书是关于Kafka的全面教程,主要内容包括:

Kafka相对于其他消息队列系统的优点,主要是它如何完美匹配大数据平台开发;

详解Kafka内部设计;

用Kafka构建应用的最佳实践;

理解在生产中部署Kafka的最佳方式;

如何确保Kafka集群的安全。

图书目录

前言

第 1 章 初识 Kafka

第 2 章 安装 Kafka

第 3 章 Kafka 生产者——向 Kafka 写入数据

第 4 章 Kafka 消费者——从 Kafka 读取数据

第 5 章 深入 Kafka

第 6 章 可靠的数据传递

第 7 章 构建数据管道

第 8 章 跨集群数据镜像

第 9 章 管理 Kafka

第 10 章 监控 Kafka

第 11 章 流式处理

附录 A 在其他操作系统上安装 Kafka

作译者团队

Neha Narkhede

Confluent联合创始人、CTO,曾在 LinkedIn 主导基于 Kafka 和Apache Smza 构建流式基础设施,是Kafka作者之一。

Gwen Shapira

Confluent 系统架构师,帮助客户构建基于 Kafka 的系统,在可伸缩数据架构方面拥有十余年经验;曾任 Cloudera 公司解决方案架构师。另著有《Hadoop应用架构》。

Todd Palino

LinkedIn主任级SRE,负责部署管理大型的Kafka、Zookeeper 和 Samza 集群。

薛命灯

毕业于厦门大学软件学院,十余年软件开发和架构经验,InfoQ高级社区编辑。译有《硅谷革命》《生产微服务》等书。微信公众号CodeDeep。

赠书

各位朋友是否已经入坑 Kafka 了?可以留言说说跟其他消息系统或者数据处理框架相比,它有哪些优缺点。精选评论点赞前5位获得赠书,截止1月12日(星期五)中午 12:00。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111B05PUY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动