我想我对Kafka经纪人集群是如何工作的感到困惑和不清楚。
当前结构:
我从这里下载了kafka broker集群和3台机器
其中一个主题是这样的
ubuntu@kafka1:~/.kafka$ bin/kafka-topics.sh --describe --zookeeper localhost:11111 --topic multi_partitions
Topic:multi_partitions PartitionCount:10 ReplicationFactor:3 Configs:retention.ms=-1,retention.bytes=-1
Topic: multi_partitions Partition: 0 Leader: 1 Replicas: 2,0,1 Isr: 1,0
Topic: multi_partitions Partition: 1 Leader: 0 Replicas: 0,1,2 Isr: 1,0
Topic: multi_partitions Partition: 2 Leader: 1 Replicas: 1,2,0 Isr: 1,0
Topic: multi_partitions Partition: 3 Leader: 1 Replicas: 2,1,0 Isr: 1,0
Topic: multi_partitions Partition: 4 Leader: 0 Replicas: 0,2,1 Isr: 1,0
Topic: multi_partitions Partition: 5 Leader: 1 Replicas: 1,0,2 Isr: 1,0
Topic: multi_partitions Partition: 6 Leader: 1 Replicas: 2,0,1 Isr: 1,0
Topic: multi_partitions Partition: 7 Leader: 0 Replicas: 0,1,2 Isr: 1,0
Topic: multi_partitions Partition: 8 Leader: 1 Replicas: 1,2,0 Isr: 1,0
Topic: multi_partitions Partition: 9 Leader: 1 Replicas: 2,1,0 Isr: 1,0
如您所见,存在三个复制副本,但replica2已崩溃,因此不再工作。
问题
如果我能恢复replica2,它会在创建的数据崩溃时同步吗?
如果无法恢复replica2,如何向本主题添加新代理并使其复制副本群集中的所有数据?
提前谢谢!
1条答案
按热度按时间izj3ouym1#
如果我能恢复replica2,它会在创建的数据崩溃时同步吗?
正如您在评论中提到的,在您的集群中,
replication factor = 2
以及acks = 1
. 假设崩溃的节点是node2。有两种情况:
场景1:没有主题划分,你的节点2被选为领导者。一切就绪,数据不会丢失。一旦该节点返回,主题分区负责人就会将丢失的数据推送到节点2。
场景2:假设有一个主题分区选择崩溃的节点作为它的领导者。如果是这样,集群将选择另一个节点中的一个作为主题分区的领导者。当node2返回并且其他节点正常工作时,新的领导者将数据推送到node2以维护配置
replication factor = 3
.如果无法恢复replica2,如何向本主题添加新代理并使其复制副本群集中的所有数据?
一旦崩溃的节点加入集群,集群就能够恢复副本。