我对卡夫卡有以下问题:
如果我创建一个主题,并且指定的分区数不超过代理的数,那么单个代理将处理多个分区?
如果我创建一个主题并且指定的复制因子大于代理总数,那么该主题是否会创建?
单个经纪人可以处理不同主题的多个分区。
+-------------------+
| 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 |
+-------------------+