gpt4 book ai didi

apache-kafka - Kafka 机架 ID 和最小同步副本数

转载 作者:行者123 更新时间:2023-12-02 20:42:13 25 4
gpt4 key购买 nike

Kafka引入了rack-id,以便在整个机架发生故障时提供冗余功能。有一个最小同步副本设置,用于指定生产者收到确认之前需要同步的最小副本数量(-1/所有配置)。有一个不干净的领导者选举设置,用于指定在不同步时是否可以选举领导者。

因此,考虑到以下情况:

  • 两个机架。机架 1、2。
  • 复制计数为 4。
  • 最小同步副本 = 2
  • 生产者 ack=-1(全部)。
  • 不干净的领导者选举= false

旨在实现至少一次消息传递、节点冗余并容忍机架故障。

是否有可能在某个时刻,两个同步副本都来自机架 1,因此生产者收到一个确认,并且此时机架 1 崩溃(在来自机架 2 的任何副本同步之前)?这意味着机架 2 将只包含不干净的副本,并且没有生产者能够将消息添加到基本上停止的分区。副本将是不干净的,因此在任何情况下都无法选出新的领导者。

我的分析是否正确,或者是否有什么东西可以确保形成最小同步副本的副本必须来自不同的机架?
由于同一机架上的副本具有较低的延迟,因此上述情况似乎很可能发生。

场景如下图所示:

enter image description here

最佳答案

为了在技术上正确,您应该修正一些问题的措辞。不同步的副本不可能“可用”。此外,最小同步副本设置还指定分区需要保持同步以保持可写入的最小副本数。当生产者指定 ack(-1/所有配置)时,它仍然会等待当时所有同步副本的确认(与最小同步副本的设置无关)。因此,如果您在 4 个副本同步时发布,则除非所有 4 个副本都提交消息(即使最小同步副本数配置为 2),否则您将不会收到确认。仍然可以构建一个与您的问题类似的场景,通过首先使机架 2 中的 2 个分区不同步来突出显示相同的权衡问题,然后在机架 1 中只有 2 个 ISR 时发布,然后关闭机架 1。在这种情况下,这些分区将无法读取或写入。因此,解决此问题的最简单方法是将最小同步副本数增加到 3。另一个容错性较差的修复方法是将复制因子降低到 3。

关于apache-kafka - Kafka 机架 ID 和最小同步副本数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com