Aru*_*run 1 apache-kafka kafka-consumer-api kafka-producer-api
如果我创建一个新集群,其中包含 1 个代理、1 个主题、1 个分区,复制因子为 3,那么会发生什么?它会在该单个代理下创建 3 个副本(分区)?如果是,如何选举领导人?
如果您尝试创建复制因子大于集群中可用代理数量的主题,您将收到如下异常。
> ./kip-kafka-topics --create --topic multiple_replicas_on_single_broker --replication-factor 3 --partitions 10
Error while executing topic command : org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
[2020-09-15 17:45:42,649] ERROR java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
at org.apache.kafka.common.internals.KafkaFutureImpl.access$000(KafkaFutureImpl.java:32)
at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89)
at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
at kafka.admin.TopicCommand$AdminClientTopicService.createTopic(TopicCommand.scala:175)
at kafka.admin.TopicCommand$TopicService.createTopic(TopicCommand.scala:134)
at kafka.admin.TopicCommand$TopicService.createTopic$(TopicCommand.scala:129)
at kafka.admin.TopicCommand$AdminClientTopicService.createTopic(TopicCommand.scala:157)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:60)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
Run Code Online (Sandbox Code Playgroud)
在 Kafka 文档的“复制”部分中,解释了复制是在服务器故障时完成的:
Kafka 在可配置数量的服务器上复制每个主题分区的日志(您可以逐个主题设置此复制因子)。当集群中的服务器发生故障时,这允许自动故障转移到这些副本,因此消息在出现故障时仍然可用。
因此,如果您在一台服务器上放置多个副本,那么当该服务器出现故障时,它将无法恢复。
查看您的问题“它在该单个代理下创建 3 个副本(分区)?” 我还建议您清楚地了解副本和分区之间的区别。这篇文章可能对你有帮助。
| 归档时间: |
|
| 查看次数: |
2121 次 |
| 最近记录: |