bigdata—如果Kafka的一个复制副本出现故障,它会创建一个新的跟随者吗

ymzxtsji  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(335)

下面是我的主题xx\u json\u主题的分区信息。这是一个有三个节点的kafka集群。
所有节点启动:

Topic: xx_json_topic    PartitionCount:4    ReplicationFactor:2    Configs:
Topic: xx_json_topic    Partition: 0    Leader: 1   Replicas: 3,1   Isr: 3,1
Topic: xx_json_topic    Partition: 1    Leader: 2   Replicas: 1,2   Isr: 2,1
Topic: xx_json_topic    Partition: 2    Leader: 2   Replicas: 2,3   Isr: 2,3
Topic: xx_json_topic    Partition: 3    Leader: 3   Replicas: 3,2   Isr: 2,3

在这一点上。。如果我关闭节点“node-1”。。它如下所示:

Topic: xx_json_topic    PartitionCount:4    ReplicationFactor:2    Configs:
Topic: xx_json_topic    Partition: 0    Leader: 3   Replicas: 3,1   Isr: 3
Topic: xx_json_topic    Partition: 1    Leader: 2   Replicas: 1,2   Isr: 2
Topic: xx_json_topic    Partition: 2    Leader: 2   Replicas: 2,3   Isr: 2,3
Topic: xx_json_topic    Partition: 3    Leader: 3   Replicas: 3,2   Isr: 2,3

我的问题是..如果kafka知道node-1坏了,它需要保持复制因子,它会不会使node-3成为分区1的副本,而node-2不是分区0的副本,然后使node-3和node-2成为其isr的一部分?
或者你认为Kafka没有承诺。。。如果复制因子是2,并不意味着数据在任何时候都至少在2个节点上可用(--cassandra中的一致性级别)。

y3bcpkx1

y3bcpkx11#

你是对的,这不是Kafka处理复制因子的方式。当为主题指定复制因子2时,该主题的分区将在2个代理上创建(集群控制器尝试将它们分布在集群上)。在那个时候,一个成为领导者,一个成为追随者。这并不能保证分区总是有两个副本,它只指定创建两个副本,如果所有副本都不存在,代理将通知您(通过underreplicated partitions count mbean)。
kafka不会对集群执行任何自动修复,除非一个分区有多个副本,并且leader副本变得不可用,其中一个follower将接管leader。然而,当那个领导人回来后,他将不会恢复领导地位(他将成为一个追随者)。同样,集群也不会创建新的副本。这可能是一个资源密集型操作,因为需要通过网络将大量数据移动到新的副本。
虽然有执行自动引线重新平衡的选项,但没有执行自动副本创建的等效选项。

相关问题