我阅读了有关Kafka复制协议的信息。我发现Kafka保持LEO和HW。据我了解,
LEO:副本看到的最新消息的偏移量。
硬件:保证最新消息的偏移量
复制品已经看到。
可以将Kafka生产者设置为这些确认方法。
脚架= 0
脚架= 1
臀部=全部
所以我的问题是,领导者如何根据卡夫卡生产者使用的确认方法来提高硬件。
我了解的是
对于acks = 0,
Leader会在看到新消息时推进硬件。
对于Ack = 1,
当领导者将新消息写入其本地日志时,领导者将推进硬件。
对于acks =全部,
当每个跟随者都发送确认消息时,领导者会提高硬件水平。
这样对吗?谁能澄清一下?
最佳答案
通过进一步的研究,我发现在硬件配置中设置的硬件升级与确认方法之间没有关系。不管设置什么设置,领导者副本都会在前进硬件之前等待所有其他跟随者保留消息。
当acks = 0和acks = 1时,领导者一旦看到一条消息,并将消息持久化到其本地日志中,就会分别向生产者发送ack消息。但是在将LEO设置为HW之前,等待所有其他副本保留该消息。
如果acks = all,而min.insync.replica =复制因子,则领导者需要等待所有副本保留消息,然后再将ack发送给生产者。仅在这种情况下,领导者将硬件与发送给生产者的确认同步进行。
关于apache-kafka - 将数据复制到追随者副本时,Kafka领导副本如何决定提高Highwater Mark(HW),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58056542/