Kafka消息丢失和Acks =全部

问题描述 投票:0回答:1

我知道如果Acks = all且min ISR设置为> = 2,则会减少消息丢失的可能性,因为多个代理在内存中有消息。在消息被激活之前,生产者和经纪人1之间的连接同时失败但发送给领导者进行写入的请求会发生什么。写了2条消息,但在确认期间失败了

是否有消息丢失的可能性?

apache-kafka kafka-producer-api
1个回答
1
投票

当生产者向经纪人发送数据时,实际上它只发送给一个 - 领导者。领导经纪人应确认已收到该消息。如果您按照描述配置代理,则领导者将等待来自副本的确认。如果出现问题,领导者不会发送自己的确认。当生产者没有收到领导者的确认时,它将理解该消息尚未发送。为简单起见,我退出了在任何失败消息之前有一些退休。

假如说,

  1. 由于制作人没有收到确认,它将重新发送原始信息。如果连接已恢复,则代理可以看到已收到此消息。然后经纪人向生产者发送ack。
  2. 如果消息已写入领导但副本未能确认,则领导者会将此消息视为未保存并从其存储中删除。
© www.soinside.com 2019 - 2024. All rights reserved.