本文概述
到目前为止,我们了解了主题,分区,将数据发送到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定义任意流处理器,该处理器一次处理一个接收到的记录。此外,它将这些处理器与其状态存储相连接,以构成处理器拓扑。这种组成的拓扑表示定制的处理逻辑。
评论前必须登录!
注册