Kafka:分区数量多于代理数量

问题描述 投票:1回答:2

我对卡夫卡有以下问题:

  1. 如果我创建一个主题,并且指定的分区数不超过代理的数,那么单个代理将处理多个分区?

  2. 如果我创建一个主题并且指定的复制因子大于代理总数,那么该主题是否会创建?

  3. 单个经纪人可以处理不同主题的多个分区。

apache-kafka kafka-consumer-api spring-kafka apache-kafka-connect kafka-producer-api
2个回答
0
投票
  1. 是的,经纪人可以处理有关多个主题的多个分区。具有更多分区会产生开销,因此选择“正确的”数字需要了解很多因素。
  2. 我认为主题[[may创造了,但是您将很难写给它,取决于确切的设置,可能会有一些结果。
  3. 绝对!
  • 祝你好运:D

  • 0
    投票
      是的。如果您的分区多于可用代理,则每个代理中的某些代理将存储多个分区。例如,假设您有一个活着的经纪人和一个带有两个分区的主题。您的经纪人将如下所示:
  • +-------------------+ | Topic X | | Partition 0 | | | | | | Topic X | | Partition 1 | +-------------------+
      否,无法创建复制因子高于可用代理的主题。如果尝试执行此操作,则会收到错误消息。例如,假设您正在尝试使用--replication-factor 3和仅一个可用代理创建一个主题:
  • >> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic myTestTopic Error while executing topic command replication factor: 3 larger than available brokers: 1 kafka.admin.AdminOperationException: replication factor: 3 larger than available brokers: 1 at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70) at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:171) at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:93) at kafka.admin.TopicCommand$.main(TopicCommand.scala:55) at kafka.admin.TopicCommand.main(TopicCommand.scala)
      绝对是。假设您只有2个代理和3个主题,每个主题都有2个带replication-factor=1的分区。您的经纪人的示例概述如下所示:
  • +-------------------+ | Topic 1 | | Partition 0 | | | | | | Topic 3 | | Partition 1 | | | | | | Topic 2 | | Partition 1 | +-------------------+ +-------------------+ | Topic 1 | | Partition 1 | | | | | | Topic 3 | | Partition 0 | | | | | | Topic 2 | | Partition 0 | +-------------------+
  • © www.soinside.com 2019 - 2024. All rights reserved.