Kafka - 流与主题

Ram*_*ash 6 apache-kafka apache-kafka-streams

Kafka 主题和流有什么区别?我以为两者都是一样的。该文档说明了create stream from a topic导致混淆的原因。

https://docs.ksqldb.io/en/latest/developer-guide/create-a-stream/

问题:

  1. Kafka 主题和流有什么区别?
  2. 当主题给我们事件流时,我们需要从主题创建流是什么?
  3. 我们可以直接从主题创建表吗?或者我们应该先创建流来创建表?

Jav*_*cal 5

  1. 主题是分区的集合,其中每个分区将包含一些消息。分区实际上是磁盘上的一个目录。
  1. Kafka 主题和流有什么区别?

A. 流是数据流,无论是来自单个主题还是主题集合。还有一种方法stream(Collection<String> topics)意味着流不仅限于单个主题。

  1. 当主题给我们事件流时,我们需要从主题创建流是什么?

A. Stream 是 Kafka Streams 中的基本实体。流经过一组处理器。术语用于 Kafka 流的上下文中。Kafka 流在内部创建一个消费主题的消费者。

同样,如前所述,流也可以是主题的集合。所以,有时如果你想消费不同的主题并处理它们,那么你需要为这些主题创建一个流。

  1. 我们可以直接从主题创建表吗?或者我们应该先创建流来创建表?

A. 是的,可以使用 Kafka 客户端 API 和 Kafka 流 API 直接从主题创建表。

如果您在应用程序中使用 Kafka 流,则可以使用StreamsBuilder#table()StreamsBuilder#globalTable()方法。

如果您使用 Kafka 客户端 API,那么您必须手动使用主题并在地图或其他一些数据结构中填充消息。

存在拓扑时使用 Kafka 流。对于简单的应用程序,我们只需要消费、处理和提交而没有多个进程阶段,那么 Kafka 客户端 API 应该足够好。任何可以通过 Kafka 流实现的功能也可以通过 Kafka 客户端实现。

Kafka 流基本上使复杂工作流的事情变得相对简单,但它也可以用于简单的工作流。