外行来说什么是流处理和 Kafka 流?

red*_*ari 2 stream-processing apache-kafka apache-kafka-streams

要了解什么是kafka-streams我应该知道什么是stream-processing。当我开始在网上阅读它们时,我无法掌握整体情况,因为它是一个永无止境的新概念链接树。
谁能stream-processing用一个简单的现实世界的例子来解释什么?
以及如何将其kafka-streams与生产者消费者架构联系起来?

谢谢你。

Rob*_*att 6

流处理

流处理基于无界事件流的基本概念(与我们通常在关系数据库中发现的静态有界数据集相反)。

考虑到无限的事件流,我们经常想用它做点什么。无限的事件流可以是来自传感器的温度读数、来自路由器的网络数据、来自电子商务系统的订单等。

在此处输入图片说明

让我们想象一下,我们想要获取这个无限的事件流,也许是来自工厂的关于正在制造的“小部件”的制造事件。

我们想根据“小部件”的特征过滤该流,以及是否将其red路由到另一个流。也许我们将用于报告的流,或驱动另一个只需要响应red widgets事件的应用程序:

在此处输入图片说明

简而言之,这就是流处理。流处理用于执行以下操作:

  • 过滤流
  • 聚合(例如,一段时间内某个字段的总和,或给定窗口中的事件计数)
  • 丰富(在事件流中派生值,或加入另一个流)

正如你所提到的,有很多关于这个的文章;不想给你另一个链接,我会推荐这个

卡夫卡流

Kafka Streams 是一个流处理库,作为 Apache Kafka 的一部分提供。您可以在 Java 应用程序中使用它来进行流处理。

在上述示例的上下文中,它看起来像这样:

在此处输入图片说明

Kafka Streams 建立在 Kafka 生产者/消费者 API 之上,并抽象掉了一些低级复杂性。您可以在文档中了解更多信息。