Java面试题

题目

kafka 在什么样的场景下消息会丢失?

答案

  1. producer 发送完消息之后,不管发送结果,如果发送失败了,消息也就丢失了。
  2. producer 发送完之后只等待 leader 写入成功就返回了,如果这个时候 leader 宕机,从服务器还没有来的急同步,那么这个时候消息会丢失。
  3. 允许选举 ISR 以外的副本作为 leader ,会导致数据丢失,默认为 false。producer 发送异步消息完,只等待lead 写入成功就返回了,leader crash了,这时 ISR 中没有 follower,leader 从 OSR 中选举,因为 OSR 中本来落后于 Leader 造成消息丢失。
  4. 消费者在消费的时候,如果业务逻辑有异常,将异常 catch 掉,处理完之后进行 commit,那么这个信息就会丢失,没有被正确处理。