新的 kafka 节点是否能够处理现有主题?

Will new kafka node able to work with a existing topic?

假设我们有一个三节点的 kafka 集群,并且在创建主题时只有两个节点处于活动状态。之后,如果我们将第三个节点带回来,它是否能够赶上这个新创建主题的所有数据。我尝试在第三个节点出现后关闭另外两个节点,当我描述第三个节点没有充当分区的领导者时。

Topic: test PartitionCount: 6   ReplicationFactor: 2    Configs: segment.bytes=1073741824
Topic: test Partition: 0    Leader: none    Replicas: 0,1   Isr: 0
Topic: test Partition: 1    Leader: none    Replicas: 1,0   Isr: 0
Topic: test Partition: 2    Leader: none    Replicas: 0,1   Isr: 0
Topic: test Partition: 3    Leader: none    Replicas: 1,0   Isr: 0
Topic: test Partition: 4    Leader: none    Replicas: 0,1   Isr: 0
Topic: test Partition: 5    Leader: none    Replicas: 1,0   Isr: 0

显示的是 none?

您创建的主题有ReplicationFactor: 2。也就是说只有2家broker有这个topic的数据。

因为您有 2 个代理(0 和 1)运行,所以它们被选为副本。您可以看到所有分区的所有副本都在 0 和 1 上。没有其他代理有此主题的数据。

当您启动第三个代理时,它不会托管此主题的副本。所以它不会成为领导者。

如果你想让第三个broker也是一个副本,你可以将复制因子扩展到3,例如下面https://kafka.apache.org/documentation/#basic_ops_increase_replication_factor

请注意,如果您只有 2 个代理,您将无法创建复制因子设置为 3 的主题 运行。