Apache Kafka (Kafka) 是一个开源的分布式流媒体平台,它支持开发事件驱动型实时应用。 这意味着什么?
目前,数十亿数据源都在不断生成数据记录流,包括事件流。 事件是一种数字记录,用于记录所发生的操作及其发生时间。 通常,事件是一个操作,用于驱动流程中的另一个操作。 客户下订单、选择航班座位或提交注册表,这些都是事件的例子。 事件不一定涉及到人员。例如,联网的恒温器在给定时间报告温度也是一个事件。
这些流为需要实时响应数据或事件的应用创造了机会。 流媒体平台使开发人员能够构建应用,以极快的速度持续使用和处理这些流,并基于正确的发生顺序实现高保真度和准确性。
LinkedIn 于 2011 年开发了 Kafka 作为内部使用的高吞吐量消息代理,随后又将 Kafka 开源并免费提供给 Apache 软件基金会(链接位于 ibm.com 外部)。 目前,Kafka 已经发展成为使用最广泛的流媒体平台,每天能够采集和处理数万亿条记录,并且不会随数据量的增加而出现任何明显的性能滞后情况。 Target、Microsoft、AirBnB 和 Netflix 等财富 500 强企业都依靠 Kafka 为其客户提供数据驱动型实时体验。
以下视频提供了有关 Kafka 的更多信息 (9:10):
Kafka 主要具有三大功能:
开发人员可以通过四个 API 来利用这些 Kafka 功能:
Kafka 是一个分布式平台,它以一个具有容错能力且高度可用的集群形式运行,可以跨越多个服务器,甚至是多个数据中心。 Kafka 主题可进行分区和复制以实现扩展,在不影响性能的情况下为大量并发使用者提供服务。 因此,根据 Apache.org 的说法:“无论服务器上具有 50 KB 还是 50 TB 的持久存储容量,Kafka 都会执行相同的操作。”
Kafka 主要用于创建两种应用:
RabbitMQ 是一种非常流行的开源消息代理,它还是一种中间件,通过在应用、系统和服务之间转换消息传递协议,使它们能够相互通信。
因为 Kafka 最初是一种消息代理(理论上,它仍可用作消息代理),且 RabbitMQ 支持发布/预订消息传递模型(及其他模型),所以 Kafka 和 RabbitMQ 经常会被作为彼此的替代项而拿来相互比较。 但是,这些比较并没有实际意义,当在它们两者之间进行选择时,通常需要仔细考虑一些技术细节。 例如,Kafka 主题可以有多个订户,而每个 RabbitMQ 消息只能有一个订户;Kafka 主题是持久的,而 RabbitMQ 消息一旦使用就会被删除。
关键是:
Kafka 经常与其他几种 Apache 技术一起用于更大的流处理、事件驱动型架构或大数据分析解决方案。
Apache Spark 是一种用于大规模数据处理的分析引擎。 您可以使用 Spark 对 Apache Kafka 提供的流执行分析,并生成实时流处理应用,例如前面提到的点击流分析。
Apache NiFi 是一个数据流管理系统,具有可视化的拖放式界面。 由于 NiFi 可以作为 Kafka 生产者和 Kafka 使用者运行,因此它是管理 Kafka 无法解决的数据流挑战的理想工具。
Apache Flink 是一个用于大规模对事件流执行计算的引擎,始终具有高速度和低延迟的特点。 Flink 可以作为 Kafka 使用者来采集流,基于这些流实时执行操作,并将结果发布到 Kafka 或其他应用。
Apache Hadoop 是一种分布式软件框架,支持将大量数据存储在计算机集群中,以用于大数据分析、机器学习、数据挖掘,以及其他处理结构化数据和非结构化数据的数据驱动型应用。 Kafka 通常用于创建通往 Hadoop 集群的实时流数据管道。
信心十足地在任何云中安全地构建和管理应用并使之现代化
从业务工作流程到 IT 运营,我们为您提供了 AI 支持的自动化。
将应用、服务和数据连接到市场上最全面的集成平台 IBM Cloud Pak for Integration。