新的 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 的主题 运行。
假设我们有一个三节点的 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 的主题 运行。