关于消息的“已提交”概念经常令人困惑。我从这里遇到 https://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/
仅在成功复制到以下消息后,才提交该消息 所有同步副本。
我猜这里的“全部”是指所有依赖复制因子的副本。说,如果复制因子为3,则对于使用者来说,使用此消息时,无论“ acks”设置如何,该消息都应出现在所有副本中(不一定是磁盘?)。希望我的理解是正确的。
在这个时间点上,由于我们还没有生活在理想的世界中,一切都会按预期进行:-)-一位经纪人倒闭了,该消息是由生产者发送的-假设此消息已被确认但没有收到由于一名经纪人倒闭,完全“承诺”。
假设该代理不会永远出现(copy.lag.time.max.ms-此值也已失效),我们是否可以假定使用者默认情况下无法收到此消息?
答案 0 :(得分:1)
描述中的重要部分是**in-sync** replicas
。不同步的副本不计算在内。
因此,如果代理关闭,则它不属于任何同步副本,并且不会阻止将记录标记为已提交给日志。这使经纪人可以移动其较高的水印,并将此记录暴露给消费者。
您是对的,不需要将记录刷新到磁盘上。副本只需要获取它,它可能仍在内存中。