【问题标题】:Does the same Kafka partitions of the same topic on different brokers contains the same messages ( duplicate each other)?不同代理上相同主题的相同 Kafka 分区是否包含相同的消息(相互重复)?
【发布时间】:2020-05-05 04:37:10
【问题描述】:
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 不同的内容

?

【问题讨论】:

    标签: apache-kafka kafka-topic kafka-partition


    【解决方案1】:

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

    主题中的每个分区都有一个领导者,如果复制因子大于 1,则它具有副本。当一条消息首先发送到一个分区时,它首先到达领导者(broker,它是分区领导者)。然后副本向领导者发送获取请求(定期发送获取请求)以复制消息。与领导者具有相同消息的副本称为同步副本。在领导者代理失败的情况下,这些也是分区领导者的候选者。 (故障转移)

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 2020-01-12
        • 2017-03-02
        • 2019-05-31
        • 2015-09-28
        相关资源
        最近更新 更多