【问题标题】:How is data being added into partitions in Apache Kafka?如何将数据添加到 Apache Kafka 的分区中?
【发布时间】:2019-12-25 16:38:02
【问题描述】:

嗨,我正在研究卡夫卡。我正在尝试了解 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 或一个字符位于一个偏移量?我知道这是非常基本的,但没有任何文档谈到这个!

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

【问题讨论】:

    标签: apache-kafka kafka-consumer-api kafka-topic


    【解决方案1】:

    Partitioning

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

    Consumers

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

    【讨论】:

    • 感谢您的回答。我又问了一个问题,如果我添加一些文本,那么整行文本将存储在偏移量 O 中,还是每个字符将保存在一个偏移量中?
    • 消息会整体存储到一个分区中,不会拆分成字符。
    • 所以我们有从 0,1,3,4 等开始的偏移量。我的制作人正在向世界发送数据。所以你好世界会在偏移量0对吗?
    • 假设这是第一条消息,那么是的。第一条消息例如hello world 将在其中一个分区中分配偏移量0。请注意,偏移量是在分区级别维护的。这意味着如果第二条消息到达主题并需要添加到另一个分区,那么它也将被分配偏移量0(但这次在不同的分区中)。
    • 好的,谢谢。在一个偏移量中,我们可以存储多少数据?有大小限制吗?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2019-03-31
      • 2019-01-24
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多