Apache kafka 《卡夫卡》中的追随者复制品失去同步

Apache kafka 《卡夫卡》中的追随者复制品失去同步,apache-kafka,Apache Kafka,我有一个主题是partitions=1和replication factor=5。 我开始发布关于这个主题的消息。几秒钟后,令我惊讶的是,我发现除了领袖复制品之外,所有的追随者都不同步 开始制作前: 主题:日志压缩主题4-15分区:0前导:5个副本:5,1,2,3,4 Isr:5,1,2,3,4 开始制作后: 主题:日志压缩主题4-15分区:0前导:5个副本:5,1,2,3,4 Isr:5 这里,min.insync.replicas=5和剩余的主题配置具有默认值。 另外,我的制作人正在使用ac

我有一个主题是
partitions=1
replication factor=5
。 我开始发布关于这个主题的消息。几秒钟后,令我惊讶的是,我发现除了领袖复制品之外,所有的追随者都不同步

开始制作前:

主题:日志压缩主题4-15分区:0前导:5个副本:5,1,2,3,4 Isr:5,1,2,3,4

开始制作后:

主题:日志压缩主题4-15分区:0前导:5个副本:5,1,2,3,4 Isr:5

这里,
min.insync.replicas=5
和剩余的主题配置具有默认值。 另外,我的制作人正在使用
acks=1

问题

  • 为什么我能够进一步发布消息,即使
    mininsync.replicas=5

  • 我能让所有的追随者一直保持同步吗

  • 这是预期的行为吗?如果是,我是否会在leader崩溃时释放一些消息


  • 为什么我能够进一步发布消息,即使min.insync.replicas=5

    只有在设置
    acks=“-1”或acks=“all”
    时,才会考虑此配置

    卡夫卡官方文件说:

    当生产者将ACK设置为“全部”(或“-1”)时,min.insync.replications 指定必须确认写入的最小副本数 使写入被认为是成功的。如果此最小值不能 则制作人将提出一个异常(或 noteNoughReplicates或noteNoughReplicateSafterappend)

    我可以让所有追随者始终保持同步吗?

    如上所述,您可以通过使用
    acks=“-1”或acks=“all”
    然后提及
    min.insync.replicas=5
    来实现它

    这是预期的行为吗?如果是,我是否会在leader崩溃时释放一些消息?

    是的,如果leader失败,您将丢失消息
    acks=1
    意味着leader将把记录写入其本地日志,但将在不等待所有追随者完全确认的情况下做出响应。在这种情况下,如果领导者在确认记录后立即失败,但在追随者复制记录之前,记录将丢失

    评论中的问题:


    但我观察到(acks=all,min.insync.replicas=1)和(acks=1)之间的吞吐量差异。在acks=-1设置中,即使min.insync.replicas=1,leader仍在等待所有同步副本确认,从而降低吞吐量

    发件人:

    此外,“同步副本中的最小值”设置还指定了复制副本的最小数量 需要同步以使分区保持可用的副本 写作。当生产者指定ack(-1/all config)时,它将 此时仍在等待来自所有同步副本的确认 (独立于最小同步副本的设置)

    还有:

    刚刚与Jun(ApacheKafka的合著者)再次确认了我的答案。它是 一个常见的误解是min.insync.replicas允许在 只有一小部分ISR获得发布的消息。然而 “最小”部分适用于其他部分。最小值为 定义ISR列表可以达到多小且仍允许写入。 当列表中的所有ISR获得 否则,领导人选举将更加复杂 因为并不是所有的副本都是同步的


    文档说明:

    “min.insync.replicas指定必须确认写入的副本的最小数量,才能将写入视为成功”。如果我们设置
    acks=all
    min.insync.replicas=1
    ,会怎么样?这与设置
    acks=1
    相同吗?是。这是相同的,但我观察到(
    acks=all
    min.insync.replicas=1
    )和(acks=1)之间的吞吐量差异。在
    acks=-1
    设置中,即使
    min.insync.replicas=1
    ,leader仍在等待所有同步副本确认,从而降低吞吐量。这很奇怪。让我看看是否能找到有用的东西。@Markiv我已经在回答中澄清了您的疑问。