开发喵星球

Kafka中当ack为-1时,什么情况下,Leader认为一条消息 Commit 了 ?

在 Kafka 中,acks 参数用于配置生产者的消息确认模式。acks 参数可以设置为以下几个值之一:

acks设置为all-1时,Leader 在认为一条消息被 Commit(已成功写入并在所有 Followers 复制完成)时的情况是:

  1. Leader 成功写入消息: 消息首先被 Leader 成功写入到 Leader 所在的分区。
  2. Leader 向 Followers 复制消息: Leader 将消息复制到所有 ISR(In-Sync Replica)中的 Followers。ISR 是与 Leader 保持同步的副本集合。Leader 在等待 ISR 中的所有 Followers 同步完成。
  3. ISR 中的 Followers 同步完成: 当 ISR 中的所有 Followers 成功复制消息并确认完成后,Leader 认为消息已经被 Commit。

在这种情况下,只有当 ISR 中的所有 Followers 同步完成,Leader 才会认为消息被成功写入到所有的副本,从而进行 Commit。这样的设置可以确保消息不会因为某个 Followers 同步不及时而导致丢失,但会增加一定的延迟,因为需要等待所有的 Followers 完成同步。

Proudly powered by WordPress