不同代理上相同主题的相同 Kafka 分区是否包含相同的消息(彼此重复)?

Does the same Kafka partitions of the same topic on different brokers contains the same messages ( duplicate each other)?

Broker 1:

+-------------------+
|      Topic 1      |
|    Partition 0    |
|                   |
|                   |
|     Topic 2       |
|   Partition 1     |
+-------------------+
Broker 2:

+-------------------+
|      Topic 1      |
|    Partition 2    |
|                   |
|                   |
|     Topic 2       |
|   Partition 0     |
+-------------------+
Broker 3:

+-------------------+
|      Topic 1      |
|    Partition 1    |
|                   |
|      Topic 1      |
|    Partition 2    |
|                   |
+-------------------+

Broker 1 Topic 1 Partition 1 也包含与 Broker 3 Topic 1 Partition 1

相同的内容

Broker 3 Topic 1 Partition 1 包含与 Broker 3 Topic 1 Partition 2

不同的内容

?

必须指定复制因子才能创建主题。它定义了 Kafka 集群中主题的副本数。

主题中的每个分区都有一个领导者,如果复制因子大于一,那么它就有副本。当消息首先发送到分区时,它会到达领导者(作为分区领导者的经纪人)。然后replicas向leader发送fetch request(周期性的发送fetch requests)来复制消息。与领导者具有相同消息的副本称为同步副本。在领导代理失败的情况下,这些也是分区领导的候选者。 (故障转移)

如果您设置 ack=all 生产者设置,那么当所有同步副本都收到记录时,生产者会得到确认。并且通过设置min.insync.replicas大于1,可以保证所有被确认的记录在kafka集群中至少有一个副本。

因此,如果两个代理是主题分区的同步副本,则它们具有相同的消息,否则它们没有。

简短的回答是肯定的。 同一分区在所有代理上都是相同的。不同的分区包含不同的消息。

但是,Kafka 是一个移动的系统,因此并非所有内容都始终保持一致。 这取决于生产者的 'ack' 价值、网络吞吐量和分区以及许多其他因素。