Kafka - 流与主题

Kafka - Stream vs Topic

Kafka主题和流有什么区别?我以为两者是一样的。 这个文档说 create stream from a topic 造成了混乱。

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

问题:

  1. Kafka主题和流有什么区别?
  2. 当主题为我们提供了事件流时,我们需要从主题创建流吗?
  3. 我们可以直接从主题创建 table 吗?或者我们应该先创建流来创建 table?
  1. 主题是分区的集合,其中每个分区将包含一些消息。一个分区其实就是磁盘上的一个目录。
  1. What is the difference between Kafka topic and stream?

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

  1. When topic gives us the stream of events, what is the need for us to create stream from a topic?

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

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

  1. Can we create table from topic directly? Or should we create stream first to create table?

一个。是的,可以直接使用 Kafka 客户端 API 和 Kafka 流 API.

从主题创建 table

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

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

当有 topologies 时使用 Kafka 流。对于简单的应用程序,我们只是消费、处理和提交而没有多个 process 阶段,那么 Kafka 客户端 API 应该足够好。任何可以通过 Kafka 流实现的东西也可以通过 Kafka 客户端实现。

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