问题描述
要了解什么是 kafka-streams
,我应该知道什么是 stream-processing
。当我开始在网上阅读它们时,我无法掌握全局,因为它是一个永无止境的新概念链接树。
谁能用一个简单的现实世界的例子来解释什么是stream-processing
?
以及如何将其与 kafka-streams
与生产者消费者架构相关联?
谢谢。
解决方法
流处理
流处理基于无界事件流的基本概念(与我们通常在关系数据库中发现的静态有界数据集相反)。
利用无限的事件流,我们经常想用它做点什么。无限的事件流可以是来自传感器的温度读数、来自路由器的网络数据、来自电子商务系统的订单等。
假设我们想要获取这个无限的事件流,可能是来自工厂的关于正在制造的“小部件”的制造事件。
我们希望根据“小部件”的特征过滤该流,如果它是 await
,则将其路由到另一个流。也许我们将用于报告的流,或驱动另一个只需要响应 red
事件的应用程序:
简而言之,这就是流处理。流处理用于执行以下操作:
- 过滤流
- 聚合(例如,一段时间内某个字段的总和,或给定窗口中的事件计数)
- 丰富(在事件流中获取值,或加入另一个流)
正如你所提到的,关于这个的文章有很多;不想给你另一个链接,我会推荐this one。
卡夫卡流
Kafka Streams 是一个流处理库,作为 Apache Kafka 的一部分提供。您可以在 Java 应用程序中使用它来进行流处理。
在上面例子的上下文中,它看起来像这样:
Kafka Streams 建立在 Kafka 生产者/消费者 API 之上,并抽象掉了一些低级复杂性。您可以在 the documentation 中了解更多信息。