Apache Kafka
cloud leadspace
什么是 Apache Kafka?

了解 Apache Kafka,这是网络上一些最热门的事件驱动型实时用户体验(例如 AirBnB、Netflix 和 Pinterest)背后的开源流式技术。

Apache Kafka (Kafka) 是一个开源的分布式流媒体平台,它支持开发事件驱动型实时应用程序。 这意味着什么?

目前,有数十亿数据源在不断生成数据记录流,包括事件流。 事件是一种数字记录,用于记录所发生的操作及其发生时间。 通常,事件是一个操作,用于驱动流程中的另一个操作。 事件的示例包括客户下订单、选择航班座位或提交注册表。 事件不一定涉及到人员 - 例如,连接的恒温器在给定时间报告温度也是一个事件。

这些流为需要实时响应数据或事件的应用程序带来了新的机会。 流媒体平台使开发人员能够构建应用程序,以极快的速度持续使用和处理这些流,并基于正确的发生顺序实现高保真度和准确性。

LinkedIn 于 2011 年开发了 Kafka 作为内部使用的高吞吐量消息代理,随后又将 Kafka 开源并贡献给 Apache 软件基金会 (链接位于 ibm.com 外部)。 目前,Kafka 已经发展成为使用最广泛的流媒体平台,每天能够采集和处理数万亿条记录,并且不会随数据量的增加而出现任何明显的性能滞后情况。 Target、Microsoft、AirBnB 和 Netflix 等财富 500 强组织都依靠 Kafka 为其客户提供数据驱动型的实时体验。

以下视频提供了有关 Kafka 的更多信息 (9:10):


Kafka 的工作原理

Kafka 具有三个主要功能:

  1. 它能够让应用程序发布或预订数据或事件流。
  2. 它能够以可容错的持久方式准确地存储记录(即,按照它们发生的顺序)。
  3. 它能够实时处理记录(当它们发生时)。

开发人员可通过以下四个 API 来使用这些 Kafka 功能:

  • 生产者 API:这使应用程序能够将流发布到 Kafka 主题。 主题是一个已命名的日志,它按照记录的发生顺序来存储记录。 将记录写入主题后,就不能更改或删除该记录;相反,它会在主题中保留一段预先配置的时间(例如两天)或者直到存储空间用完。
  • 使用者 API:这使应用程序能够预订一个或多个主题,并采集和处理主题中存储的流。 它可以实时处理主题中的记录,也可以采集和处理过去的记录。
  • 流 API:它基于生产者和使用者 API,并增加了复杂的处理功能,使应用程序能够执行从前端到后端的持续流处理 - 具体来说,它会根据需要使用一个或多个主题中的记录来分析、聚合或转换这些记录,并将结果流发布到相同的主题或其他主题。 虽然生产者和使用者 API 可用于简单的流处理,但流 API 支持开发更复杂的数据和事件流应用程序。
  • 连接器 API:这让开发人员可以构建连接器,这些连接器是可复用的生产者或使用者,可简化和自动将数据源集成到 Kafka 集群中。 查看一些用于常用数据存储的现成连接器 (链接位于 ibm.com 之外)。

Kafka 性能

Kafka 是一个分布式平台 - 它将作为一个具有容错能力且高度可用的集群运行,并且可以跨越多个服务器甚至是多个数据中心。 Kafka 主题可进行分区和复制以实现扩展,在不影响性能的情况下为大量并发使用者提供服务。 因此,根据 Apache.org 的说法:“无论服务器上具有 50 KB 还是 50 TB 的持久存储容量,Kafka 都会执行相同的操作。”


Kafka 用例

Kafka 主要用于创建两种应用程序:

  • 实时流数据管道:这种应用程序专用于在企业系统之间大规模、实时、可靠地移动数以百万计的数据或事件记录,而不会出现在高速移动大量数据时通常会遇到的中断、数据重复和其他问题。
  • 实时流应用程序:这种应用程序由记录或事件流驱动,并且会生成自己的流。 如果您花时间上网,您每天都会遇到大量这样的应用程序,从不断更新本地商店产品数量的零售网站,到根据点击流分析显示个性化推荐或广告的网站。

Kafka 与 RabbitMQ

RabbitMQ 是一种非常流行的开源消息代理,它还是一种中间件,通过在应用程序、系统和服务之间转换消息协议来使它们能够相互通信。

因为 Kafka 最初是一种消息代理(理论上,它仍可用作消息代理)并且 RabbitMQ 支持发布/预订消息模型(及其他模型),所以 Kafka 和 RabbitMQ 经常可以互换使用。 但是,这些比较并没有实际意义,当在它们两者之间进行选择时,通常需要仔细考虑一些技术细节。 例如,Kafka 主题可以有多个订户,而每个 RabbitMQ 消息只能有一个订户;Kafka 主题是持久的,而 RabbitMQ 消息一旦使用就会被删除。

关键是:

  • Kafka 是一个 流处理平台,使应用程序能够以快速且持久的方式发布、使用和处理大量记录流;并且
  • RabbitMQ 是一种消息代理,让使用不同消息协议的应用程序能够相互传输消息。

经常与 Kafka 一起使用的 Apache 技术

Kafka 经常与其他几种 Apache 技术一起用于更大的流处理、事件驱动型架构 或大数据分析解决方案。

Apache Spark

Apache Spark 是一种用于大规模数据处理的分析引擎。 您可以使用 Spark 对 Apache Kafka 提供的流执行分析并生成实时流处理应用程序,例如点击流分析。

Apache NiFi

Apache NiFi 是一个数据流管理系统,具有可视化的拖放式界面。 由于 NiFi 可以作为 Kafka 生产者和 Kafka 使用者运行,因此它是管理 Kafka 无法解决的数据流挑战的理想工具。

Apache Flink

Apache Flink 是一个用于大规模地对事件流执行计算的引擎,始终具有高速和低延迟特点。 Flink 可以作为 Kafka 使用者来采集流,基于这些流实时执行操作,并将结果发布到 Kafka 或其他应用程序。

Apache Hadoop

Apache Hadoop 是一种分布式软件框架,可让您将大量数据存储在计算机集群中,以用于大数据分析、机器学习、数据挖掘以及用于处理结构化和非结构化数据的其他数据驱动型应用程序。 Kafka 通常用于创建到 Hadoop 集群的实时流数据管道。


Kafka 与 IBM Cloud®

随着对客户体验的 要求 越来越高 以及对业务和 IT 运营产生影响的应用程序越来越多,Kafka 仍将是应用程序现代化的一部分。   提高自动化程度 对于满足这些需求也很有帮助。 理想情况下,将从相当成功的小型 项目  开始 ,然后针对其他流程和组织的其他部门进行 扩展和优化。 

通过与 IBM 合作,您可以访问  AI 驱动的自动化功能,包括预先构建的工作流,以帮助您通过提高每个流程的智能性来加速创新。 

采取下一步行动:

立即开始使用 IBM Cloud 帐户


相关解决方案

应用现代化

信心十足地在任何云中安全地构建和管理应用程序并使之现代化


AI 支持的自动化

从业务工作流程到 IT 运营,我们为您提供了 AI 支持的自动化。


IBM Cloud Pak for Integration

将应用、服务和数据连接到市场上最全面的集成平台 IBM Cloud Pak for Integration。