什么是 Apache Kafka?

Apache Kafka 是一个热门的事件流处理平台,用于收集、处理和存储流式事件数据或没有明确开始或结束的数据。Kafka 让新一代分布式应用得以实现,此类应用能够将规模扩大到每分钟处理数十亿个流式事件。

在 Apache Kafka 和 Google Cloud Pub/Sub 等事件流处理系统面世之前,数据处理通常是通过周期性批量作业进行的,即先存储原始数据,然后以任意时间间隔进行处理。例如,电信公司可能会在一天、一周或一个月结束时,才会对数百万条通话记录进行分析,计算出累计费用。

批处理的局限性之一在于它不是实时的。越来越多的组织希望能够实时分析数据,以便在重要的事情发生时及时做出业务决策并采取行动。例如,上面提到的电信公司可能会受益于让客户实时了解收费情况的服务,因为可借此提升整体客户体验。

这就是事件流的意义所在。事件流是连续不断地处理无限数据流(自其创建之时起)的过程,事件流可以捕获数据的时间价值,有助于创建基于推送的应用,以便在重要事情发生时及时采取行动。事件流的示例包括持续分析由面向客户的 Web 应用产生的日志文件、在用户浏览电子商务网站时监控和响应客户行为、通过分析社交网络产生的点击流数据的变化来持续把握客户情绪,或者收集和响应物联网 (IoT) 设备产生的遥测数据。

了解 Confluent Cloud 在 Google Cloud 上的全代管式集成产品 Apache Kafka。

Apache Kafka 概览

Kafka 采用流式数据,能够准确记录何时发生了什么。此记录称为不可变的提交日志。它不可改变,因为它可以被附加,但不能以其他方式改变。您可以订阅日志(访问数据),也可以从任意数量的流式实时应用以及其他系统向其发布数据(添加更多数据)。

例如,您可以使用 Kafka 获取网站上的所有交易数据流,以便为实时跟踪产品销售情况的应用提供数据,将其与库存产品数量进行比较,从而实现实时库存补充。

Kafka 有哪些优势?

Kafka 采用开源形式

这意味着它的源代码免费提供,任何人都可以出于任何目的获取、修改和发布自己的版本。Kafka 没有许可费或其他限制,它由一个全球性开发者社区群策群力对其进行支持和改进。因此,Kafka 提供了丰富的连接器、插件、监控工具和配置工具,推动着生态系统不断发展。

规模和速度

Kafka 不仅可以随着数据量的不断增加而扩容,而且可以在整个企业中实时提供这些数据。拥有分布式平台的属性也是 Kafka 的一大优势。这意味着处理过程被分配给多台机器,包括物理机器和虚拟机。这有两个优势:在处理某些工作时,它可以横向扩容,即在需要更多处理能力或存储空间时增加机器数量,同时它也非常可靠,因为即使个别机器发生故障,整个平台仍然能平稳运行。然而,Kafka 的这一特性可能很难进行大规模管理。

Kafka 作为代管式服务

尽管 Kafka 具有许多优点,但要部署这项技术仍然很有挑战性。本地 Kafka 集群在生产过程中很难建立、扩容和管理。在搭建本地基础架构以运行 Kafka 时,您需要预配机器并配置 Kafka。您还必须设计分布式机器集群以确保可用性、确保数据的存储和安全、设置监控,并谨慎地为数据扩容以支持负载变化。然后,您必须维护基础设施,在机器出现故障时更换机器,并进行例行修补和升级。

另一种方法是将 Kafka 作为云中的代管式服务。第三方供应商负责预配、构建和维护 Kafka 基础架构。您负责构建及运行应用。这使您无需具备特定的 Kafka 基础架构管理专业知识就能轻松部署 Kafka,减少在管理基础架构上耗费的时间,把更多时间投入到创造业务价值上。

Kafka 的工作原理是什么?

Kafka 通过以下五个核心功能实现流式事件处理:

发布

数据源可以将数据事件流发布到或放入一个或多个 Kafka 主题,或类似的数据事件分组中。例如,您可以从物联网设备(例如网络路由器)获取数据流,然后将其发布到进行预测性维护的应用中,以计算该路由器何时可能发生故障。

使用

应用可以订阅一个或多个 Kafka 主题,从中获取数据,并处理生成的数据流。例如,一个应用可以从多个社交媒体流中获取数据,并对其进行分析,以确定关于一个品牌的在线对话的基调。

处理

Kafka Streams API 可以作为流处理器,使用来自一个或多个主题的传入数据流,并生成向一个或多个主题发布的传出数据流。

连接

您还可以构建可重复使用的生产者或使用者连接,以关联 Kafka 主题与现有应用。目前已经有数百个可用的连接器,包括连接 Dataproc、BigQuery 等关键服务的连接器。

存储

Apache Kafka 可提供持久的存储服务。Kafka 可以作为“真实来源”,将数据分布在多个节点上,以实现单个数据中心内或多个可用区的高可用性部署。