📜  Kafka流处理

📅  最后修改于: 2021-01-05 02:59:16             🧑  作者: Mango

Kafka流处理

到目前为止,我们了解了主题,分区,将数据发送到Kafka以及从Kafka消费数据。这可能是较低的抽象级别。因此,需要更高级别的抽象。因此,这引入了Kafka流的概念。

kafka 流

通常,流定义了随时间提供的数据元素的流。在Apache Kafka中,流是事实或记录(键值对)的连续实时流。 Kafka Streams是一个轻量级的内置客户端库,用于构建不同的应用程序和微服务。流的输入和输出数据都存储在Kafka集群中。 Kafka Streams集成了在客户端编写和部署标准Java和Scala应用程序的简便性。

为什么选择Kafka Streams?

以下属性描述了Kafka Streams的使用:

  • Kafka Streams具有高度可伸缩性和弹性。
  • 可以部署到容器,云,裸机等
  • 它适用于任何大小的用例,即小,中或大。
  • 具有容错能力。如果发生任何故障,则可以由Kafka Streams处理。
  • 它允许编写标准的Java和Scala应用程序。
  • 对于流传输,它不需要任何单独的处理群集。
  • Mac,Linux和Windows操作系统均支持Kafka Streams。
  • 除了Kafka本身之外,它没有任何外部依赖性。

流处理

与数据流编程类似,流处理允许很少的应用程序更简单,更轻松地利用有限形式的并行处理。因此,流处理使应用程序的并行执行变得简单。业务各方使用称为“流处理”软件/应用程序的软件来实现核心功能。

流处理拓扑

Apache Kafka提供流作为最重要的抽象。流是可偿还的,有序的以及不可变记录的容错序列。

流处理应用程序是使用Kafka Streams库的程序。它需要一个或多个处理器拓扑来定义其计算逻辑。处理器拓扑以图形方式表示,其中“流处理器”是其节点,每个节点通过“流”作为其边缘进行连接。

流处理器表示将数据转换为流的步骤。它一次从拓扑中存在的上游处理器接收一条输入记录,应用其操作,最后向其下游处理器产生一个或多个输出记录。

拓扑中存在以下两个主要处理器:

  • 源处理器:没有任何上游处理器的流处理器的类型。该处理器使用来自一个或多个主题的数据,并为其拓扑生成输入流。
  • 接收器处理器:这是没有下游处理器的流处理器类型。该处理器的工作是将收到的数据从其上游处理器发送到指定主题。

此外,Kafka Streams提供了两种表示流处理拓扑的方法:

  • Kafka Streams DSL:它建立在Stream Processors API之上。此处,DSL扩展为“特定于域的语言”。推荐初学者使用。
  • 处理器API:开发人员通常使用此API来定义任意流处理器,该处理器一次处理一个接收到的记录。此外,它将这些处理器与其状态存储相连接,以构成处理器拓扑。这种组成的拓扑表示定制的处理逻辑。