1

嗨,我正在研究卡夫卡。我正在尝试了解 kafka 的基础知识。我现在正在学习卡夫卡。我使用 docker 安装了 kafka。目前我有一个经纪人。我使用以下命令创建了具有 3 个分区的主题。

kafka-topics --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 3 --topic topic2

之后,我创建了如下的生产者。

 kafka-console-producer --broker-list localhost:9092 --topic topic2
 >This is my producer

我在这里完全糊涂了。当我添加上述数据时,我的数据位于三个分区还是一个分区?因为上面我创建了三个分区。在分区中,我们有从零开始的偏移量。所以在上面的例子中,当我输入 This is my producer 整个文本将位于偏移量 0 或一个字符位于一个偏移量?我知道这是非常基本的,但没有任何文档谈到这个!

接下来进入消费者部分,如果我想消费一些数据,如果数据位于不同的分区,数据将如何来自不同的分区或数据整合将如何发生?有人可以帮助我了解基础知识吗?任何帮助将不胜感激。谢谢

4

2 回答 2

2

分区

每条消息将以循环方式分配给不同的分区。但是,具有相同 key 的消息将被插入到同一个分区中。

消费者

如果你有 N 个分区,那么在同一个消费者组中最多可以有 N 个消费者,每个消费者都从一个分区中读取。当您的消费者少于分区时,一些消费者将从多个分区中读取。此外,如果您的消费者多于分区,那么一些消费者将处于非活动状态并且根本不会收到任何消息。

于 2019-11-15T09:10:21.477 回答
1

每条消息将被发送到 1 个分区。

但是在创建多个分区时请注意消息的顺序。分区内消息的顺序是有保证的。

因此,如果您编写消费者并从头开始阅读,那么订单将不是 Total

于 2019-12-25T08:38:02.963 回答