了解 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 具有三个主要功能:
开发人员可通过以下四个 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 运营产生影响的应用程序越来越多,Kafka 仍将是应用程序现代化的一部分。 提高自动化程度 对于满足这些需求也很有帮助。 理想情况下,将从相当成功的小型 项目 开始 ,然后针对其他流程和组织的其他部门进行 扩展和优化。
通过与 IBM 合作,您可以访问 AI 驱动的自动化功能,包括预先构建的工作流,以帮助您通过提高每个流程的智能性来加速创新。
采取下一步行动:
立即开始使用 IBM Cloud 帐户。